Tout petit problème avec DrawIcon

MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007 - 28 juil. 2006 à 20:22
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 29 juil. 2006 à 04:40
Bon bas voilà j'ai un tout petit problème avec DrawIcon. Quand j'execute mon programme ben il y a rien qui s'affiche ! Je programme avec Visual C++ 6.0 puis la compilation ne m'affiche aucune erreur.
AIDEZ moi ! S'il vous plait ! MERCI

22 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 21:28
Salut,
DrawIcon() doit être utilisées pendant la traitement de WM_PAINT. Elle utilise le HDC fourni par BeginPaint(). Il faut s'assurer aussi que le handle de l'icone donné en dernier paramètre soit valide.
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
28 juil. 2006 à 21:53
Toujour rien ! Sa commence vraiment a me casser les C******* !

HICON        hIcon1;
HINSTANCE    hInstance;

    HDC                hDC;
    PAINTSTRUCT        ps;
    switch(msg)
    {
    case WM_CREATE:
        hIcon1 = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MBK));
        return 0;

    case WM_PAINT:
        hDC = BeginPaint(hWindow, &ps);
        DrawIcon(hDC, 0, 0, hIcon1);
        EndPaint(hWindow, &ps);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWindow, msg, wParam, lParam);
}
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 22:02
Tu dois déclarer hIcon1 en static:
static HICON hIcon1;
Il parait aussi que hInstance n'est pas initialisé. Tu peux simplement faire:
hIcon1 = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_MBK));
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
28 juil. 2006 à 22:09
Bon ben chui modi ! Sa marche toujours pas. Il parait que avec DrawIconEx sa marche mieu VRAI ou FAUX
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 22:25
DrawIcon() fonctionne parfaitement si tu veux juste afficher une icone sur ta fenêtre. DrawIconEx() permet, en plus, de faire d'autres opérations comme spécifier les dimensions de l'icone ou l'inverser etc.
Tu dois vérifier que ton icone est bien chargé en testant la valeur de retour de LoadIcon():

hIcon1 = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_MBK));
if!hIcon1) MessageBox(0,"Icone non chargée.",0,0);
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 22:25
if(!hIcon1) MessageBox(0,"Icone non chargée.",0,0);
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
28 juil. 2006 à 22:35
Effectivement mon icone n'est pas chargé mais comment résoudre se problème ???
Mon icone est bien dans les ressources il y a aussi #define IDI_MBK   1000. je comprend pas pourqoi elle se charge pas ! Et pourtant mon programme a une icone:
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MBK));
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 23:07
Ta WndProc doit ressembler à ça:

LRESULT CALLBACK WndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HICON        hIcon1;
    HDC                hDC;
    PAINTSTRUCT        ps;
    switch(msg)
    {
    case WM_CREATE:
        hIcon1 = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_MBK));
        return 0;

    case WM_PAINT:
        hDC = BeginPaint(hWindow, &ps);
        DrawIcon(hDC, 0, 0, hIcon1);
        EndPaint(hWindow, &ps);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWindow, msg, wParam, lParam);
}

Je viens de tester et ça marche sans problème.
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
28 juil. 2006 à 23:12
LOL ! : )
SA MARCHE PAS CHEZ MOI !!!!
LA ya plus de solution !
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
28 juil. 2006 à 23:17
Jte remerci quand même !
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 23:17
Si il y'a une solution.
Je t'envoie mon émail par message privé. Envoie moi ton petit projet au format zip, je trouverai certainement ce qui cloche.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2006 à 23:19
C'est intriguant ton problème. :)
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
29 juil. 2006 à 00:21
Ta vu ! Mais je croix que je sais d'ou vien le problème... Je me rappel que j'avais le même problème mais c'était pour jouer un son Wav a partir d'une ressource. Depuis pour jouer un son Wav je le jou a partir d'un fichier.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
29 juil. 2006 à 00:29
Je viens de trouver l'erreur. c'est très simple:
Au tout dbut du  fichier ResourceRC.rc tu remplaces #include "resource.h" par #include "ressource.h".
Voilà, et ça marche.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
29 juil. 2006 à 00:30
début du fichier ResourceRC.rc
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
29 juil. 2006 à 00:32
Mé nan chui un de c'est naze !

Bah ! MERCI beaucoup !
Jvé teste !  allé Ciao !
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
29 juil. 2006 à 00:39
Ce sont des choses qui peuvent arriver à tout le monde. Surtout à cause de la fatigue.

Pour lire directement un son wav à partir d'une ressource on fait:
PlaySound(MAKEINTRESOURCE (IDR_WAVE1), 0, SND_RESOURCE | SND_NODEFAULT);
0
MorbhAck Messages postés 127 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 août 2007
29 juil. 2006 à 00:52
oué ! je m'en rappel ! Mais le probléme je crois bien que c'était le #include : ) !
Je te remerci encore un fois paske tu vien de réglé 2 problème ! : )
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
29 juil. 2006 à 02:21
Y'a aussi un problème :)
Apparemment c'est pas une Dialogue, donc si tu mets le style visible lors de l'appel à CreateWindow, y'a un souci, parce qu'il recoit un message WM_PAINT avant WM_CREATE
Suffit de tester avec une messageBox pour confirmer ou dénier ce que je dis...
Donc faut faire attention aussi à ça même si ici, t'as pas eu ce problème ;)

ULARGE_INTEGERJokyQi=QI("Joky"
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
29 juil. 2006 à 03:40
Joky >> J'ai vu le projet complet. Il s'agit de la fenêtre principale du programme. CreateWindow() est suivie de ShowWindow(). C'est la règle générale. Donc aucun souci de ce côté.
0
Rejoignez-nous