MFC重载PreTranslate函数截取消息
如果我们想对系统消息队列中的某个消息自定义其行为,可以选择某个对话框,添加PreTranslateMessage函数并重写;
需要注意的点:
(1) 只有消息队列中的消息会被PreTranslateMessage所截获,如果是用SendMessage直接向某个对话框发送的消息不会被截获;
(2) PreTranslateMessage截获消息之后,当它释放此消息之后,这个消息才能到消息队列中去执行相应的映射函数,例子如下:
截获某个系统消息并改成别的消息:
(3) 如果用PreTranslateMessage截获某个消息,并且不想把消息还给系统,可以在执行完相应操作后直接return TRUE/FALSE,就是提前结束函数,不让操作系统去执行消息函数: