如何使用VC对话框的句柄

1 篇文章 0 订阅
1 篇文章 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);

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值