void CBackGroundDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
// TODO: Add your message handler code here
CMenu menu;
CMenu *popup;
menu.LoadMenu(IDR_MENU1);
ASSERT(menu);
popup=menu.GetSubMenu(1);
    popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x ,point.y ,this);
}
该如何修改呢。

解决方案 »

  1.   

    还有如何使单行编辑框在输入回车后不响应IDOK消息啊 。
      

  2.   

    Add virtual Function CxDialog::PreTranslateMessage 中if (msg.message == WM_KEYDOWN && msg.message == VK_RETURN)
      return
      

  3.   

    if (msg.message == WM_KEYDOWN && msg.message == VK_RETURN)
      return TRUE;
      

  4.   

    在按钮上弹出,也可能在 PreTranslateMessage 中处理
    通过判断鼠标消息和位置,通过 WindowFromPoint 来判断是否点击到对话框上
      

  5.   

    if (msg.message == WM_KEYDOWN && msg.message == VK_RETURN)
      return TRUE;这样会把那些设置了多行显示的文本的文本框中的回车也屏蔽了,是不是还要先判断这个文本框是不是单行的,然后在屏蔽呢,可怎么判断他是单行编辑框啊。
      

  6.   


    if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
    {
    //取的缺省按钮的标识
    DWORD  def_id=GetDefID();
    if(def_id!=0)
    {
    //MSG结构中hwnd保存的是接受该消息的窗口句柄
    CWnd *wnd=FromHandle(pMsg->hwnd);
    char class_name[16];
    if(GetClassName(pMsg->hwnd,class_name,sizeof(class_name))!=0)
    {
    DWORD style=::GetWindowLong(pMsg->hwnd,GWL_STYLE);
    if((style & ES_MULTILINE)==0)//确保编辑框不是多行编辑框
    {
    if(strnicmp(class_name,"edit",5)==0)//将class_name和“edit”做比较
    //可以判断一个窗口是不是编辑框窗口
    {
    //def_id的低位是缺省按钮的标识
    GetDlgItem(LOWORD(def_id))->SetFocus();
    return true;
    //忽略该消息
    }
    }
    }
    }
    } //调用基类的处理函数
    return CDialog::PreTranslateMessage(pMsg);