mdc dll内弹出afxmessagebox其默认的按钮样式为何与系统不一致?

gbjsy 2020-04-28 10:13:18
mfc 资源清单和资源文件全都设置好了,dll内窗口和控件与系统显示一致,唯独afxmessagebox和messagebox放置在vs默认建立的第一个 项目名.cpp 文件之内其风格就是旧风格,和系统不一致。什么原因?如何使它和系统一致。
...全文
209 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbjsy 2020-04-30
好像明白点了,我的dll的主窗口是95风格的,造成这个结果。
  • 打赏
  • 举报
回复
zgl7903 2020-04-29
我测试的没有发现异常呢

//DLL.cpp
extern "C" __declspec( dllexport ) int ExportedFunction(HWND hParent)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return MessageBoxW(hParent, L"Test", L"Message", MB_OK);
}



//DLLCall.cpp
extern "C" int ExportedFunction(HWND hParent);
#pragma comment(lib, "../debug/dll.lib")
{
ExportedFunction(NULL);
}



  • 打赏
  • 举报
回复
gbjsy 2020-04-29
我这个是 framework.h 已添加,但在对话框窗口建立之前调用messagebox或afxmessagebox,它的按钮外观都是95风格的,改不过来,对话框窗口建立以后是和系统一致的。
  • 打赏
  • 举报
回复
zgl7903 2020-04-28
添加Manifest
  • 打赏
  • 举报
回复
zgl7903 2020-04-28
stdafx.h 中添加

#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
  • 打赏
  • 举报
回复
gbjsy 2020-04-28
必须添加资源清单文件吗?framework.h文件已添加ifdef _Unicode 。生成清单也选了 是 。效果应该一样吧。
  • 打赏
  • 举报
回复
相关推荐
发帖
资源

2584

社区成员

VC/MFC 资源
社区管理员
  • 资源
加入社区
帖子事件
创建了帖子
2020-04-28 10:13
社区公告
暂无公告