这个问题是我最想知道的,所以拿出了100分!希望神牛们能够给个完美解答!先谢过了!
谢谢大家,整合了大家的智慧,我解决了问题,因为是大家的帮助,所以发起投票!非常感谢大家!我用PreTranslateMessage然后用::PostMessage(hWnd,WM_COMMAND,控件ID,NULL)和重载WN_OnHelpInfo函数!实现了我想要的功能!谢谢大家!
谢谢,大致理解了您的意思,但是可以详细么?HOOK可以达到功能。但是重载OnHelpInfo函数会更优秀哦!消息发送WM_COMMAND消息怎么发送呢?定义一个消息结构体,然后将ID号写入WPARAM中再用PostMessage将消息投递出去么?
追答BOOL PostMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
PostMessage(hWnd,WM_COMMAND,控件ID,NULL)
你好,我是在基于对话框的程序,并且按钮的消息响应已经建立完全了,想要的是按另外的键也可以达到响应,就是两个键都会响应一个按钮,另外PreTranslateMessage的这种方法屏蔽不了按F1会出现帮助框哦,要用别的方法!我就是这样写的,结果只有F1会有问题!谢谢你的回答咯!VK_F1 到 VK_F12表示键盘上 “ F1 ”到“ F12 ”键。
谢谢!但是第一个问题!就是怎么样才能投递一个已经建立好的按键消息到消息队列?就是按键的ID,消息响应函数都是已知的!怎么样才能投递到消息队列呢?BroadcastSystemMessage ,PostMessage ,PostThreadMessage,SendMessageTimeout ,SendNotifyMessage ,SendMessageCallback应该用哪个才能达到呢?销毁对话框应该用什么函数?
追答那个,你问的问题是如何传送一个按钮被按下是吧?传给谁?传给自己的程序,还是传给其他程序?
其实说起来,MFC还真麻烦。说起来,我也好久没用MFC了。。
就是已经建立了一个按键的消息响应,要想在程序中~不等按键被按下~就用程序控制的方法投递到消息队列使其响应。投递给自己的程序!谢谢你!
追答给你例子给你。。
::SendMessage(m_hWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON1,BN_CLICKED),0);