Win32 API MessageBox内容模糊不清的原因咨询
消息框内容文字模糊的原因分析
你的代码:
int code = MessageBox(0, L"Notation", L"Alarm", MB_OKCANCEL);
出现内容"Notation"模糊、标题"Alarm"清晰的核心原因是DPI缩放适配问题:
- 消息框的标题栏属于系统非客户区,由Windows窗口管理器负责渲染,会自动适配当前显示器的DPI缩放比例,所以文字显示清晰。
- 消息框的内容属于程序客户区,默认情况下,未声明DPI感知的Win32程序会被系统按96DPI(默认基础DPI)的尺寸进行拉伸缩放,拉伸后的文字自然会出现模糊。
如果要解决这个问题,可以通过以下方式开启程序的DPI感知:
- 在程序的manifest文件中添加DPI感知配置,例如:
<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware> </windowsSettings> </application> - 或者在程序启动时调用
SetProcessDpiAwarenessContext等API手动设置DPI感知模式。
内容的提问来源于stack exchange,提问作者Shellong
相关产品推荐
相关产品推荐

