我做了一个DLL个其他程序用,dll内有一些图标,运行过程中,图标有时候显示的不是我定义的图标,而是主程序(也许是其他dll)定义的图标, 我怎样保证图标不乱用呢?

解决方案 »

  1.   

    AfxSetResourceHandle和AfxGetResourceHandle可以帮助你,具体用法可以查MSDN
      

  2.   

    对于象对话框、位图、图标这些标准资源,如果采用MFC方式,可以使AfxSetResourceHandle设置资源DLL的句柄,如: 
         hDll=LoadLibrary("ResourceDLL.dll"); 
         if(hDll==NULL) 
         AfxMessageBox("Can't Load the library"); 
         else AfxMessageBox("success"); 
         AfxSetResourceHandle(hDLL); 
         ... 
        } 
    这样以后你再使用CDialog创建对话框时,对话框将来自你的资源DLL,而不是.exe文件。如果你在程序中还要使用.exe中的资源,你需要在 AfxSetResourceHandle之前,先使用 AfxGetResourceHandle保存当前的资源文件句柄。 2,SDK方式。你在调用CreateDialog或DialogBox时,它们的第一个参数都是HINSTANCE,就是你LoadLibrary获得的句柄。你不需要使用FindResource,CreateDialog或DialogBox会自动查找资源并加载。 
      

  3.   

    情况不是这样的,  我做一个DLL,主程序(已经编好了不可更改)调用这个DLL,我的资源定义在这个DLL里, 我做了一个自定义按钮,用AfxGetApp()->LoadIcon()加载图标,  就是说我没有机会调用  LoadLibrary()