0

我有一个使用卫星 DLL 的 MFC 应用程序以支持多语言。我正在使用 Visual Studio 2010。

我能够毫无问题地更改应用程序核心部分的语言。当我尝试加载包含“特殊”MFC 控件(、、等)的无模式对话框时,出现CMFCColorButton问题CVSListBox

问题出现在以下语句中:

m_dlg->Create(SOME_IID, this); // returns false

我应该如何从附属 DLL 加载“特殊”MFC 控件?

4

2 回答 2

1

您必须在到达之前注册他们的课程OnCreate()。对于自定义控件,这通常在构造函数中完成:

CMyClass::CMyClass()
{
    // Pseudo code
    m_mfcColorButton.RegisterWindowClass(AfxGetResourceHandle());
}

对于 MFC 控件,我敢打赌有一个需要调用的初始化函数。

于 2012-09-24T18:58:07.153 回答
0

我遇到了同样的问题:如果我使用本地化资源 dll,我的 CDialog - 派生类在 DoModal 中失败。它包含资源模板上的 CMFCColorButton。

我的解决方案是调用资源 dll AfxRegisterMFCCtrlClasses();

class CMyApp: public CWinApp
{
    BOOL InitInstance()
    {
        AfxRegisterMFCCtrlClasses();
        return CWinApp::InitInstance();
    }
};
于 2016-06-22T10:41:10.007 回答