不知道在哪里增加下面快速键定义的代码来让菜单有快速键的功能
IDR_MAINFRAME PRELOAD ACCELERATORS MOVEABLE
BEGIN
"F", ID_FILE_NEW,VIRTKEY,CONTROL
......END
谢谢麻烦指点。。

解决方案 »

  1.   

    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);}
      

  2.   

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

  3.   

    我不想用资源编辑器创建的菜单,想自己用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类的构造函数里不行的。