永发信息网

DrawText不显示

答案:2  悬赏:60  手机版
解决时间 2021-02-25 08:07
以下是常见的win32 HelloWorld代码:
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
以上代码放到WM_CREATE中就不显示,但是放到WM_PAINT中就会显示szHello中的字符串,求解
最佳答案
常见的win32 hello world里,下面创建窗口的语句顺序是

createwindow
showwindow
updatewindow
wm_create在createwindow的时候执行
此时窗口还没出来
然后wm_paint是在updatewindow的时候执行。

另外,windows并不是你在窗口上画完以后它就一直能显示的。windows并不保存你在窗口上显示了什么,也就是说如果你窗口上的图被其他什么窗口遮住了,此时把遮住你上面的图的窗口移开,windows无法显示被遮住过的部分的内容,这部分是需要你重新绘制的。

有这种需要你重绘的需求的时候,就会有wm_paint过来
所以你放在wm_create里绘制文字是不正确的
全部回答
视窗程序是 无休止的 消息循环处理 程序,直到关闭窗口。 case WM_CREATE: 是 “当窗体建立”时 执行一次。 在这里写东西画图,理论上能在窗体刚建立时 显示一次,然而,一旦窗体发生任何变化和更新,它不会被重画(重新画)。因为 消息循环处理,不可能再进入这个 case. case WM_PAINT: 消息循环处理, 一旦窗体发生任何变化,例如,覆盖,移动,更新,就会被重画。所以绘图,写字都应 放在 WM_PAINT 里。 MFC 程序,绘图写字 放在 OnDraw() 或 OnPaint() 里。 记住 这点就可以了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
滕州在哪考驾驶员从业资格证,办上岗证?
面试过后老总约我再聊聊,是什么意思呢
怎么在自己的机子上设置使用权限?(如何设置
纯米肠粉地址有知道的么?有点事想过去
洞口县邵阳明珠文化传媒哪位知道具体地址啊
沈阳哪有卖KOOL烟的啊?爆珠的那种!
广州磨碟沙到南海盐步金地悦荔做什么车去
僵尸农场的仓库我已经解锁到了麦老爹谷仓了,
农业银行怎么看开户行
关马湖立交桥/福银高速公路(路口)这个地址在
国家认证是什么意思?
琅琊榜怎么样?请男生来回答!表示我想找个古
读我国华南局部地区等高线图,回答以下问题(
托福考试78到90分40天准备时间够吗
铁东育英幼儿园地址在哪,我要去那里办事
推荐资讯
根据学者对青少年文化的类型划分,打抱不平,
求助 linux 的 centos下这一步怎么做?
君延房产地址有知道的么?有点事想过去
患儿,男,6岁。西医诊断为肾病综合征。症见
宝宝粮仓产后修复我想知道这个在什么地方
fgo零星从者怎么样
win7不能汉化protel 99 se吗?
从前一直没有去猜一字
淘宝找朋友代付为什么有的可以有的不可以,需
盛世传媒婚礼庆典在什么地方啊,我要过去处理
银座佳驿连锁酒店临沂兰陵(苍山)滨河店我想知
母亲90岁生日送鲜花贺词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?