如何使用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);

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

 

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

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

MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决.    HWND hWnd=::FindWindow(NULL,_T("Sphere"))...
  • lihui126
  • lihui126
  • 2015年01月31日 14:16
  • 6201

获取对话框句柄

简介: 获取主对话框和子对话框的句柄,子对话框通过FindWindow。 1.主对话框 CTcpAsynSDlg *pMainDlg = (CTcpAsynSDlg*)AfxGetApp()->G...
  • C_gyl
  • C_gyl
  • 2017年03月26日 15:23
  • 946

VC++ 句柄要及时关闭否则经常性调用句柄会持续增加

1、OpenProcess返回值一定要及时关闭CloseHandle。
  • PerfectToday
  • PerfectToday
  • 2015年07月09日 14:47
  • 1060

MFC 下自定义消息中获取 Tab Control的子对话框的 句柄

首先是自定义消息的步骤; 自定义消息 1.发送消息的对话框的.h文件中添加: #define WM_USERMESSAGE WM_USER+n //WM_USERMESSAGE为自己定义的消息名称,n...
  • u011001084
  • u011001084
  • 2015年11月17日 10:22
  • 1171

VC++实现spy++获取窗口句柄的功能

在WM_MOUSEMOVE 消息中实现如下代码: void CInputMethodTestDlg::OnMouseMove(UINT nFlags, CPoint point) { // TO...
  • wfmdyh
  • wfmdyh
  • 2017年07月04日 10:02
  • 436

获取弹出式窗口(对话框)句柄

原文:获取弹出式窗口(对话框)句柄 http://www.vbgood.com/thread-103057-1-1.html昨天遇到了这个问题;碰巧今天在MSDN上看到了这方面的内容,记录下。 假设...
  • dahual
  • dahual
  • 2011年04月16日 17:11
  • 2409

VC++MFC 调用DLL里的对话框资源

1、第一步创建一“MFC    AppWizard    (dll)”工程,接下来选择“Regular    Dll    using    shared    MFC    DLL”,点击“Fini...
  • ice197983
  • ice197983
  • 2007年03月21日 11:15
  • 3642

vc 基于对话框多线程编程实例——线程之间的通信

实例:
  • sj19890401
  • sj19890401
  • 2015年01月07日 11:45
  • 674

VC通用对话框

1.选择文件对话框    CFileDialog FileDialog(TRUE,NULL, NULL, OFN_READONLY|OFN_CREATEPROMPT,_T("Region File(*...
  • u011135902
  • u011135902
  • 2016年11月03日 14:42
  • 307

如何隐藏已知句柄的窗口

以隐藏计算器为例Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName ...
  • asftrhgjhkjlkttttttt
  • asftrhgjhkjlkttttttt
  • 2009年12月07日 09:54
  • 2761
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用VC对话框的句柄
举报原因:
原因补充:

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