TextOut显示的字怎么居中显示?从窗口最大化变成还原的时候不重绘?

时间:2022-07-11 20:41:31
我先CreateFont 然后TextOut(),输出了几个特殊字体的字,想把它居中显示,没发现有直接的方法,就用GetWindowRect()获得的窗口宽度,然后(x/2-字串宽度)作为TextOut的坐标。问题来了,这几个字的宽度是多少?CreateFont 里边我直接写的0,让它自己调整的,自己写不好写,nHeight跟 nWidth写一样的数显示的明显不是正方形方块的字。这是问题其一

还有,我自己试过几次以后,这个宽度自己先写上一个差不多的。运行的时候点最大化没问题,但是从最大化还原为一般窗口的时候,貌似窗口不重绘呀。我把自己写的这个函数放到Onpaint里边了。我这个是基于对话框的,没有OnDraw()。
是我放错了位置?还是还需要修改点什么?

2 个解决方案

#1


使用DrawText就可以了

#2


CRect rc;
GetClientRect(&rc);
pDC->DrawText(strText, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);

#1


使用DrawText就可以了

#2


CRect rc;
GetClientRect(&rc);
pDC->DrawText(strText, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);