社区
图形处理/算法
帖子详情
HWND句柄对象在离开它的作用域时,会不会自动删除?
张佩
2005-04-29 01:35:18
比如,有下面的例子,在一个类方法中:
CXXWnd::Fun1()
{
HWND hWnd = CreateWindow(...);
...
return;//请问,我这里是否应先用DestroyWindow(hWnd)将hWnd释放掉?
}
...全文
73
2
打赏
收藏
HWND句柄对象在离开它的作用域时,会不会自动删除?
比如,有下面的例子,在一个类方法中: CXXWnd::Fun1() { HWND hWnd = CreateWindow(...); ... return;//请问,我这里是否应先用DestroyWindow(hWnd)将hWnd释放掉? }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
thisisll
2005-04-29
打赏
举报
回复
你要是不要了就释放
要是要的话
就不释放了
当然在该释放的时候也还是要释放的
织梦科技
2005-04-29
打赏
举报
回复
应先用DestroyWindow(hWnd)将hWnd释放掉
RINGSDK包含界面库和图象库。
RINGSDK包含界面库和图象库。 本项目为编译环境为VC6,需要先安装platform sdk.不断修改中,
会
陆续上传其他相关文档及DEMO 设置: VC6菜单tools->Options,选择Directoris页,把include,lib目录加入到相应文件列表,如果要调试,需要把libsrc目录下的各个子目录加入到Source files文件列表中。 工程依赖几个第三方库,需要先编译livsrc\free_lib下几个目录的工程,然后打开ringsdk.dsw编译。工程都已经设置好了,编译即可。 由于VC的智能提示不能识别界面库里的宏,因此建议安装VA(Visual.Assist) 创建基于RingSDK的工程: 新建一个Win32 Application的工程,不要让VC写任何代码,空的工程。然后选择菜单Project->settings..., 选择C/C++页,Category选择Code Generation,然后在Use run-time library选择: DEBUG选择Debug Multithreaded RELEASE选择MultiThreaded 工程设置完毕,然后可以加入CPP和H文件了。 类库使用: 1、头文件: 头文件包含"ringmain.h"就可以,如果要使用图象库,还需要包含"ringdib.h" 2、窗口类声明: 窗口定义为如下格式: BEGIN_SETUPWINDOW(窗口名,窗口类型) BINNDID(对话框ID) //当窗口类型是对话框才需要写这个宏,且是可选的,即不写也可以 BEGIN_DEF_VAR(初始化标记) //这里定义类成员数据 END_DEF_VAR //这里定义类成员函数 //定义窗口消息处理函数 BEGIN_DEFMSG DEFMSG(消息代码) DEFMSGEX(自定义消息处理函数名) ... DEFCMD(命令处理函数名) ... DEFNOTIFY(通知消息代码) END_DEFMSG(窗口名) END_SETUPWINDOW(窗口名) 这里对上面代码中的中文进行说明: 窗口名:窗口名同
时
也是该窗口类的
对象
名,比如窗口名为MainWindow,则该窗口类名为RingWnd_MainWindow, 同
时
声明了RingWnd_MainWindow* MainWindow=NULL; 以后只要调用MainWindow = NewRingObj(MainWindow);然后MainWindow就可以使用了。 以上代码相当于: class RingWnd_MainWindow { ... } RingWnd_MainWindow* MainWindow=NULL; 类名可以用RINGCLASS(窗口名)宏来得到 窗口类型:为IS_WINDOW,IS_MDIFRAME,IS_MDICHILD,IS_DIALOG,IS_PROPPAGE,IS_PROPSHEET这几个值之一,一看名称就知道,不需要多讲了。 其实这个只是声明了窗口类是从哪个类继承。 初始化标记:为NEED_INIT和NO_INIT两个值之一,指定了是否需要成员数据的初始化,一般成员数据的初始化可以在WM_CREATE消息里完成, 如果需要事先初始化,可以指定NEED_INIT,但是需要在CPP文件实现一个INITWINDOW(窗口名)的函数,进行初始化。 这个BEGIN_DEF_VAR(初始化标记)和END_DEF_VAR是可选的,即可以不写这两个宏,一样可以声明成员数据或函数。 消息代码:窗口消息代码,例:WM_CREATE 自定义消息处理函数名:响应自定义消息的处理函数,这个可以随便取名,例:OnCustomMessage 命令处理函数名:响应菜单命令或控件命令的处理函数,这个可以随便取名,例:OnOpenFile,OnButton1Click 通知消息代码:控件的通知消息代码,例:LVN_SELECTCHANGE 对话框ID:当窗口类型是对话框才需要写这个宏,且是可选的,即不写也可以。写了这句,对话框创建
时
可以不写参数,例: BEGIN_SETUPWINDOW(DlgAbout,IS_DIALOG) BINDID(IDD_ABOUT) ...
映射窗口
句柄
对象
话题引入:在C语言
时
代,当人们使用纯粹的C开发windows应用程序
时
,只需要通过窗口
句柄
HWND
【
HWND
是WND的内存
句柄
,而WND是Windows是一个内部私有数据结构,存储着窗口的相关信息:尺寸信息、标题信息等。一般来说开发人员无法访问这个数据结构,不过可以以
HWND
为参数调用windows的API函数如:GetWindowRect、GetWindowText等获得对其的访问】即可完成有关窗口的操作。MFC类是C++类机制,MFC的类通过C++的
对象
方法将窗口的
句柄
封装起来。存在着窗口句
句柄
类 windows核心
对象
首先,你要明白Windows
对象
和C++
对象
的区别。 C++
对象
(即MFC类CWnd)实际上并没有把整个Windows
对象
都包装在其中,它只是有一个窗口
句柄
。(在MSDN上查看CWnd类的成员变量,确实只有一个
HWND
hWnd
,成员函数有Attach()和Dettach()、Create()等)。这个窗口
句柄
如果指向一个实际存在的窗口
对象
,那么这个C++
对象
就是有效的,否则这个MFC
对象
是
获取对话框
句柄
对话框指针
获取主对话框指针;获取住对话狂
句柄
HWND
h
Hwnd
= pWnd->m_
hWnd
;父窗口法:GetParent();在类的成员函数中如果使用与MFC类库相同名的SDK API 则需在函数名前添加::::作用将
作用域
改为全局。2、每个窗口类都有一m_
hWnd
的成员变量,对话框也不例外。要想在程序运行
时
,给对话框发送一特定消息,可以直接使用:::SendMessage(m_
hWnd
,WM_COMMA
映射窗口
句柄
对象
(转)
作者: translated by zhkza99c 话题引入:在C语言
时
代,当人们使用纯粹的C开发windows应用程序
时
,只需要通过窗口
句柄
HWND
【
HWND
是WND的内存
句柄
,而WND是Windows是一个内部私有数据结构,存储着窗口的相关信息:尺寸信息、标题信息等。一般来说开发人员无法访问这个数据结构,不过可以以
HWND
为参数调用windows的API函数如:GetWindowRect、
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章