消息过滤(Message Filtering)
通过调用GetMessage和PeekMessage函数,应用程序可以指定一个消息过滤器,从消息队列中获取特定的消息而忽略其它的消息。这个过滤器是一个消息标识符的范围(通过指定第一个和最后一个标识符),或者一个窗口句柄,又或者两者都是。GetMessage和PeekMessage函数利用消息过滤器从队列中选择消息。如果应用程序必须在消息队列中搜寻之后到达消息队列的消息,那么消息过滤器是很有用的。如果应用程序必须在处理发布消息之前,处理硬件输入消息,那么消息过滤器也同样有用。
WM_KEYFIRST和WM_KEYLAST常量可以被用来作为过滤值来获取键盘消息。WM_MOUSEFIRST和WM_MOUSELAST常量可以被用来获取鼠标消息。
任何过滤消息的应用程序必须确保满足消息过滤器的消息可以被发布。例如,如果一个应用程序在一个窗口中过滤WM_CHAR消息,而这个窗口并没有接收键盘输入,那么GetMessage函数不会返回值。
通过调用GetMessage和PeekMessage函数,应用程序可以指定一个消息过滤器,从消息队列中获取特定的消息而忽略其它的消息。这个过滤器是一个消息标识符的范围(通过指定第一个和最后一个标识符),或者一个窗口句柄,又或者两者都是。GetMessage和PeekMessage函数利用消息过滤器从队列中选择消息。如果应用程序必须在消息队列中搜寻之后到达消息队列的消息,那么消息过滤器是很有用的。如果应用程序必须在处理发布消息之前,处理硬件输入消息,那么消息过滤器也同样有用。
WM_KEYFIRST和WM_KEYLAST常量可以被用来作为过滤值来获取键盘消息。WM_MOUSEFIRST和WM_MOUSELAST常量可以被用来获取鼠标消息。
任何过滤消息的应用程序必须确保满足消息过滤器的消息可以被发布。例如,如果一个应用程序在一个窗口中过滤WM_CHAR消息,而这个窗口并没有接收键盘输入,那么GetMessage函数不会返回值。