none
关于子窗口的消息疑问 RRS feed

  • 问题

  • 你好:

         如果我在一个窗口上创建了几个子窗口,当我在子窗口上点击鼠标时,子窗口收到了WM_LBUTTONDOWN消息,windows是怎么知道该发消息发往哪个子窗口的?父窗口是不是收到什么消息然后判断在WM_LBUTTONDOWN发往哪个子窗口。

    2020年1月7日 2:11

全部回复

  • 你好,

    感谢你在这里发帖。

    SendMessage()PostMessage()消息都是需要指定句柄的,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理,微软的消息机制也是通过这个句柄知道消息需要发送到哪里去。另外如上提到的,微软采用“输入焦点”(input focus)技术可以解决键盘消息去往何处的问题。只要某个窗口取得输入焦点,它不但会被提升到屏幕的最前面,颜色也会有所不同,所有的键盘消息就会导向该窗口,该窗口也成为“活动窗口”。

    Best Regards,

    Suarez Zhou



    2020年1月7日 5:44
  • 你好:

         也就是说当我点击了子窗口时,子窗口会被激活,并获得焦点,WM_LBUTTONDOWN消息也会直接发往子窗口,父窗口并不会收到消息。

    2020年1月7日 7:26