為了在程序中更合理地組織程序的結構,以便日后的維護。在資源方面,如果同時存在多語言的版本,而且在各個版本中有些圖片不同、有些相同。如何組織好這些圖片資源?我認為有如下的3種方式。
1:把程序中的所有圖片都隨著一個資源DLL發布。
2:把程序中的所有圖片都放在可執行文件的一個相對目錄中,程序運行時到指定的目錄去加載指定名稱的圖片。
3:把在各個版本相同的圖片放在一個公共的DLL中,把彼此不同的圖片放在各自的DLL中。
在這里介紹下第三種方式,也就是如何讓一個exe程序加載多個DLL資源,并在這些DLL中找相應的資源的問題:
m_hResDll = ::LoadLibrary(_T("rc1.dll"));
m_hResDll2 = ::LoadLibrary(_T("rc2.dll"));
m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
AfxSetResourceHandle(m_hResDll);
m_pExeModule2 = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
AfxSetResourceHandle(m_hResDll2);
在這里值得注意的是:要調用
m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
這個語句,如果沒有這個語句,那么這個程序的原有資源模塊將視為釋放。也就不會到原有的資源模塊中去搜索。