簡體   English   中英

從Satellite DLL加載“特殊” MFC控件

[英]Loading a “special” MFC control from a Satellite DLL

我有一個使用附屬DLL的MFC應用程序,以支持多種語言。 我正在使用Visual Studio 2010。

我可以毫無問題地更改應用程序核心部分的語言。 當我嘗試加載包含“特殊” MFC控件( CMFCColorButtonCVSListBox等)的無模式對話框時,事情出了問題。

在以下語句中出現問題:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM