Ich möchte den Systemcursor auf Windows-Betriebssystemen so genau wie möglich als Bitmap erfassen. Die dafür vorgesehene API ist meines Wissens GetCursorInfo, DrawIconEx.
Die einfache Handlungskette lautet:
- Cursor abrufen mit GetCursorInfo
- Malen Sie den Cursor in einem Speicher-DC mit DrawIconEx.
So sieht der Code in etwa aus.
CURSORINFO CursorInfo;
(VOID)memset(&CursorInfo, 0, sizeof(CursorInfo));
CursorInfo.cbSize = sizeof(CursorInfo);
if (GetCursorInfo(&CursorInfo) &&
CursorInfo.hCursor)
{
// ... create here the memory DC, memory bitmap
boError |= !DrawIconEx(hCursorDC, // device context
0, // xLeft
0, // yTop
CursorInfo.hCursor, // cursor handle
0, // width, use system default
0, // height, use system default
0, // step of animated cursor !!!!!!!!!
NULL, // flicker free brush, don't use it now
DI_MASK | DI_DEFAULTSIZE); // flags
// ... do whatever we want with the cursor in our memory DC
}
Weiß jemand, wie ich herausfinden kann, welcher Schritt des animierten Cursors gezeichnet wird (ich benötige den Wert, der dann an den istepIfAniCur-Parameter von DrawIconEx übergeben werden kann...)? Der obige Code rendert derzeit offensichtlich immer nur den ersten Schritt eines animierten Cursors.
Ich vermute, dass dies nicht einfach zu bewerkstelligen ist, aber es lohnt sich trotzdem, danach zu fragen.