Hallo zusammen!
Ich arbeite momentan an einem kleinen Handler für Windowsfenster ähnlich der MFC um wieder die ganzen Windowsfunktionen zu repetieren und aufzufrischen. Dabei habe ich jetzt auch ein paar neue Sachen gefunden die ich gerne umsetzen würde. Dazu gehört zum Beispiel auch das Laden von Icons aus den Resourcen.
Mit Hilfe der MSDN bin ich auf folgende Zwischenlösung gekommen:
Das funktioniert leider so nicht wirklich, CopyIcon liefert einen 0-Zeiger zurück mit dem Errorcode INVALID_CURSOR_HANDLE.
Ausserdem versuche ich diese Buttons aus dem Windowsframework gerne in meine Applikation einbinden, also nicht diese "veralteten" Buttons sondern die bekannten (Screenshot folgt morgen
). Hat jemand von euch eine Ahnung, wie man das vollbringen kann?
Gruss
Cromon
Ich arbeite momentan an einem kleinen Handler für Windowsfenster ähnlich der MFC um wieder die ganzen Windowsfunktionen zu repetieren und aufzufrischen. Dabei habe ich jetzt auch ein paar neue Sachen gefunden die ich gerne umsetzen würde. Dazu gehört zum Beispiel auch das Laden von Icons aus den Resourcen.
Mit Hilfe der MSDN bin ich auf folgende Zwischenlösung gekommen:
Code:
#pragma pack(push)
#pragma pack(2)
typedef struct
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
} GRPICONDIRENTRY, *LPGRPICONDIRENTRY;
typedef struct
{
WORD idReserved;
WORD idType;
WORD idCount;
GRPICONDIRENTRY idEntries[1];
} GRPICONDIR, *LPGRPICONDIR;
#pragma pack(pop)
void CWindow::SetIcon(LPSTR szIcon, bool _small)
{
HRSRC rsc = FindResource(GetModuleHandle(0), szIcon, RT_GROUP_ICON);
HGLOBAL hRes = LoadResource(GetModuleHandle(0), rsc);
GRPICONDIR* grpdir = (GRPICONDIR*)LockResource(hRes);
rsc = FindResource(GetModuleHandle(0), MAKEINTRESOURCE(grpdir->idEntries[0].nID), RT_ICON);
hRes = LoadResource(GetModuleHandle(0), rsc);
if(!_small)
{
m_hIcon = CopyIcon((HICON)hRes);
}
else
m_hSIcon = CopyIcon((HICON)hRes);
FreeResource(hRes);
}
Das funktioniert leider so nicht wirklich, CopyIcon liefert einen 0-Zeiger zurück mit dem Errorcode INVALID_CURSOR_HANDLE.
Ausserdem versuche ich diese Buttons aus dem Windowsframework gerne in meine Applikation einbinden, also nicht diese "veralteten" Buttons sondern die bekannten (Screenshot folgt morgen

Gruss
Cromon