请教:关于自定义消息和注册热键的问题!

redkit 2004-04-18 06:33:50
用vc++6建立了一个工程。然后在BOOL CAboutDlg::OnInitDialog()函数中
添加了
RegisterHotKey(GetSafeHwnd(),WM_SHOWHOTKEY,MOD_ALT|MOD_CONTROL,VK_F3);

在头文件中定义了
#define WM_SHOWHOTKEY WM_USER + 101

然后
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

ON_MESSAGE(WM_SHOWHOTKEY,OnHotKey)
ON_WM_DESTROY()

END_MESSAGE_MAP()

然后
添加了如下函数的定义和声明
LRESULT CAboutDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
this->MessageBox("FasDFSAFSADF");
return true;
}

afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);


最后运行后我按下crlt+alt+f3可是还是无任何效果。不知道怎么回事。请高手指教!!
...全文
25 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
redkit 2004-04-20
  • 打赏
  • 举报
回复
高人呢?谁能帮我解释解释
redkit 2004-04-19
  • 打赏
  • 举报
回复
弹出了呀
hudan 2004-04-19
  • 打赏
  • 举报
回复
CAboutDlg::OnInitDialog
CAboutDlg::OnHotKey()

只有再弹处CAboutDlg对话框的情况下,才会有效果,
你弹出了 吗?
greenjava 2004-04-19
  • 打赏
  • 举报
回复
ding
redkit 2004-04-18
  • 打赏
  • 举报
回复
自己顶!
redkit 2004-04-18
  • 打赏
  • 举报
回复
有人能给我一个答复吗?我迷惑了很久了。
redkit 2004-04-18
  • 打赏
  • 举报
回复
还有人能帮我解释一下吗?
#define WM_SHOWHOTKEY WM_USER + 101
不就是定义了id了吗?
itmaster 2004-04-18
  • 打赏
  • 举报
回复
应该是唯一ID
如果热键用的和消息ID一样了
是不是会有问题?
最好试一下吧
redkit 2004-04-18
  • 打赏
  • 举报
回复
还是不明白!!
redkit 2004-04-18
  • 打赏
  • 举报
回复
WM_USER + 101?
itmaster 2004-04-18
  • 打赏
  • 举报
回复
对,用一个整数就可以
该整数即为所注册热键的ID
redkit 2004-04-18
  • 打赏
  • 举报
回复
那么第二个参数我应该改成什么呢?
随便找一个数代替?
请教!
itmaster 2004-04-18
  • 打赏
  • 举报
回复
不需要在RegisterHotKey调用中指出WM_SHOWHOTKEY消息
注册热键后会自动响应该消息的
itmaster 2004-04-18
  • 打赏
  • 举报
回复
你的RegisterHotKey有问题,第二个参数不对

RegisterHotKey函数原型及说明:
BOOL RegisterHotKey(
HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags
UINT vk // virtual-key code);

参数 id为你自己定义的一个ID值,对一个线程来讲其值必需在0x0000 - 0xBFFF范围之内,对DLL来讲其值必需在0xC000 - 0xFFFF 范围之内,在同一进程内该值必须唯一
参数 fsModifiers指明与热键联合使用按键,可取值为:MOD_ALT MOD_CONTROL MOD_WIN MOD_SHIFT
参数 vk指明热键的虚拟键码

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧