关闭

如何使用VC对话框的句柄

标签: 对话框vc
415人阅读 评论(0) 收藏 举报
分类:

我们在开发VC程序的时候经常会遇到在一个类A的对象AObjectgetUserNameFromDlg方法中访问一个特定对话框上的某一文本框的数值.

  通常情况我们可能会如下声明该方法

   public CString getUserNameFromDlg(CMyDlg* mMydlg)

   {

      mMydlg->GetDlgItem(IDC_USERNAME);

       ........

    }

  然后我们在CMyDlg的对象myDlg的onClickButton()中如下调用前面的方法

  AObject.getUserNameFromDlg(this);

 

  上面的开发思路如果只针对一个对话框而言是没有问题的,但是如果我们想在n个对话框类中(注意这里是对话框类而不是对象)使用getUserNameFromDlg方法,我们是否需要定义n个getUserNameFromDlg方法而这些方法的唯一区别就是参数是N种不一样的对话框类?

  答案显然是否定的,因为那样做过于复杂,我们可以采取获取对话框句饼的方式来很好的解决这个问题.

  刚才的getUserNameFromDlg可以如下声明

  public CString getUserNameFromDlg(HWND dlg)

  {

      CWnd* pCWndNULL;

      pCWnd=CWnd::FromHandle(dlgDemo);
      CEdit* medit=(CEdit*)pCWnd->GetDlgItem(IDC_EDIT1);
      CString abc="";
      medit->GetWindowText(abc);
      return abc;

   }

  而我们在dlg的按纽处理程序里可以这样的简单调用

  CCommonUtil cUtil;
  cUtil.getUserNameFromDlg(this->m_hWnd);

 如此以来我们就可以避免了第一种方法的烦琐.

 

 对话框之间的信息传递是程序业务流程流转的基础,我们应该重点关注其应用,并做熟练使用.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:442次
    • 积分:21
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档