51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 2314|回复: 6

[资料] CWnd与HWND的区别与转换

[复制链接]
  • TA的每日心情
    耍酷
    9 小时前
  • 签到天数: 957 天

    连续签到: 2 天

    [LV.10]以坛为家III

    380

    主题

    1554

    帖子

    7294

    积分

    Rank: 9

    积分
    7294

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

    发表于 2016-6-23 10:06:18 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    一、区别
    HWND是句柄,CWnd是
    MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.
    HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。   
    CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。


    二、如何得到窗口对象指针CWnd * pCWnd
    1,在窗体里,直接用 this->,//this就是本窗体的窗口对象指针
    2,主窗体的类对象指针:AfxGetApp()->m_pMainWnd->,  //AfxGetApp()->m_pMainWnd就是主窗体的窗口对象指针
    3,pCWnd=GetDlgItem(ID_EDIT_NAME);//GetDlgItem 函数可以得到某个
    控件的窗口对象指针

    三、如何得到窗口句柄 HWND Handle
    1,Handle=this->m_hWnd
    2,GetDlgItem(ID_EDIT_NAME);
    3,Handle=::GetDlgItem(this,IDC_STATIC_MODE); //得到本窗体内某个控件的句柄


    四、转换
    CWnd * pCWnd;
    HWND Handle;
    pCWnd=FromHandle(Handle);
    Handle=GetSafeHwnd(pCWnd);

    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
  • TA的每日心情
    害羞
    2017-11-30 17:38
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    0

    主题

    24

    帖子

    480

    积分

    Rank: 6Rank: 6

    积分
    480
    发表于 2017-10-10 20:26:52 | 显示全部楼层
    你写啦好多的容易混淆的概念的辨析。不错不错

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    叹气
    7 天前
  • 签到天数: 593 天

    连续签到: 1 天

    [LV.9]以坛为家II

    30

    主题

    204

    帖子

    1888

    积分

    Rank: 7Rank: 7Rank: 7

    积分
    1888

    活跃会员优秀版主切换助手验证会员

    发表于 2018-1-22 12:25:01 | 显示全部楼层
    好东西,分享一下

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    可怜
    2020-8-12 13:46
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    2

    主题

    20

    帖子

    462

    积分

    Rank: 2Rank: 2

    积分
    462
    发表于 2018-3-19 10:36:55 | 显示全部楼层
    学习了谢谢

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    2020-8-21 13:43
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]常住居民II

    10

    主题

    90

    帖子

    262

    积分

    Rank: 2Rank: 2

    积分
    262

    热心会员

    发表于 2018-4-18 17:18:45 | 显示全部楼层
    楼主,你好,请问一下,GetDlgItem(IDC_STATIC_MODE),可以得到这个控件的窗口对象指针;::GetDlgItem(this,IDC_STATIC_MODE),可以得到本窗体内这个控件的句柄;那GetDlgItem(IDC_STATIC_MODE)->m_hWnd是不是与::GetDlgItem(this,IDC_STATIC_MODE)等价呢?都是 获取这个窗体内的IDC_STATIC_MODE这个控件的句柄吗?

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    9 小时前
  • 签到天数: 957 天

    连续签到: 2 天

    [LV.10]以坛为家III

    380

    主题

    1554

    帖子

    7294

    积分

    Rank: 9

    积分
    7294

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

     楼主| 发表于 2018-4-18 17:48:11 | 显示全部楼层
    djx808 发表于 2018-4-18 17:18
    楼主,你好,请问一下,GetDlgItem(IDC_STATIC_MODE),可以得到这个控件的窗口对象指针;::GetDlgItem(th ...
    原始声明如下:
    1. CWnd* GetDlgItem(int nID) const;
    2. void GetDlgItem(int nID, HWND* phWnd) const;
    复制代码
    还有一个是全局函数
    1. HWND WINAPI GetDlgItem( _In_opt_ HWND hDlg, _In_ int nIDDlgItem);
    复制代码
    通过查看对比,其实目标的句柄都是一样的,无非就是有的参数是指针,有的就是对象本身。
    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
  • TA的每日心情
    开心
    2020-8-21 13:43
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]常住居民II

    10

    主题

    90

    帖子

    262

    积分

    Rank: 2Rank: 2

    积分
    262

    热心会员

    发表于 2018-4-18 18:12:34 | 显示全部楼层
    您好,您说的没错,但是GetDlgItem 函数可以得到某个控件的窗口对象指针;Handle=this->m_hWnd这个是得到窗口句柄;那GetDlgItem()->m_hWnd是不是可以得到这个控件的句柄呢?而Handle=::GetDlgItem(this,IDC_STATIC_MODE); //得到本窗体内某个控件的句柄,所以应该都是获取那个控件的句柄吧?

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    有问题需要咨询站长?| 申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

    快速回复 返回顶部 返回列表