Utilisation d’une icône dans une fenêtre de boîte de dialog API C ++ Win32

J’essaie de créer une boîte de dialog avec une icône en haut, comme ceci.

dialogue d'icône

J’utilise un fichier de ressources pour charger l’icône de cette manière.

IDI_ICON1 ICON ".\\usb.ico" 

J’ai essayé de définir l’icône de la fenêtre en utilisant le code suivant.

 SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)IDI_ICON1); SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)IDI_ICON1); 

hwnd est la fenêtre. En conséquence, je reçois un cercle bleu qui ressemble à l’icône de chargement pour Windows 7 et Vista. Je suis presque certain que l’icône est correctement chargée car lorsque je regarde la barre des tâches, mon programme a cette icône représentant mon programme. Si vous avez besoin du code que j’utilise pour la fenêtre de dialog elle-même, faites-le-moi savoir. J’utilise le compilateur mingw32 C ++ sous Windows 7. Merci!

Utilisez LoadIcon et transmettez un handle d’icône à WM_SETICON.

 HICON hicon = LoadImageW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(IDI_ICONMAIN), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE); SendMessageW(hwnd, WM_SETICON, ICON_BIG, hicon); 

J’ai dû LoadImageW() valeur de retour de LoadImageW() en HICON , pour éviter l’erreur:

“une valeur de type” HANDLE “ne peut pas être affectée à une entité de type” HICON “….”

cela a fonctionné pour moi:

 .... //hDlg is the handle to my dialog window case WM_INITDIALOG: { HICON hIcon; hIcon = (HICON)LoadImageW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, GetSystemMesortingcs(SM_CXSMICON), GetSystemMesortingcs(SM_CYSMICON), 0); if (hIcon) { SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon); } } break; 

Et voici le résultat

Icône de dialogue win32

FYI: l’icône utilisée a été téléchargée à partir de:

http://www.iconsdb.com/orange-icons/stackoverflow-6-icon.html

J’espère que cela pourra aider !