J’essaie de créer une boîte de dialog avec une icône en haut, comme ceci.
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
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 !