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

Windows Discussion :

[Infobulle] Problème de compilation


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut [Infobulle] Problème de compilation
    Bien le bonjour !

    [edit] Mon nouveau problème est qu'en fait je voudrais qu'au lieu que l'infobulle s'affiche en minimizant, elle s'affiche quand on laisse la souris sur l'icone systray pendant un petit temps...
    Comment faire ?


    Je poste ici pour demander à des pros une réponse à un problème qui m'énerve grandement : Impossible de mettre une infobulle à une icône systray sans proboquer les foudres du compilateur...

    Je m'explique : Même en incluant <shellapi.h> et même en définissant _WIN32_IE à 0x0500 ou 0x0600, le compilo me renvoie les erreurs suivantes :
    NIF_INFO undeclared
    struct NOTIFYICONDATA has no member named 'dwInfoFlags'
    NIIF_INFO undeclared
    struct NOTIFYICONDATA has no member named 'szInfoTitle'
    struct NOTIFYICONDATA has no member named 'szInfo'
    struct NOTIFYICONDATA has no member named 'uTimeout'
    Avec le code suivant :
    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
    #include <shellapi.h>
    #define _WIN32_IE 0x0500
    
    //...
    
    NOTIFYICONDATA TrayIcon;
    
    //...
    
    TrayIcon.cbSize = sizeof( NOTIFYICONDATA );
    TrayIcon.hWnd = hwnd;
    TrayIcon.hIcon = LoadIcon(hInst,"icone");
    TrayIcon.uCallbackMessage = MY_WM_NOTIFYICON;
    TrayIcon.uFlags = NIF_INFO;
    TrayIcon.dwInfoFlags = NIIF_INFO;
    strcpy(TrayIcon.szInfoTitle, "test_infobulle");
    strcpy(TrayIcon.szInfo, "info");
    TrayIcon.uTimeout = 4000; 
    
    //...
    Sauriez vous d'où cela peut provenir ?

    N.B. : Ma version de Shell32.dll est 6.1 et quelques...

    Merci à vous

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Je pencherais plutôt pour un problème de SDK.

    Pour obtenir le dernier 'Platform SDK', regarde ici.

    Ensuite, il faut que _WIN32_IE soit >= 0x0500 dans ton projet.
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Pour obtenir le dernier 'Platform SDK', regarde ici.
    Marrant que ca soit celui de windows server 2003 ... il est ancien pourtant. Que dois je faire ensuite ?Il s'agit juste de télécharger les headers et bibliothèques à jour non ? pas de Visual C++ ? Car je suis sous code::blocks et veux le garder

    Ensuite, il faut que _WIN32_IE soit >= 0x0500 dans ton projet.
    Mais je l'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define _WIN32_IE 0x0500

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par winApien
    Que dois je faire ensuite ?Il s'agit juste de télécharger les headers et bibliothèques à jour non ?
    Exactement.
    Je ne saurais trop te conseiller de faire le nécessaire pour pouvoir revenir facilement en arrière en cas de problème, on ne sait jamais avec M$

    Citation Envoyé par winApien
    Mais je l'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define _WIN32_IE 0x0500
    J'avais vu. Je l'ai reprécisé pour être bien clair sur le fait qu'il faut un SDK à jour et _WIN32_IE mis à la bonne valeur.

    Bon courage.
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Télécharger tous les fichiers un par un est redondant alors j'ai plutôt voulu télécharger le RTM entier (.img) de 409Mo ... Ils exagèrent quand même Bref je n'ai qu'à l'installer c'est ça ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par winApien
    Télécharger tous les fichiers un par un est redondant alors j'ai plutôt voulu télécharger le RTM entier (.img) de 409Mo ... Ils exagèrent quand même Bref je n'ai qu'à l'installer c'est ça ?
    Oui.
    Mais je le répète, prévois un backup de ton SDK actuel, on ne sait jamais...
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    De toute façon il s'installe dans un répertoire à part. Je vais devoir faire les copies à la main, ce qui peut paraître fastidieux. En fait je pense que je vais juste changer shellapi.h Pas grave pour le reste, je suppose qu'il est à jour et je n'en ai pas besoin.

    [edit] nonnon ! Cela ne marche pas ... en remplaçant shellapi.h par shellAPI.H du SDK, je rencontre le même problème... Comment y résoudre ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    es-tu sûr :

    1. d'avoir mis le #define _WIN32_IE 0x0500 au bon endroit ?
    2. que le nouveau .h est (réellement) inclus dans ton projet ?
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Ouioui j'ai définis _WIN32_IE dans mon main (là où on en a besoin) et j'ai toujours le <shellapi.h> inclus. Comme il a été remplacé, normalement cela devrait marcher...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    je reformule mes questions :

    1. le #define _WIN32_IE 0x0500 est-il bien spécifié AVANT toutes les inclusions (directes et indirectes) de shellAPI.h ?
    2. es-tu sûr à 100% que c'est le bon shellAPI.h qui est inclus et pas une autre version (ça peut arriver que le compilateur se 'trompe' de fichier lorsque plusieurs fichiers source/header portent le même nom) ?

    et deux nouvelles :

    3. si tu fais une recherche de NIF_INFO dans le shellAPI.h inclus, que trouves-tu ?
    4. utilises-tu des headers pre-compilés ?
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  11. #11
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Ca yest ça marche ! En fait je pensais que la place du define dans le fichier n'avait pas vraiment d'importance (avant/après les include) mais en fait tu avais raison. Merci encore.

  12. #12
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Ah mince cela ne me fait pas exactement ce que je voudrais ...
    Avec le code courant, c'est en minimizant que l'on obtient le message de l'infobulle. Moi, je voudrais qu'il s'affiche quand la souris reste un petit moment (1sec environ) sur l'icône conçernée...

    Y a t il une manière simple d'y arriver ?

    Merci de votre patience

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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