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

Visual C++ Discussion :

Probleme classe WC_LINK


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    528
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 528
    Par défaut Probleme classe WC_LINK
    Bonjour,

    J'essaie de mettre en place un lien dans une boite de dialogue avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
            iccex.dwICC = ICC_LINK_CLASS;
            InitCommonControlsEx(&iccex);
            hwndLink = CreateWindowExW(0, WC_LINK, L"<A HREF=\"http://www.google.fr\">Visitez le site de  ...</a>",
                                       WS_VISIBLE | WS_CHILD | WS_TABSTOP,
                                       120, 100, 150, 14,
                                       hDlg, NULL, hInst, NULL);
           return TRUE ;
    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
    case WM_NOTIFY:
          switch (((LPNMHDR)lParam)->code)
          {
            case NM_CLICK:          
            case NM_RETURN:
            {
                PNMLINK pNMLink = (PNMLINK)lParam;
                LITEM   item    = pNMLink->item;
                MessageBox(hDlg, item.szUrl, "Test WC_LINK", MB_OK);
                if ((((LPNMHDR)lParam)->hwndFrom == hwndLink) && (item.iLink == 0))  {
                    ShellExecute(NULL, "open", item.szUrl, NULL, NULL, SW_SHOW);
                }
                break;
            }
          }
          break;
    Le problème c'est qu'après un clic sur le lien je ne récupère que le "h" de l'url !
    Quand je code avec "CreateWindowEx" ça ne fonctionne pas (?)

    d'après MSDN
    Version 6 of ComCtl32.dll supports Unicode only. Therefore, you cannot create ANSI versions of SysLink controls—only Unicode.
    Y-aurait-il un facon de faire sans UNICODE ?


    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 468
    Par défaut
    Arrêtez de ramer à contre courant.

    Utilisez de l'UNICODE partout plutôt que de rester avec du code qui mélange allègrement des chaînes UNICODE et des primitives ANSI et UNICODE.

    "L" est une macro qui permet de dire au compilateur que la chaîne qui suit est UNICODE et non ASCII.
    "T" est une macro qui permet de dire au compilateur que la chaîne qui suit est UNICODE ou ASCII en fonction du paramétrage du projet.

    Manière bourrin (tout UNICODE) :
    - Configurez votre projet pour qu'il soit UNICODE
    - Préfixez toutes les chaînes de caractères type
    "Test WC_LINK"
    ou
    "open"
    , qui semblent se balader en toute liberté au milieu de votre code, par L, comme L"Test WC_LINK".

    Manière pusillanime (rester en ASCII comme il y a 20 ans, prudent quand la masse de code est importantes et de très mauvaises qualités)
    - utiliser CreateWindowEx et non CreateWindowExW, en supprimant le L devant la chaine
    "<A HREF=\"http://www.google.fr\">Visitez le site de ...</a>"
    Manière de sioux (je refile le bébé au suivant dans la chaîne de responsabilité)
    (que le choix entre ASCII et UNICODE ce fasse sur simple configuration du projet)
    - utiliser CreateWindowEx et non CreateWindowExW, en remplaçant le L devant la chaine
    "<A HREF=\"http://www.google.fr\">Visitez le site de ...</a>"
    par un T
    - Préfixez toutes les chaînes de caractères type
    "Test WC_LINK"
    ou
    "open"
    , qui semblent se balader en toute liberté au milieu de votre code, par T, comme T"Test WC_LINK".

Discussions similaires

  1. hibernate problem (classe not mapped)
    Par oughlad dans le forum Hibernate
    Réponses: 11
    Dernier message: 25/06/2007, 19h57
  2. [probleme] classe de base non définie
    Par aswat dans le forum C++
    Réponses: 14
    Dernier message: 23/02/2007, 20h42
  3. probleme classe apres ajout de variable
    Par croc14 dans le forum Visual C++
    Réponses: 6
    Dernier message: 11/08/2006, 21h03
  4. probleme classe non trouvee
    Par foulla002 dans le forum Langage
    Réponses: 19
    Dernier message: 26/07/2006, 14h46
  5. probleme classe et chaines de caractères
    Par oilv dans le forum C++
    Réponses: 12
    Dernier message: 18/02/2006, 10h01

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