说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VC建了个菜单,请问怎么为它添加快速键(快捷键)

编辑:说三道四文库 发布时间:2018-07-20 11:11
HTML文档下载 WORD文档下载 PDF文档下载
不知道在哪里增加下面快速键定义的代码来让菜单有快速键的功能
IDR_MAINFRAME PRELOAD ACCELERATORS MOVEABLE
BEGIN
"F", ID_FILE_NEW,VIRTKEY,CONTROL
......

END


谢谢麻烦指点。。
1.在 OnInitDialog 里
  ::RegisterHotKey(m_hWnd,0xa009,MOD_CONTROL,0x57);
  ::SetFocus(m_hWnd);

2.添加消息
BOOL CMyMFCDlg::PreTranslateMessage(MSG* pMsg) 
{
  if (pMsg->message==WM_HOTKEY && pMsg->wParam==0xa009)
  {
    AfxMessageBox("Hello, This is hot key :-)");
  }
return CDialog::PreTranslateMessage(pMsg);
}

LRESULT CMyMFCDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
  if(message == WM_CLOSE)
  {
    ::UnregisterHotKey(m_hWnd,0xa009);
  }
  return CDialog::WindowProc(message, wParam, lParam);
}

好了,现在运行程序,请按 Ctrl + w ,:-)




在Dlg的头文件中加入:

       HACCEL m_hAccel;

在Dlg的构造函数中加载加速键:

基于对话框的程序如何使用加速键?       

m_hAccel=::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));//加速键ID

重载PreTranslateMessage函数:

BOOL CDlg::PreTranslateMessage(MSG* pMsg) 

{

       // TODO: Add your specialized code here and/or call the base class

       if(m_hAccel!=NULL)

              if(::TranslateAccelerator(m_hWnd,m_hAccel,pMsg))

                     return TRUE;

       return CDialog::PreTranslateMessage(pMsg);

}

IDR_MAINFRAME PRELOAD ACCELERATORS MOVEABLE
BEGIN
"在这里加一个&F", ID_FILE_NEW,VIRTKEY,CONTROL
......

END
我不想用资源编辑器创建的菜单,想自己用CMenu写一个菜单,代码我已经写好了:
CMenu* p=GetMenu();
p->CreateMenu();
CMenu* pop=GetMenu();
pop->CreatePopupMenu();
pop->AppendMenu(MF_STRING,ID_NEW,"NEW");
pop->AppendMenu(MF_STRING,ID_OPEN,"OPEN");
p->AppendMenu(MF_POPUP,(UINT)pop->Detach(),"FILE");
pop->CreatePopupMenu();
pop->AppendMenu(MF_STRING,ID_FILE_COPY,"COPY");
pop->AppendMenu(MF_STRING,ID_FILE_PARSE,"COPY");
p->AppendMenu(MF_POPUP,(UINT)pop->Detach(),"EDIT");
pop->CreatePopupMenu();
pop->AppendMenu(MF_STRING,ID_FILE_EXIT,"EXIT");
p->AppendMenu(MF_POPUP,(UINT)pop->Detach(),"EXIT");
SetMenu(p);
p->Detach();

现在但是这个代码应该写在什么函数里面才能在运行的时候出现在窗上里?我直接放在继承CFrameWnd类的构造函数里不行的。
UP
mark
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘