L'affichage d'une image bitmap sur un “BOUTON” de la classe de fenêtre dans WIN32

Edit: je pense que le message WM_CREATE n'est pas envoyé lors de la création des fenêtres enfant (en l'occurrence mon bouton). En appelant SendMessage pendant WM_CREATE, je suis l'envoi d'un message à une fenêtre qui n'a pas encore été créé. La seule solution est d'appeler la fonction SendMessage() au cours de la WM_SHOWWINDOW message. N'windows envoyer WM_CREATE messages lors de la création?

Pourquoi n'est-ce pas l'image bitmap à afficher sur le bouton? Le bitmap est 180x180 pixels.

J'ai un fichier de ressources:

Bit BITMAP bit.bmp

J'ai ensuite créer la fenêtre principale et un enfant "BOUTON" fenêtre avec:

HWND b, d;

b = CreateWindow(L"a", NULL, WS_OVERLAPPEDWINDOW, 0, 0, 500, 500, 0, 0, 
                  hInstance, 0);

d = CreateWindow(L"BUTTON", NULL, WS_CHILD | WS_VISIBLE | BS_BITMAP, 
                 10, 10, 180, 180, b, 200, hInstance, 0);

Puis, dans ma procédure de windows, j'envoie le "BOUTON" de la fenêtre "BM_SETIMAGE" message avec:

HBITMAP hbit; 

case WM_CREATE:    //It works if I change this to: case WM_SHOWWINDOW 

hbit = LoadBitmap(hInstance, L"Bit");

SendMessage(d, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hbit);

LoadBitmap() renvoie un descripteur valide car Il n'est pas de retourner la valeur NULL, et je suis capable d'afficher l'image dans l'espace client à l'aide de la fonction BitBlt (). Donc, je suis pas d'envoyer le message correctement, ou je ne suis pas en créant le "BOUTON" de la fenêtre correctement.

Ce que je fais mal?

Merci!

OriginalL'auteur tyler | 2009-05-09