MFC 获取对话框的指针

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

对于MFC的对话框,要对其操作必须先获取到它的对象指针,下面是对对话框的对象指针的获取方式的解读
1.获取主窗口的对话框的对象指针

CWnd* pWnd = AfxGetApp()->GetMainWnd();

2.获取指定对话框的对象指针

CWnd* pWnd = FindWindow(NULL, _T("对话框的名称"));

3.ID , 指针, 句柄三者的转化

ID--HANDLE--HWND三者之间的互相转换 
id->句柄-----------hWnd = ::GetDlgItem(hParentWnd,id); 
id->指针-----------CWnd::GetDlgItem(); 
句柄->id-----------id = GetWindowLong(hWnd,GWL_ID); 
句柄->指针--------CWnd *pWnd=CWnd::FromHandle(hWnd); 
指针->ID----------id = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID); 
GetDlgCtrlID(); 
指针->句柄--------hWnd=cWnd.GetSafeHandle() or mywnd->m_hWnd;
HICON->ID--------HICON hIcon = AfxGetApp()->LoadIcon(nIconID);
HICON hIcon = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(nIconID));

附注:获得窗体句柄三种方法

1.HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)
2. HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)
3.HWND WindowFromPoint(POINT& Point)//获得当前鼠标光标位置的窗体HWND



作者:彦子凡
链接:https://www.jianshu.com/p/789138dfad79
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

MFC - 获取MainFrame,Doc,View,App等指针的方法 一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题。 下面这节内容主要是一般的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。 首先一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通过类中的函数向其他类或者函数中发指针,以便于在非本类中操作和使用本类中的功能。在View中获得Doc指针 CYouSDIDoc *pDoc=GetDocument(); 注意:SDI模 阅读详情

相关推荐

MFC View类对话框类之间指针的相互获取

这里主要是总结一下我自己用到过的不同类之间指针获取方法: 1.基于对话框的应用程序,通过菜单命令来显示一个模态对话框: 该模态对话框如何获取对话框指针,在模态对话框类需要调用主对话框处添加如下代码: CVersionManageDlg *m_dlg=(CVersionManageDlg *)this->GetParent();//获取CVersionManageDlg类主对

zhonglixianyun的博客 3084

MFC获取各个窗口(体)之间的指针(对象)

MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决.    HWND hWnd=::FindWindow(NULL,_T("Sphere"));      //得到对话框句柄    C***Dialog* pWnd= (C***Dialog*)C***Dialog::FromHandle(hWnd); //由句柄得到对话框的对象指针

Guo_guo 2万+

MFC TabControl插件 非对话框类中获得主窗口和子窗口的指针

前言 在非对话框类中无法使用如(CParentDlg*)或者(CChildDlg*)进行强制转换。 所以一般通过一下来代码来实现通过获取CParentDlg的指针进行操作: CWnd* m_pParentDialog = AfxGetApp()->m_pMainWnd; //Get parent dialog pointer directly CEdit* pEdit = (CEdit*)m_pParentDialog->GetDlgItem(/*Edit Item ID*/); pEdit-&

lmnwsy的博客 677

mfc 如何设置光标的位置

好像有两种办法,第一种是在对话框编辑器中,按ctrl+D,单击要获得焦点的控件,第二种办法是,在initdilog时,setfous(),然后在最后return TRUE,默认是返回FALSE

yangpan011的博客 5009

mfc 小技巧之 获取对话框句柄 对话框指针

1、CWnd *pWnd   =  AfxGetMainWnd(); 获取对话框指针; 获取住对话狂句柄 HWND hHwnd = pWnd->m_hWnd;   父窗口法:GetParent();   在类的成员函数 中如果使用与MFC类库相同名的SDK API 则需在函数名前添加:: ::作用将作用域改为全局。 2、

wangluozhangleilei的专栏 2417

MFC 获取当前对话框生成的对象指针

在多个对话框的项目,有时候需要获取其中一个对话框的对象,然后调用其中的成员函数

u011244446的专栏 2427

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

https://blog.csdn.net/lihui126/article/details/43340695 MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决. HWND hWnd=::FindWindow(NULL,_T("Sphere")); //得到对话框句柄 C***Dialog* pWnd= (C...

active2489595970的博客 2483

MFC获取对话框指针的方式

CWnd* pMainDlg = AfxGetMainWnd(); CWnd* pMainDlg1 = AfxGetApp()->GetMainWnd(); CWnd* pMainDlg2 = theApp.m_pMainWnd; CWnd* pMainDlg3 = FindWindow(NULL, "dynamicDialogTest");

weixin_40569034的博客 2157

mfc 获取对话框指针(在全局函数中使用对话框类函数)

AfxGetMainWnd()取得主对话框的基类CWnd*指针,然后强制类型转换为对话框类型 或者使用 AfxGetApp()-> m_pMainWnd就是AfxGetMainWnd(),同样强制转换即可使用对话框类函数

u013412018的博客 3047

MFC类与类之间的访问与调用(单文档应用程序+多文档应用程序)以及在一个对话框获取另一个对话框指针

在实际的应用中,经常需要在多个类之间交换数据,调用另一个类中的函数,框架提供一系列的函数用于多个类之间的交互 1.单文档应用程序的类与类之间的访问 (1)在所有类中获取App指针: CWin *pApp=AfxGetApp(); CXXXApp *pMyApp=(CXXXApp*)pApp; (2)所有类中获取CMainFrame类指针: CMainFrame *pFrame=(...

HW140701的博客 6513

MFC多文档--在对话框获取视图指针

第一步: 先在对话框的头文件(***Dlg.h)中定义两个变量: CMDIChildWnd* pChild; CTempCur* pView; //CTempCur是要获取视图的类名 第二步: 在***Dlg.cpp中添加以下两条语句: pChild = (CMDIChildWnd*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveF

a443838772的博客 1201

MFC中获得其他类的指针

要获得另一窗体视图类中的某控件指针,首先获得视图指针是难点,获的视图指针再用GetDlgItem函数就容易可以获得控件指针获得各种视图指针如下1) 在View中获得Doc指针2) 在App中获得MainFrame指针3) 在View中获得MainFrame指针4) 获得View(已建立)指针5) 获得当前文档指针6) 获得状态栏与工具栏指针7) 获得状态栏与工具栏变量8) 在Mainframe

guanglincheng的专栏 680
上一篇: 双阈值法二值化操作
下一篇: MFC鼠标相关操作说明
smrynet
博客等级 码龄17年 2粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值