An application typically uses the return value to determine whether to end the main message loop and exit the program. The GetMessage function retrieves messages associated with the window identified by the hWnd parameter or any of its children, as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. Note that an application can only use the low word in the wMsgFilterMin and wMsgFilterMax parameters; the high word is reserved for the system.Note that GetMessage always retrieves WM_QUIT messages, no matter which values you specify for wMsgFilterMin and wMsgFilterMax.During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. The system may also process internal events. Messages are processed in the following order: Sent messages 
Posted messages 
Input (hardware) messages and system internal events 
Sent messages (again) 
WM_PAINT messages 
WM_TIMER messages 其中的这一段:
During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. The system may also process internal events. Messages are processed in the following order: Sent messages 
Posted messages 
Input (hardware) messages and system internal events 
Sent messages (again) 
WM_PAINT messages 
WM_TIMER messages 我想问的是sendmessage的消息不进入消息队列, 直接在getmessage的时候处理了??? 这个理解对码.Sent messages (again)  是什么意思??

解决方案 »

  1.   

    SendMessage直接在内部用GetWindowLong得到窗口过程然后调用
    与GetMessage没有关系
      

  2.   

    During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. The system may also process internal events. Messages are processed in the following order:那么这一句怎么理解呢???
      

  3.   

    不对吧
    msdn2005是这样的
    Res
    An application typically uses the return value to determine whether to end the main message loop and exit the program. The GetMessage function only retrieves messages associated with the window identified by the hWnd parameter or any of its children, as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. If hWnd is NULL, GetMessage retrieves messages for any window that belongs to the calling thread and thread messages posted to the calling thread by means of PostThreadMessage. GetMessage does not retrieve messages for windows that belong to other threads nor for threads other than the calling thread, even if hWnd is not NULL. Thread messages, posted by the PostThreadMessage function, have a message hWnd value of NULL. If wMsgFilterMin and wMsgFilterMax are both zero, GetMessage returns all available messages (that is, no range filtering is performed). The WM_KEYFIRST and WM_KEYLAST constants can be used as filter values to retrieve all messages related to keyboard input; the WM_MOUSEFIRST and WM_MOUSELAST constants can be used to retrieve all mouse messages. If the wMsgFilterMin and wMsgFilterMax parameters are both zero, the GetMessage function returns all available messages (that is, without performing any filtering). GetMessage does not remove WM_PAINT messages from the queue. The messages remain in the queue until processed. Note that the function return value can be nonzero, zero, or –1. Thus, you should avoid code like this.while (GetMessage( lpMsg, hWnd, 0, 0)) ... 
    The possibility of a –1 return value means that such code can lead to fatal application errors.