zoukankan      html  css  js  c++  java
  • MFC的OnInitDialog的返回值(转载)

    转载:https://www.cnblogs.com/LouMengzhao/p/6041464.html

    转载:http://www.myexception.cn/vc-mfc/1742700.html

          工作中没有小事:点石成金,滴水成河,只有认真对待自己所做的一切事情,才能克服万难,取得成功。

          OnInitDialog的返回值告诉windows如何处置输入焦点,如果返回 TRUE,则windows将输入焦点指派给制表键控制次序中的第1个控件。如果要把输入焦点指派给其他控件,如IDC_EDIT,则需要调用控件的SetFocus函数,并且OnInitDialog的返回值为FALSE(禁止系统自己设置输入焦点)。通过将控件ID传递给GetDlgItem,可以获得调用SetFocus所需的CWnd指针,例子如下:

    一般默认的是下面的返回值:

         return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

    指定焦点:

         GetDlgItem(IDC_BUTTON1)->SetFocus();

         return FALSE;

      上文提到的制表键控制次序,指的是一个窗口程序你按tab键的时候输入焦点会发生变化(按钮上的虚线框 编辑框出现光标闪烁),tab序为1的时候,窗口显示默认输入焦点就在tab序为1的控件上。

    如何查看制表键次数:快捷点是 ctrl+D 

    用户自定义让指定控件获取焦点核心代码是:

      GetDlgItem(IDC_BUTTON1)->SetFocus();//指定控件
    
       return FALSE;

    我们想要的结果是:

     但我照着上面代码测试发现:

    没效果,虽然按钮已获得焦点,但焦点的虚线框不显示。。。

    但你来回切换当前活动窗口时,按钮边框又能高亮蓝色,但这不是我们想要的结果,我们想对话框初始化完毕,是哪个控件获取焦点,就是哪个控件边框蓝色高亮。

    于是乎最终的解决办法是:在按钮获取焦点的同时修改按钮风格

    CButton *pbtn=(CButton*) GetDlgItem(IDC_BUTTON1)->SetFocus();//指定控件
    pbtn->SetButtonStyle(BS_DEFPUSHBUTTON, 0); //设置【默认按钮】样式  方法一 
    //::SendMessage(pbtn->m_hWnd, BM_SETSTYLE, BS_DEFPUSHBUTTON, TRUE); //设置【默认按钮】样式 方法二
    return FALSE;
  • 相关阅读:
    Qt 模态对话框不模态的问题
    Qt layout更新控件的问题
    javamail中使用一些问题的解决方案
    mysql too many connection解决方法
    hibernate的三种状态
    hibernate的几种主键
    hibernate的crud操作
    ajax简单校验用户名是否存在
    json的简单使用
    ajax读取服务器文本
  • 原文地址:https://www.cnblogs.com/chechen/p/12902486.html
Copyright © 2011-2022 走看看