关于MFC窗口句柄,窗口ID,窗口指针

一、关于窗口句柄

  首先讲一下MFC中句柄的概念,句柄是一种资源标识,他是一个整数,由操作系统分配,用户(程序员)没法指定。举个例子来说,当你创建了一个对话框,那么系统就会为这个对话框分配一定的资源,并且为这个资源分配一个整数来标识这块资源,那么这个整数就是句柄。 什么是资源,资源当然就是内存,堆栈。对话框的所有资源封装在一个类中,形成自己的数据结构,这个数据结构占用系统的一块内存。

  其次,句柄用HANDLE表示, 定义方式,HANDLE hWnd;  其实句柄的实现方式就是指针, 句柄是一种指针的指针,系统中应该会有一张资源标识符表, 资源标识符表中放的应该就是指向资源的指针,通过句柄可以找到这个存放资源指针的地方。

  最后,窗口句柄的使用。常用的是通过窗口句柄投递一个消息给窗口,使得窗口可以响应一个消息。比如:

  ::SendMessage(GetDlgItem( ID )->m_hWnd,WM_ONEMSG,(WPARAM) RXBuff, (LPARAM) type);

二、关于窗口ID

  窗口ID是窗口标识的一种别名,有程序员自己定义,比如:IDD_MONITOR_DIALOG。

三、关于窗口指针

我认为窗口指针是指向对话框资源的指针,窗口的资源封装在一个类中,窗口指针就是指向这个类的指针,通过这个指针可以访问类中所有的资源(各种成员函数,成员数据)。获取窗口指针的方法:GetDlgItem( ID ), 返回类型是CWnd *,使用的时候需要强制类型转换为自己的类类型指针。比如:窗口类名为CTestDlg, 窗口ID为IDD_MONITOR_DIALOG。那么, CTestDlg *p = (CTestDlg*)GetDlgItem( IDD_MONITOR_DIALOG );通过指针p就可以访问类中的各种资源了。 

  控件其实也是一种窗口,所以以上的概念也适合控件。

 

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值