Вот еще одно предложение.В вашей переменной приложения добавьте переменную AFX_MODULE_STATE * с именем m_pModuleState и инициализируйте ее в конце функции InitInstance,
m_pModuleState = AfxGetModuleState();
Измените функцию обратного вызова, чтобы задать состояние приложения перед открытием диалога, а затем установитевернитесь в исходное состояние перед выходом из функции
void callback()
{
//Get the original state
AFX_MODULE_STATE* pOriginalState = AfxGetModuleState();
//Set the mfc state
AfxSetModuleState(((CTheApp1App*)&theApp)->m_pModuleState);
//Do stuff here
CDialog1 dlg;
dlg.DoModal();
//Set the mfc state back to its original state
AfxSetModuleState(pOriginalState);
}
и оставьте плагин таким, каким он был в вашем примере
extern "C" void GS_EXTERNAL_ENTRY plugin_main(TFunc func)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
func();
CDialog1 dlg;
dlg.DoModal();
}
Таким образом, вы вызовете AFX_MANAGE_STATE в своих плагинах, но когда некоторыеиз плагина сделать вызов функции обратного вызова, вы должны установить состояние приложения, чтобы оно могло найти хорошие ресурсы диалога и выполнять специфичные для состояния функции