Winapi MFC应用程序字体问题-对话框在Win2k8上出现错误

Winapi MFC应用程序字体问题-对话框在Win2k8上出现错误,winapi,user-interface,mfc,Winapi,User Interface,Mfc,我在win2k3 citrix上运行的遗留应用程序即将迁移到win2k8 citrix 在win2k8上测试时,我注意到在2k3上没有明显的UI问题-按钮不够宽,无法容纳标签,文本字段被截断,等等 我注意到Win2k3的默认字体是Tahoma,2k8使用Segoe UI,不确定这是否是原因 它是一个受控制的环境,只托管我的应用程序,因此更改windows UI设置比重新设计我的所有窗口和对话框更可取 如何使我的应用程序在win2k8上看起来与在win2k3上相同 下面是rc文件中我的登录对话框的

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

在win2k8上测试时,我注意到在2k3上没有明显的UI问题-按钮不够宽,无法容纳标签,文本字段被截断,等等

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

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

如何使我的应用程序在win2k8上看起来与在win2k3上相同

下面是rc文件中我的登录对话框的一个示例。在win2k8上,文本“请输入您的用户id”环绕两行,并隐藏在编辑框下

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用户登录密码,它是81个对话单元x 12个对话单元

它应该呈现为142像素乘以24像素

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

这给了任何人任何线索吗?

看起来你已经安装了。您可以卸载它,服务器将以“经典”模式运行

此外,您还可以玩“个性化设置”。打开控制面板\外观和个性化\显示并选择“使文本和其他项目变大或变小”。在那里可以设置每个元素的大小。我建议你把一切都设定在100%


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

正如Hans所建议的,问题在于DPI设置。Win2k8系统的DPI为96,win2k3系统的DPI为120

将win2k8上的DPI设置为120可以解决通过远程桌面登录时的问题,但是在获取citrix设置以遵守此DPI设置时仍然存在一些问题,但我现在的做法是正确的


谢谢大家

你能发布一些屏幕截图吗?问题是否发生在对话框中?请在其中一个受影响的对话框上发布包含模板的.rc文件的摘录。尝试将“Arial”替换为“Ms Shell Dlg”。但您的问题很奇怪,因为在Win2k8上,您的Arial字体似乎被其他更大的字体(可能是Segoe UI?)所取代。还要尝试确定Win2k3和Win2k8上实际显示的字体。还要查看“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontReplaces”注册表项中是否存在任何可疑的字体替换。闻起来视频适配器DPI设置有问题,尽管这不会影响对话框。右键单击桌面,个性化,显示,选择100%。但即使激活了“桌面体验”,字体(在我们的例子中为Arial)也不应该被其他字体替代,除非没有安装Arial,这是不太可能的。或者可能在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts”“注册表项。不幸的是,切换到经典模式并没有解决此问题。我也不认为字体大小有问题,我抓取了一些屏幕,比较了它们,字体大小是一样的。更改的是对话框布局,例如:编辑框142 x 24 px被错误地渲染为122 x 21 px