2012-09-07 22 views
0

我有一個MFC應用程序使用衛星DLL來支持多語言。我正在使用Visual Studio 2010.從衛星DLL加載「特殊」MFC控件

我可以在沒有任何問題的情況下更改應用程序核心部分的語言。當我嘗試加載包含「特殊」MFC控件(CMFCColorButton,CVSListBox等)的無模式對話框時,事情就出錯了。

的問題出現在下面的語句:

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

我應該如何着手加載從衛星DLL「特殊」 MFC控制?

回答

1

在到達OnCreate()之前,您必須先註冊他們的課程。對於自定義控件,這通常是在構造函數中完成:

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

對於MFC的控制,我敢打賭,有需要調用初始化函數。

0

我有同樣的問題:如果我使用本地化的資源DLL,我的CDialog派生類在DoModal中失敗。它包含資源模板上的CMFCColorButton。

我的解決方案是打電話給資源dll AfxRegisterMFCCtrlClasses();

class CMyApp: public CWinApp 
{ 
    BOOL InitInstance() 
    { 
     AfxRegisterMFCCtrlClasses(); 
     return CWinApp::InitInstance(); 
    } 
};