通过全局句柄(extern HWND)访问其他类

一般我们是通过定义一个类的对象来访问类的成员变量及函数的。这比较简单,比如:
CPage1 m_page1;
然后就可以通过m_page1访问CPage1类中的定义的函数 比如:m_page1.Add(2,3);

但是如果需要再CPage1类中访问主窗口类中的函数该怎么办?
我们可以通过句柄来访问。

1.首先在Test.h(主程序头文件) 或StdAfx.h中定义也行

extern HWND g_hWnd;

2.在TestDlg.cpp中确保Test.h头文件被引用,并定义

HWND g_hWnd;

3.在CTestDlg::OnInitDialog()中

g_hWnd=m_hWnd;

好了 在任何地方如CPage1中引用如:

((CTestDlg*)FromHandle(g_hWnd))->m_page1.ShowWindow(SW_HIDE);

当然因为g_hWnd也是程序主窗口的句柄 所以g_hWnd也可以写成AfxGetMainWnd()->m_hWnd

这种方法在相同类中中比较常见。比如定义了CPage1、CPage2、CPage3等等类。他们相互之间引用通过句柄是一种比较方便的办法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值