作者worldxxi (风)
看板C_and_CPP
标题[问题] windows api 请问有可能在WM_PAINT之外的地方对萤幕作输出吗
时间Tue Aug 4 13:44:16 2009
我在case WM_CREATE下面写了几行对萤幕作输出的码,可是完全没反应,
但是将程式码移到WM_PAINT下面就成功了,这样让我觉得很奇怪,
WM_PAINT不就只是一个当『画面被遮住』或是『视窗大小改变』等等由
系统发出的message,去执行那部份而已吗?那我一开始将原本应该放在
WM_PAINT下面的东西,写到WM_CREATE里面,为什麽会没有作用。
我还用其他视窗遮住或是用InvalidateRect去触发都没有反应。
虽然我可以将程式码照规矩写到WM_PAINT下面,可是我想知道为什麽会这样?
有人有经验的可以分享一下吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.96.186.76
1F:→ TeaEEE:DC的取得方式? 08/04 17:31
2F:推 yourdog:WM_CREATE 是只有第一次创造物件时,用来初始成员而已 08/04 22:13
3F:→ yourdog:它类似建构函式或是OnInitialDialog() 08/04 22:14
4F:→ yourdog:所以你把视窗重绘动做写在那里要做甚麽?只有第一次会画 08/04 22:15
5F:→ worldxxi:可是他连一次都没有画我才觉得很奇怪,我完全没遮住 08/04 22:36
6F:推 yourdog:因为WM_CREATE在OninitialDialog之前作 08/04 22:40
7F:→ yourdog:所以那时还没有视窗实体..你要它怎麽画 08/04 22:40
8F:→ yourdog:你把它写在OnintialDialog应该就会画一次了 08/04 22:42
9F:→ worldxxi:所以说"绘图"这件事其实没有一定要写在wm_paint底下罗 08/05 08:07
10F:→ worldxxi:回tea大 我一开始看不懂你说的 我有用GetDC和beginpaint 08/05 09:12
11F:推 yourdog:你爽写在那就写在那..只要绘图方法正确,视窗存在 08/05 21:27
12F:推 yourdog:比如说你需要一个动画,就先建一个计时器 08/05 21:30
13F:→ yourdog:然後把绘图动作写在计时器里..让它故定格一时间画一次图 08/05 21:31