我使用此代碼來獲得鼠標在屏幕上的位置,它的工作。我也得到光標的寬度和高度。我需要的是當我調用函數GetIconInfo時的光標圖標。 ii ii我有ii.hbmColor和ii.hbmMask。 hbmColor的值是0x0,hbmMask是0x2f0517f1。我能從這兩個指針中提取鼠標光標嗎?如何獲取鼠標光標圖標VS C++
CURSORINFO cursorInfo = { 0 };
cursorInfo.cbSize = sizeof(cursorInfo);
HDC memoryDC = (HDC)malloc(100);
memset(memoryDC, 0x00, 100);
if (::GetCursorInfo(&cursorInfo)) {
ICONINFO ii = {0};
GetIconInfo(cursorInfo.hCursor, &ii);
BITMAP bm;
GetObject(ii.hbmMask,sizeof(BITMAP),&bm);
DeleteObject(ii.hbmColor);
DeleteObject(ii.hbmMask);
::DrawIcon(memoryDC, cursorInfo.ptScreenPos.x - ii.xHotspot, cursorInfo.ptScreenPos.y - ii.yHotspot, cursorInfo.hCursor);
for(int i = 0; i < bm.bmWidth; i++){
for(int j = 0; j < bm.bmHeight; j++){
COLORREF c = GetPixel(memoryDC, i, j);
printf("%x", c);
}
}
}
哇,你不能只是隨機存儲器作爲一個HDC。你需要'CreateDC' /'CreateCompatibleDC' /'GetDC'。 Windows GDI很難習慣,但最終它是有意義的。 確保您一次執行一個錯誤檢查並處理問題,並保持MSDN密切關注。 – tenfour 2010-08-18 16:02:57
@tenfour:當我看到那個時,我的眼睛突然出現。高興地說,我戴眼鏡... – peterchen 2010-08-18 17:48:25
有點幫助嗎?一些例子? – Nikola 2010-08-18 18:18:25