如何使用VC对话框的句柄

转载 2013年12月03日 16:25:37

我们在开发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);

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

 

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

VC 如何在一个对话框中获得另一个对话框句柄()

VC 如何在一个对话框中获得另一个对话框句柄(一种方法) 当我在编程时,遇到如何在一个对话框(CCommonTaskDlg)中获得另一个对话框(CMyDownloadDlg)的句柄时遇到了问题,那么...

MFC中获取各个窗口(对话框)之间的指针、对象、句柄

MFC中获取各个窗口(对话框)之间的指针、对象、句柄 MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决.    H...

VC_各种情况下的窗口句柄的获取

  • 2012年04月28日 16:36
  • 31KB
  • 下载

c++ vc6 句柄类

  • 2012年03月22日 14:15
  • 7KB
  • 下载

VC各种情况下的窗口句柄的获取

AfxGetMainWnd 获取自身窗口句柄HWND hWnd = AfxGetMainWnd()->m_hWnd;GetTopWindow函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直...

VC中获取窗口句柄的各种方法

AfxGetMainWnd AfxGetMainWnd获取自身窗口句柄 HWND hWnd = AfxGetMainWnd()->m_hWnd; GetTopWindow 函数功能:该...
  • oket007
  • oket007
  • 2013年08月09日 09:11
  • 404

VC++的窗口句柄和窗口ID

http://blog.sina.com.cn/s/blog_4cd5d2bb0100nb5d.html   VC++的窗口句柄和窗口ID(2010-10-22 23:42:28) ...

VC怎么通过进程ID得到窗口句柄

我试过网上的好多办法,到我这都不管用,气之又气.. 我通过CreateToolhelp32Snapshot 来枚举所有进程,接下来再通过Process32First以及Process32Next查看...

VC 获取控制台窗口的句柄(hWnd)

在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用VC对话框的句柄
举报原因:
原因补充:

(最多只允许输入30个字)