解决方案 »

  1.   

    用ModifyStyle()函数,增加BS_DEFPUSHBUTTON样式
      

  2.   


    那么怎么获取原来的ModifyStyle中的值呢,以便我可以将原来的值与BS_DEFPUSHBUTTON进行或运算
      

  3.   

    根据button的id  setfocus可以吗
      

  4.   

    我觉得setfocus也可以吧。
    onshowwindow
      

  5.   

    用ModifyStyle函数要怎么写,我不需要按钮获得焦点,焦点是在文本框我现在写成:((CButton*)GetDlgItem(IDC_NEXT))->ModifyStyle(BS_DEFPUSHBUTTON, 0);
    ((CButton*)GetDlgItem(IDC_MYOK))->ModifyStyle(0, BS_DEFPUSHBUTTON);可是按钮并没有被改变,可是默认按回车还是IDC_NEXT这个按钮在响应
      

  6.   

    对你的对话框类右键(假若为对话框类为Cxf)->Add windows message handler->PreTranslateMessage
    在里面编辑代码如下:
    BOOL Cxf::PreTranslateMessage(MSG* pMsg) 
    {
     // TODO: Add your specialized code here and/or call the base class
    if(VK_RETURN   /*(这里是你想要设置的快捷键,在这里VK_RETURN是回车的意思,想要设置其他的就去搜网上以下虚拟按键,换成其他就行)*/   ==pMsg->wParam)
    {
    OnButton8();//这里是你对话框上某个button的响应函数名
    return 1;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  7.   


    这种办法可以间接实现,可是我想要设成默认按钮为什么不行:
    ((CButton*)GetDlgItem(IDC_NEXT))->ModifyStyle(BS_DEFPUSHBUTTON, 0);
    ((CButton*)GetDlgItem(IDC_MYOK))->ModifyStyle(0, BS_DEFPUSHBUTTON);另外图中的“继续”按钮是一个默认按钮,我现在焦点是在文本框,但按钮上也有一个蓝色边框来提示用户这个按钮是默认的
    可如果用你的方法功能上可以实现,但还有些效果还是表现不出来,所以直接用代码设置默认按钮要怎么写呢?
    我上面写的怎么没有效果,是不是没写对
      

  8.   

    发送DM_SETDEFID 消息
    ::SendMessage(m_hWnd, DM_SETDEFID, (WPARAM)IDC_BUTTON1, 0);
    https://msdn.microsoft.com/en-us/library/ms645413%28VS.85%29.aspx
      

  9.   

    楼上可以或者楼主代码改成这样
    ((CButton*)GetDlgItem(IDC_MYOK))->ModifyStyle(0, BS_DEFPUSHBUTTON);
    ((CButton*)GetDlgItem(IDC_MYOK))->SetFocus();
    改成默认按钮后使其获取焦点