為了在程序中更合理地組織程序的結(jié)構(gòu),以便日后的維護(hù)。在資源方面,如果同時(shí)存在多語(yǔ)言的版本,而且在各個(gè)版本中有些圖片不同、有些相同。如何組織好這些圖片資源?我認(rèn)為有如下的3種方式。
1:把程序中的所有圖片都隨著一個(gè)資源DLL發(fā)布。
2:把程序中的所有圖片都放在可執(zhí)行文件的一個(gè)相對(duì)目錄中,程序運(yùn)行時(shí)到指定的目錄去加載指定名稱的圖片。
3:把在各個(gè)版本相同的圖片放在一個(gè)公共的DLL中,把彼此不同的圖片放在各自的DLL中。
在這里介紹下第三種方式,也就是如何讓一個(gè)exe程序加載多個(gè)DLL資源,并在這些DLL中找相應(yīng)的資源的問(wèn)題:
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);
在這里值得注意的是:要調(diào)用
m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
這個(gè)語(yǔ)句,如果沒(méi)有這個(gè)語(yǔ)句,那么這個(gè)程序的原有資源模塊將視為釋放。也就不會(huì)到原有的資源模塊中去搜索。