Загрузка & quot; специального & quot; Управление MFC из Спутниковой DLL

У меня есть приложение MFC, использующее спутниковые библиотеки DLL для поддержки многоязычия. Я использую Visual Studio 2010.

Я могу без проблем сменить язык основной части приложения. Ситуация идет не так, когда я пытаюсь загрузить немодальный диалог, содержащий «специальный» элемент управления MFC (CMFCColorButton, CVSListBox, так далее).

Проблема возникает в следующем утверждении:

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

Как мне перейти к загрузке «специального» элемента управления MFC из спутниковой DLL?

0

Решение

Вы должны зарегистрировать их классы, прежде чем вы достигнете OnCreate(), Для пользовательских элементов управления это обычно делается в конструкторе:

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

Держу пари, что для элементов управления MFC есть функция инициализации, которую нужно вызвать.

1

Другие решения

У меня была та же проблема: мой производный от CDialog класс потерпел неудачу в DoModal, если я использую локализованный ресурс dll. Содержит CMFCColorButton в шаблоне ресурса.

Моим решением было позвонить в ресурс dll AfxRegisterMFCCtrlClasses ();

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

По вопросам рекламы [email protected]