![](/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.