MFC应用程序字体问题 - Win2k8对话框看起来不对

时间:2013-05-16 05:41:08

标签: winapi user-interface mfc

我在win2k3 citrix上运行的遗留应用程序即将迁移到win2k8 citrix。

在win2k8上进行测试时,我注意到在2k3上不明显的UI问题 - 按钮的标签不够宽,文本字段被截断等等。

我注意到Win2k3默认字体是Tahoma而2k8使用Segoe UI,不确定这是否是原因

这是一个仅托管我的应用程序的受控环境,因此更改Windows UI设置比重新设计所有窗口和对话框更可取。

如何让我的应用程序在win2k8上看起来和在win2k3上看起来一样?

以下是我从rc文件登录对话框的示例。在win2k8上,文本“请输入您的用户ID”包裹2行,并隐藏在编辑框下。

IDD_LOGON DIALOG DISCARDABLE  0, 0, 545, 361
STYLE WS_POPUP | WS_VISIBLE
FONT 8, "Arial"
BEGIN
    LTEXT           "Welcome",IDC_USER_LOGON_HEAD1,368,192,140,19
    LTEXT           "Please enter your User ID",IDC_USER_LOGON_HEAD2,368,220,
                    118,14
    EDITTEXT        IDC_USER_LOGON_USER,368,236,81,12,ES_AUTOHSCROLL
    LTEXT           "and your password",IDC_USER_LOGON_HEAD3,368,260,118,14
    EDITTEXT        IDC_USER_LOGON_PASSWORD,368,276,81,12,ES_PASSWORD | 
                    ES_AUTOHSCROLL
    PUSHBUTTON      "OK",IDOK,368,316,50,14,WS_DISABLED
    PUSHBUTTON      "E&xit",IDCANCEL,424,316,50,14
END

编辑:

我通过拍摄上述对话框的一些屏幕截图进行了一些进一步的调查。问题似乎不是文本大小错误 - 对话框控件中的问题太小了!

例如:

用于控件IDC_USER_LOGON_PASSWORD,这是81个对话框单元x 12个对话框单元。

它应该呈现为142像素×24像素

相反,它被渲染得太小,为122像素×21像素

这会给任何人提供任何线索吗?

2 个答案:

答案 0 :(得分:0)

看起来您安装了"Desktop Experience"。您可以将其卸载,服务器将以“经典”模式运行。

此外,您还可以使用“个性化设置”。打开控制面板\外观和个性化\显示,然后选择“使文本和其他项目更大或更小”。在那里你可以设置每个元素的大小。我建议你把所有东西都设置为100%。

此外,如果这没有帮助,您可以更改Win2k8中应用程序的兼容性以作为Win2k3运行。

答案 1 :(得分:0)

正如Hans所说,问题是DPI设置。 Win2k8系统的DPI为96,win2k3系统的DPI为120.

将win2k8上的DPI设置为120可以解决通过远程桌面登录时出现的问题,但是仍有一些问题需要让Citrix设置尊重这个DPI设置,但我现在正走在正确的轨道上。

谢谢大家