在Windows控制面板中选择大字体大小(如125%或150%)时,每次按像素设置某些内容时,VCL应用程序中都会出现问题.
拿走TStatusBar.Panel.我已经设置了它的宽度,使它只包含一个标签,现在使用大字体标签"溢出".与其他组件相同的问题.
戴尔的一些新笔记本电脑已经默认设置为125%,因此在过去这个问题非常罕见,现在非常重要.
可以做些什么来克服这个问题?
对于我的应用程序,我需要创建一个不使用资源的对话框.我试图用DialogBoxInderect函数做到这一点.代码令人难以置信的丑陋,但不知怎的,我成功地做到了.
问题是,由于某种原因,对话框比我用更大的字体要求的要大得多.
如果我从资源加载它,对话框的样子如下:
这是我调用DialogBoxInderect函数时指定的相同大小的对话框.

以下是在代码中定义的方式:
HGLOBAL hGlobal;
LPDLGTEMPLATE wlsDialogTemplate;
LPDLGITEMTEMPLATE wlsDialogItemTemplate;
LPWORD nextItem;
LPWSTR itemString;
int32_t itemStringLength;
// Check for memory allocation errors
hGlobal = GlobalAlloc(GMEM_ZEROINIT, 1024);
if (!hGlobal)
return -1;
wlsDialogTemplate = (LPDLGTEMPLATE)GlobalLock(hGlobal);
// Define a dialog box.
wlsDialogTemplate->style = WS_CAPTION;
wlsDialogTemplate->x = 0;
wlsDialogTemplate->y = 0;
wlsDialogTemplate->cx = 320;
wlsDialogTemplate->cy = 115;
GlobalUnlock(hGlobal);
retCode = DialogBoxIndirect(0, (LPDLGTEMPLATE)hGlobal, 0, ActivateWlsMsgDialog);
Run Code Online (Sandbox Code Playgroud)
以下是RC文件中的定义方式:
IDD_WLS_SMALL_MESSAGE_DLG DIALOGEX 0, 0, 320, 115
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP …Run Code Online (Sandbox Code Playgroud) 我正在用 C++ 创建一个小型 WinAPI 应用程序。我正在尝试使用以下代码在表单上创建一个按钮:
HWND hwndButton = CreateWindow(
TEXT("BUTTON"),
TEXT("Click Here"),
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, // Styles
10,
10,
100,
30,
hwnd,
NULL,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);
Run Code Online (Sandbox Code Playgroud)
此代码基于 MSDN 示例。我的问题是它在按钮上使用粗体字体,如下所示:
当我想使用这样的标准字体时:
我的文件顶部已经有预处理器指令来启用视觉样式。
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Run Code Online (Sandbox Code Playgroud)
我应该采取哪些步骤来使用标准系统宽字体?
谢谢
我讨厌默认的Windows Api Window字体(我认为它是默认的系统字体).我知道如何更改单个孩子的字体,比如一个按钮.但是,有没有办法改变整个应用程序的字体,以便我不必在程序中的每个小部件上使用SendMessage(... WM_SETFONT)?
代码示例受到欢迎.(我使用的是C++)