MFC和QT的消息循环机制不同,所以,要让QT写的DLL可以供MFC调用,要做一点特殊的处理
[cpp]view plaincopyprint? #include<qmfcapp.h>#include<qwinwidget.h>#include<QtGui>#include<QtGui/QMessageBox>#include<windows.h>#include<QTextCodec> [cpp]view plaincopyprint? #include"widget.h"BOOLWINAPIDllMain(HINSTANCEhInstance,DWORDdwReason,LPVOID/*lpvReserved*/){staticboolownApplication=FALSE;//加入本地语言支持QTextCodec::setCodecForTr(QTextCodec::codecForLocale());QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());if(dwReason==DLL_PROCESS_ATTACH){ownApplication=QMfcApp::pluginInstance(hInstance);}if(dwReason==DLL_PROCESS_DETACH&&ownApplication){qApp->quit();deleteqApp;}returnTRUE;}extern"C"__declspec(dllexport)intShowDialog(HWNDparent){QWinWidgetwin(parent,NULL,Qt::Window);win.showCentered();win.center();QHBoxLayouthbox(&win);Widget*widget=newWidget(&win);widget->setWindowFlags(Qt::Window);hbox.addWidget(widget);win.show();qApp->exec();}