本文不过是对msdn的win32 SDK方面的部分整理,如有不妥和错误之处,望祈垂教!stdHans@msn.com;
对于typer程序在窗口未产生之前:
按msdn的说法,只要窗口未被最小化,DefWindowProc将为窗口设置焦点,如果你没有处理过WM_ACTIVATE,WM_ACTIVATE是如何产生的呢?我猜想只要窗口被激活或者在诞生之前,OS将把此讯息放入讯息队列,如果你没有处理,则DefWindowProc在处理WM_ACTIVATE时用SetFocus函数设置焦点,这个函数将产生两个讯息,你大概猜到了,是WM_SETFOCUS和WM_KILLFOCUS。我总结一下,在程序执行时那个闪烁的光标是如何来的呢?窗口诞生之前,OS看见她将出生,将WM_ACTIVATE放入讯息队列,如果你不揽下这“活”,亲爱的DefWindowProc会处理它,怎么处理,他用SetFocus函数,此函数并不是省油的灯,它又生产了两个讯息WM_SETFOCUS和WM_KILLFOCUS,剩下的活交给你,你生产了一Caret在WM_SETFOCUS中,打个比方,如果你是Caret的妈,则DefWindowProc是Caret的亲爸。
在窗口诞生之后:
假如你按下a键,键盘会产生WM_KEYDOWN讯息而OS在处理此讯息时将把WM_KEYDOWN翻译成WM_CHAR,也就是说你按下a键时产生了两个讯息:WM_KEYDOWN和WM_CHAR,而在WM_CHAR中对a进行了处理,如何处理我相信你比我能看得透澈!对于WM_PAINT的作用我持怀疑态度,但愿你能告诉我!对于别的按键的处理我实在没有什么感想!