好学习 发表于 2016-10-5 20:50:19

SetTextAlign和TextOut同时使用的疑惑

本帖最后由 好学习 于 2016-10-16 08:52 编辑

case WM_PAINT:
                {
                                          RECT rctClient;
                                          HDC hdc;
                        TCHAR st = TEXT("* * * * * *"), str;                       
                        size_t iTarget;
                                                GetClientRect(hwnd, &rctClient);
                        hdc = GetDC(hwnd);
                        StringCchPrintf(str, 100, TEXT("%s"), st);
                        StringCchLength(str, 100, &iTarget);
                        SetTextAlign(hdc, GetTextAlign(hdc)|DT_CENTER);// DT_LEFT或DT_RIGHT等为何会显著影响位置?
                        TextOut(hdc, rctClient.right/2, rctClient.bottom/2, str, iTarget);
                        ReleaseDC(hwnd, hdc);
                        break;
                }

SetTextAlign不是只负责文字对齐方式的吗?怎么改动DT_CENTER的值会影响到文字的位置?况且设置DT_CENTER文字在左上,设置成DT_LEFT文字反倒跑中间来了?何解?

好学习 发表于 2016-10-16 04:11:21

{:10_269:}这问题只有我遇到吗?或者这段代码你们运行都是好好的,就我的机器不行?

谦虚求学 发表于 2016-10-25 14:55:35

TextOut(hdc, rctClient.right/2, rctClient.bottom/2, str, iTarget);你设置的位置就在中间 ,当然文字会出现在中间了{:5_97:}

谦虚求学 发表于 2016-10-31 19:26:52

看看 小甲鱼老师的API档案你就明白了

yixinwenxin 发表于 2021-5-30 23:30:26

我也没明白,前辈。现在明白了吗?
能不能讲讲?
页: [1]
查看完整版本: SetTextAlign和TextOut同时使用的疑惑