資源DLL是怎么回事?
其實也就是建一個包含資源的DLL,加載該DLL并從該DLL讀取相關(guān)資源。API如下:
HINSTANCE LoadLibrary(
? LPCTSTR lpLibFileName?? // address of filename of executable module
);
HGLOBAL LoadResource(
? HMODULE hModule, // resource-module handle
? HRSRC hResInfo?? // resource handle
);
HRSRC FindResource(
? HMODULE hModule, // module handle
? LPCTSTR lpName,? // pointer to resource name
? LPCTSTR lpType?? // pointer to resource type
);
void AfxSetResourceHandle( HINSTANCE hInstResource );]
HINSTANCE AfxGetResourceHandle( );
CString::LoadString(UINT nID) calls:
?? int AFXAPI AfxLoadString(UINT nIDS, LPTSTR lpszBuf, UINT nMaxBuf = 256);
MFC怎么在應(yīng)用程序框架中自動加入資源(mfc的光標對話框等)
MFC的文件保存在如下位置:
X:\Microsoft Visual Studio\VC98\MFC\Include
X:\Microsoft Visual Studio\VC98\MFC\Lib
X:\Microsoft Visual Studio\VC98\MFC\SRC
其中include文件包含了資源的頭文件.h和定義文件.rc
MFC的這些資源怎么被神不知鬼不覺的編譯鏈接到MFC程序中?
見下圖:
? 




程序源代碼文件的物理位置規(guī)劃
雖然不能直接把資源放到靜態(tài)鏈接庫中,但只要稍做變通,就能弄出一個可以到處使用的對話框靜態(tài)鏈接庫了。
但還有個問題是如何避免資源ID的沖突
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS???????????????????? 1
#define _APS_NEXT_RESOURCE_VALUE??????? 227
#define _APS_NEXT_COMMAND_VALUE???????? 32831
#define _APS_NEXT_CONTROL_VALUE???????? 1274
#define _APS_NEXT_SYMED_VALUE?????????? 104
#endif
#endif