0

多言語対応をサポートするために、サテライト DLL を使用する MFC アプリケーションがあります。Visual Studio 2010 を使用しています。

アプリケーションのコア部分の言語を問題なく変更できます。CMFCColorButton「特別な」MFC コントロール ( 、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 に答える