8
如何創建資源DLL?該DLL將有一組.png文件。這些.png文件應該從dll中暴露出來。我的應用程序需要引用此dll以獲取.png文件。如何創建資源DLL
如何創建資源DLL?該DLL將有一組.png文件。這些.png文件應該從dll中暴露出來。我的應用程序需要引用此dll以獲取.png文件。如何創建資源DLL
資源DLL與任何其他DLL相同,只是代碼很少或沒有代碼,並且資源相對較多。
微軟沒有對PNG文件的預定義的資源類型,但你可以定義自己的
最起碼的可能的資源DLL是剛剛通過像這樣的鏈接器編譯rc文件。
//save this as resources.rc (supply your own .png file)
#define RT_PNG 99
#define ID_DIGG 1
ID_DIGG RT_PNG "image\\digg.png"
然後,在命令提示執行這些命令。
rc resources.rc
link /dll /noentry /machine:x86 resources.res
那就是它。第一個命令將resources.rc編譯爲resources.res 第二個命令將resources.res轉換爲dll。
您現在應該有一個名爲resources.dll
的dll,它包含一個png文件。 實際上,當然,您會希望將#defines
放在與使用dll的代碼共享的頭文件中。
要在C++中使用dll,你的代碼應該看起來像這樣。
#define RT_PNG MAKEINTRESOURCE(99)
#define ID_DIGG MAKEINTRESOURCE(1)
HMODULE hMod = LoadLibraryEx("resources.dll", NULL, LOAD_LIBRARY_AS_DATAFILE);
if (NULL != hMod)
{
HRSRC hRes = FindResource(hMod, RT_PNG, ID_DIGG);
if (NULL != hRes)
{
HGLOBAL hgbl = LoadResource(hMod, hRes)
void * pPng = LockResource(hgbl);
UINT32 cbPng = SizeofResource(hMod, hRes);
// pPng now points to the contents of your your .png file
// and cbPng is its size in bytes
}
// Don't free the library until you are done with pPng
// FreeLibrary(hMod);
}
哇...謝謝lot..this看起來像使用這種技術的有用的信息:) – 2010-02-08 07:28:38
,我可以改變我的自我創造的IE工具欄按鈕的圖標實時? – karikari 2010-05-19 03:05:13
@ karikari:我不這麼認爲。我不知道這種技術如何幫助實時更改。 DLL中的資源是在鏈接時定義的,它們不是動態的。 – 2010-05-19 17:55:47