把对话框封装到DLL后,使用字符串资源的时候,怎么是从主程序中加载的,而不是加载DLL中定义的资源?比如,在DLL中定义了一个字符串资源IDS_HELPMESSAGE 1 "help message",在主程序中也定义了一个字符串资源,IDS_WARNINGMSG 1 "Warning message!",对话框中使用字符串IDS_HELPMESSAGE时,实际上却引用的是IDS_WARNINGMSG这个字符串?如何解决?

解决方案 »

  1.   

    需要指定资源来自哪个模块,FindResource函数中带有一个HINSTANCE参数,如果应用程序需要来自于DLL的资源,就将此参数指定为DLL的模块句柄。如果需要EXE文件中包含的资源,就指定EXE的模块句柄。 要得到EXE模块句柄,调用带有Null参数GetModuleHandle,需要DLL模块句柄,就调用以DLL文件名为参数的GetModuleHandle
      

  2.   

    在DLL中使用AfxMessageBox是,怎么制定使用的资源来自哪儿?