HWND & CWnd

fox2002 2001-11-12 10:45:47
请问高手:HWND 与 CWnd 有何区别?怎样定义一个HWND对象 |指针?
...全文
418 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chensan 2001-11-15
  • 打赏
  • 举报
回复
good :jiangping
awanghero
  • 打赏
  • 举报
回复
HWND用来标识一个Windows对象,准确的说是一个Windows窗口对象(一般由API函数创建的)。
CWnd用来表示一个C++对象。在VC中,它用来封装一个Windows窗口对象,它有一个HWND成员来标识Windows对象。
xtky_limi 2001-11-12
  • 打赏
  • 举报
回复
同上
yinx 2001-11-12
  • 打赏
  • 举报
回复
同意awanghero(念天地之悠悠,独怆然而悌下!)!
awanghero 2001-11-12
  • 打赏
  • 举报
回复
因此,我可以这么说,HWND 是指向一个描述一个窗口内存的句柄!
CWnd则是用类封装 起来的操作窗口行为的函数集
awanghero 2001-11-12
  • 打赏
  • 举报
回复
CWnd和HWND 是包含和被包含的关系!
CWnd里有一个成员变量叫m_hwnd,它你声明一个CWnd wnd是,它的成员m_hwnd为空,这时你要是调用一个窗口操作函数(因为它会检果这是否是一个有效的窗口,用ASSERT(m_hwnd)),它会出错,当你调用了create函数后,系统就会为CWnd 分配一块内存,来描述生成窗口的属性,m_hwnd就是指向这块内存的名柄!在windows里,所有的GDI对蟓都是类似于这样的模式!
xiumu 2001-11-12
  • 打赏
  • 举报
回复
HWND 是窗口句柄,用于表示窗口,可以理解为是窗口的ID,创建窗口时,会返回窗口句柄。
要操作某个窗口时,需要提供这个参数,让应用程序知道该操作哪个窗口。
CWnd是MFC封装的窗口类,提供了窗口操作函数,m_Hwnd是它的成员变量,CWnd本身关联到m_Hwnd
标识的窗口,所以它提供的函数,一般不需要HWND这个参数。
jason802 2001-11-12
  • 打赏
  • 举报
回复
HWND是一个windows定义的数据类型.

CWnd是一个类.CWnd有一个成员变量是m_hwnd,就是HWND型的.

HWND hwnd; //就这样定义

hwnd = AfxGetMainWnd( )->m_hwnd; //就得到主窗口的hwnd了



whiskers 2001-11-12
  • 打赏
  • 举报
回复
HWND 是SDK用的
CWnd 是MFC用的,本质是一样的
定义
HWND hwnd;
hwnd = GetSafeHwnd();
sgr0426 2001-11-12
  • 打赏
  • 举报
回复
同上

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧