有时我们需要这么做, 手动模拟按钮按下的事件, 让程序做出与按钮真的按下时一样的响应.
设按钮ID为ID_BTN_OK, 当前Dialog窗口.
实际上系统并不能区分按钮是真的按下了(如用鼠标点击), 还是一个我们自己用代码模拟出的一种"假象".
它所需要知道的只是哪个窗口(按钮也是一种窗口)发生了哪一种事件, 然后在消息循环中处理它. 系统怎么才
能知道这些呢? 当然靠的是消息(message), 我们只需按照Windows或者MFC的标准格式把相应的信息传给系统,
系统就会"上当"了.
向系统传递消息可以用SendMessage或PostMessage(可能还有其他很多函数哦), 但SendMessage执行后系统
会一直等待, 直到要发送的消息被处理掉. 而PostMessage可不管那么多, 发送消息后立即返回程序流程. 当
按钮按下的响应函数中有很大一个循环时, 用SendMessage会出现许多问题, 尤其是要在程序初始化阶段模拟时,
会导致窗体无法完成初始化. 所以我们用PostMessage(). 它的原型为:
- BOOL PostMessage( HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPA

本文介绍了如何使用MFC的PostMessage函数来手动发送WM_COMMAND消息,模拟对话框中的按钮被点击,从而触发相应的响应,使得程序在按钮未真正被按下时也能执行相同的操作。
最低0.47元/天 解锁文章
5905

被折叠的 条评论
为什么被折叠?



