gpt4 book ai didi

c - 使用 Win32 API 在 C 中对齐窗口文本

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:40 25 4
gpt4 key购买 nike

我有兴趣找到一种方法来对齐以下文本:

current text

期望的结果是对齐每个缩写的首字母、可变数量的空格和对齐的冒号;例如

STR :0
CON :0
DEX :0
INT :0
...

我知道我可以为每一行调用两个“TextOut”,一个用于缩写,一个用于“:%d”,有没有一种方法可以用 SetTextAlignment() 修改 hdc?

以下是我的代码摘录:

...
TextOut(hdc, 10, 100, "STATS:", strlen("STATS:"));
TextOut(hdc, 17, 100+textYStep, "STR:0", 5);
TextOut(hdc, 17, 100+textYStep*2, "CON:0", 5);
TextOut(hdc, 17, 100+textYStep*3, "DEX:0", 5);
TextOut(hdc, 17, 100+textYStep*4, "INT:0", 5);
TextOut(hdc, 17, 100+textYStep*5, "WIS:0", 5);
TextOut(hdc, 17, 100+textYStep*6, "WIL:0", 5);
TextOut(hdc, 17, 100+textYStep*7, "CHR:0", 5);
...

最佳答案

你可以使用固定宽度的字体,这也是本网站用来格式化代码的:

HFONT hfont = (HFONT)GetStockObject(ANSI_FIXED_FONT);

int textYStep = 16;
HFONT hfont = CreateFont(textYStep, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_QUALITY, 0, "Courier New");
HFONT oldfont = (HFONT)SelectObject(hdc, hfont);

TextOut(hdc, 10, 100, "STATS:", strlen("STATS:"));
TextOut(hdc, 17, 100 + textYStep * 1, "STR:0", 5);
TextOut(hdc, 17, 100 + textYStep * 2, "CON:0", 5);

SelectObject(hdc, oldfont);
DeleteObject(hfont);

或者按照评论中的建议使用 TabbedTextOut:

int tabs[] = { 50, 100, 150, 200 };
const char *text = "X1\tX2\tX3\tX4";
TabbedTextOut(hdc, 17, 100 + textYStep, text, strlen(text), 4, tabs, 17);

关于c - 使用 Win32 API 在 C 中对齐窗口文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31799805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com