IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

conversion CString --> LPCWSTR


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut conversion CString --> LPCWSTR
    bonjour a tous!

    j ai un petit pb de conversion:

    1) j'ai du texte (chemin d'une vidéo) qui s'affiche dans une edit box. j'e lui ai donc attaché une variable m_video1 de type CString.

    2) je veux lancer cette vidéo grace à un Renderfile (IGraphBuilder) mais celui ci me demande une variable de type LPCWSTR.

    Ma question est donc: comment faire une conversion d'un type a l'autre?
    sachant que je debute en VC++.

    merci d'avance
    lyim

  2. #2
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 68
    Points : 49
    Points
    49
    Par défaut
    je crois ke <(LPCWSTR)CStringVariable> marche . j'ai utilisé LPCTSTR
    dsle context Connect((LPCTSTR)AdressIp) et c'est clean !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    salut, je l'ai intégré dans mon code de cette manière:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    void CinterfacemasterDlg::OnBnClickedGo()
    {
    	UpdateData(TRUE);
     
    	IGraphBuilder *pGraph = NULL;
                    IMediaControl *pControl = NULL;
                    IMediaEvent   *pEvent = NULL;
     
     
        // Initialize the COM library.
        HRESULT hr = CoInitialize(NULL);
        if (FAILED(hr))
        {
            printf("ERROR - Could not initialize COM library");
            return;
        }
     
        // Create the filter graph manager and query for interfaces.
        hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
                            IID_IGraphBuilder, (void **)&pGraph);
        if (FAILED(hr))
        {
            printf("ERROR - Could not create the Filter Graph Manager.");
            return;
        }
     
        hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
        hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
     
        // Build the graph. IMPORTANT: Change this string to a file on your system.
        hr = pGraph->RenderFile(L"(LPCWSTR)m_video1", NULL);
       if (SUCCEEDED(hr))
        {
            // Run the graph.
            hr = pControl->Run();
            if (SUCCEEDED(hr))
            {
                // Wait for completion.
                long evCode;
                pEvent->WaitForCompletion(INFINITE, &evCode);
     
                // Note: Do not use INFINITE in a real application, because it
                // can block indefinitely.
            }
        }
        pControl->Release();
        pEvent->Release();
        pGraph->Release();
        CoUninitialize(); 
     
     
    	UpdateData(FALSE);
     
    }

    m_video1 etant la variable attachée a l edit box.

    Cependant ca ne marche toujours pas... il n'y a pas d'erreur au moment du debugage non plus.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 68
    Points : 49
    Points
    49
    Par défaut
    hr = pGraph->RenderFile(L"(LPCWSTR)m_video1", NULL);
    Je sais pas a koi sert L"<pointeur>" ???
    si c t un LPCTSTR j'aurais ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RenderFile((LPCTSTR)m_video1,NULL);
    Essaye ça

  5. #5
    Membre actif
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    salut,

    j'utilise la fonction _wtol()

    exemple (de tête):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CString strChaine;
    TCHAR tchChaine[255];
     
    _wtol(strChaine, tchChaine, 10);
    tu dois pouvoir faire ce que tu veux avec le TCHAR obtenu et un cast.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 754
    Points : 10 719
    Points
    10 719
    Billets dans le blog
    3
    Par défaut
    Utilise une CStringW.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    salut!

    alors: drinkmilk, ta fonction ne marche pas. ca dit que _wtol ne prend pas 3 arguments. Donc a la place, j ai mi ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long _wtol(const wchar_t *m_video1);
    mais je dois quand meme convertir en LPCWSTR apres...

    Aurelien.Regat-Barrel: comment dois je utiliser la CStringW???
    merci
    Lyim

  8. #8
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Points : 138
    Points
    138
    Par défaut
    Bonjour,

    Regarde dans les fonction s de conversion ATL, tu devrai trouver ton bonheur, il y a une macro qui converti un LPSTR en LPWSTR.


    Le fichier en question s'appelle atlconv.h

  9. #9
    Membre actif
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    Pour la fonction _wtol:

    Ok c'est dans l'autre sens que ça prend trois arguments (_ltow)

    Donc dans la fonction qui te demande un LPCWST tu met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (LPCTSTR) _wtol(m_video1)
    ou (pour que ce soit un peu plus clair:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long lVideo1 = _wtol(m_video1)
    puis dans ta fonction:
    j'espère que ça va marcher

Discussions similaires

  1. Conversion CString -> wstring
    Par loupdeau dans le forum MFC
    Réponses: 5
    Dernier message: 08/11/2008, 23h15
  2. conversion CString en long
    Par ep31 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 12h19
  3. Conversion CString en const char*
    Par LRobi dans le forum MFC
    Réponses: 8
    Dernier message: 19/07/2005, 13h12
  4. Conversion CString -> CTime/Systemtime
    Par Manson dans le forum MFC
    Réponses: 2
    Dernier message: 22/06/2005, 12h27
  5. conversion CString
    Par latisane dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo