HICON ->WNDPROC
-
Hallo !
Wie kann ich ein Icon was ich per DrawIcon() zeichnen lassen als Button zur Verfügung stellen ? Kann man da die SetWindowLongPtr() Funktion nutzen, da wird ja HWND verlangt.
Danke.
-
SetWindowLongPtr? Was hast Du denn damit vor? Aber zur Sache: Du mußt innerhalb Deiner Fensterprozedur die Click-Messages verarbeiten. Wenn der Cursor dabei über Deinem Icon liegt, kannst Du entsprechend verfahren.
Gibt es eigentlich einen besonderen Grund, daß Du das Icon selbst zeichnest? Kannst Du nicht einfach ein Static-Control nehmen? Wenn Du das Style SS_NOTIFY mit angibst, bekommst Du wie von einem Button WM_COMMANDs gesendet.
-
oder ein OwnerDraw-Button
-
Also ich habe das Icon aus der Shell32.dll geladen und will es sozusagen als Button haben möchte aber auch das wenn ich drüber fahre "IDC_HAND" erscheint.
-
cpp_guy schrieb:
Also ich habe das Icon aus der Shell32.dll geladen und will es sozusagen als Button haben möchte aber auch das wenn ich drüber fahre "IDC_HAND" erscheint.
Ein Button kann auch ein Icon darstellen, das ist kein Problem. Dazu gibst Du bei den Flags lediglich BS_ICON mit an. Das geladene Icon wird über BM_SETIMAGE zugewiesen. Und wenn Du den 3D-Look inklusive Rahmen weghaben willst, nimmst Du ein Static-Control mit SS_ICON und SS_NOTIFY (Zuweisung durch STM_SETIMAGE).
Du kannst natürlich auch den harten Weg gehen, und alles selbst zeichnen (OWNERDRAW). Das ist aber nicht nötig, IMO.
Im Parent-Window des Controls fängst Du zusätzlich WM_SETCURSOR ab. Wenn dabei wParam == HWNDdesCtrls ist, setzt Du mit SetCursor Deine Hand und gibst TRUE zurück.