![](/img/trans.png)
[英]Is it better to create satellite dll's before or after programming a MFC application
[英]Loading a “special” MFC control from a Satellite DLL
我有一个使用附属DLL的MFC应用程序,以支持多种语言。 我正在使用Visual Studio 2010。
我可以毫无问题地更改应用程序核心部分的语言。 当我尝试加载包含“特殊” MFC控件( CMFCColorButton
, CVSListBox
等)的无模式对话框时,事情出了问题。
在以下语句中出现问题:
m_dlg->Create(SOME_IID, this); // returns false
如何从卫星DLL加载“特殊” MFC控件?
您必须先注册他们的课程,然后才能到达OnCreate()
。 对于自定义控件,通常是在构造函数中完成的:
CMyClass::CMyClass()
{
// Pseudo code
m_mfcColorButton.RegisterWindowClass(AfxGetResourceHandle());
}
对于MFC控件,我敢打赌需要调用一个初始化函数。
我有同样的问题:如果我使用本地化的资源dll,我的CDialog-派生类在DoModal中将失败。 它在资源模板上包含CMFCColorButton。
我的解决方案是调用资源dll AfxRegisterMFCCtrlClasses();
class CMyApp: public CWinApp
{
BOOL InitInstance()
{
AfxRegisterMFCCtrlClasses();
return CWinApp::InitInstance();
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.