我正嘗試從Visual C++(Windows)中的資源文件(.rc)加載自定義光標。該資源正在正確編譯到我的主要.exe,因爲我可以成功加載其他資源類型(即自定義資源類型,如「PNG」)。如何從C++資源文件加載遊標組?
在我的.rc文件我有:
#define IDI_CURSOR1 1000
IDI_CURSOR1 CURSOR "Resources\\Cursors\\MainCursor.cur"
在我.cpp文件我有:
HCURSOR mainCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDI_CURSOR1));
但LoadCursor()
總是返回NULL
。調用HRESULT_FROM_WIN32(GetLastError())
將返回「在資源文件中找不到指定的資源類型」。現在
,我嘗試使用加載它:
FindResource(NULL, MAKEINTRESOURCE(IDI_CURSOR1), L"CURSOR");
,但我得到了同樣的錯誤。
挖掘周圍後,我找到了一種方法來打印我的模塊中的所有資源,我發現我的光標。它正在加載,但類型爲「12」,根據此:http://www.csn.ul.ie/~caolan/pub/winresdump/winresdump/doc/resfmt.txt是RT_GROUP_CURSOR
。那裏還有一個RT_CURSOR
,它是類型「1」。作爲確認,我試圖再次找到資源:
FindResource(NULL, MAKEINTRESOURCE(IDI_CURSOR1), "#12");
並確實發現它沒有錯誤。
好吧,所以光標正在加載,但LoadCursor()
似乎並沒有尋找類型「12」。它尋找什麼類型,我如何得到CURSOR
映射到正確的類型?
謝謝。我也嘗試過。沒有運氣。 – Yelmond
劃痕,這是腦死亡的另一種情況。我正在使用模塊句柄,而不是實例句柄。你是對的。它現在有效。 – Yelmond