Windows消息产生的时机 http://blog.csdn.net/Free_Sword/archive/2006/05/07/711158.aspx

来源:互联网 发布:银龙知识产权 知乎 编辑:程序博客网 时间:2024/04/29 12:17

一直都没有弄明白windows的消息究竟是什么时候产生,写程序的时候都是照“猫”而已。而其他书上的又内容太多,想找到自己要的消息产生的时机,难啊。就以此主题,开始我的Blog吧(以下内容主要来自MSDN)。

1.  WM_Create   当应用程序要求初始化窗口,重绘窗口区时(需要调用CreateWindow函数时),调用此函数。此消息触发OnCreate()函数。

   LRESULT CALLBACK WindowProc(
      HWND hwnd,       // handle to window
      UINT uMsg,       // WM_CREATE
      WPARAM wParam,   // not used
      LPARAM lParam    // creation data (LPCREATESTRUCT)
   );

  注 候在<深入浅出MFC中>说,框架一生成,就会立即触发WM_CREATE消息,比如要画工具栏、状态栏啊什么的,都要写在些函数里,然后通过显示函数显示出来。

2.  WM_CLOSE  窗口或应用程序将关闭时,发此消息。(将来式?)

LRESULT CALLBACK WindowProc(  HWND hwnd,       // handle to window  UINT uMsg,       // WM_CLOSE  WPARAM wParam,   // not used  LPARAM lParam    // not used);

    An application can prompt the user for confirmation, prior to destroying a window, by processing the WM_CLOSE message and calling the DestroyWindow function only if the user confirms the choice.

3. WM_DESTROY 窗口关闭中.(进行式?)

4. WM_QUIT  (搞糊涂了)

 2、3、4这三个消息都是与关闭窗口有关的。看微软的说明好象是说WM_DESTROY消息是在WM_CLOSE消息之后。所以,想要问用户是否真想关闭窗口,应该在CLOSE消息时提示,以防止无意关闭程序。而DESTROY消息是在窗口正在进行的过程中,产生此消息,此消息是将窗口区准备在屏幕上擦去时用的,估计除了释放内存、资源等的动作外,没有人会想在此消息里做动作了。QUIT消息就有点怪了,不知道用在哪儿,是不是想关窗口,就发此消息呢?MSDN里只说该消息在WINDOWS进程处理函数里是抓不到的,除非用GetMessage or PeekMessage 函数才可以处理此消息。

 

反正windows的消息也不多,就先帖出来。明天补充吧。

5.    WM_ACTIVATE

     好象是说想让窗口激活或失去激活时,发出此消息。如果窗口不是处于最小化时,窗口将立刻获得焦点。如果此 消息是通过点鼠标得到的。那么,窗口还会得到WM_MOUSEACTIVE

LRESULT CALLBACK WindowProc(  HWND hwnd,       // handle to window  UINT uMsg,       // WM_ACTIVATE  WPARAM wParam,   // activation and minimization options  LPARAM lParam    // handle to window (HWND));
以下消息,根椐其命名就可以大致判断其产生的时机,而且翻译MSDN也挺费劲(英文太差啊!)。用时还是看MSDN吧。
 WM_ACTIVATEAPP

WM_CANCELMODE
WM_CHILDACTIVATE

WM_COMPACTING

WM_ENABLE
WM_ENTERSIZEMOVE
WM_EXITSIZEMOVE
WM_GETFONT
WM_GETICON
WM_GETMINMAXINFO
WM_GETTEXT
WM_GETTEXTLENGTH
WM_INPUTLANGCHANGE
WM_INPUTLANGCHANGEREQUEST
WM_MOVE
WM_MOVING
WM_NCACTIVATE
WM_NCCALCSIZE
WM_NCCREATE
WM_NCDESTROY
WM_NULL
WM_PARENTNOTIFY
WM_QUERYDRAGICON
WM_QUERYOPEN
WM_QUIT
WM_SETFONT
WM_SETICON
WM_SETTEXT
WM_SHOWWINDOW
WM_SIZE
WM_SIZING
WM_STYLECHANGED
WM_STYLECHANGING
WM_THEMECHANGED
WM_USERCHANGED
WM_WINDOWPOSCHANGED
WM_WINDOWPOSCHANGING