首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • CRect和HRGN的区别 [已结帖,结帖人:syaomgg]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syaomgg
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-17 14:24:32 楼主
    为什么我自己继承的CWnd类中总是画不出这个异形窗口呢?CRect和HRGN在应用上究竟有什么区别呢?
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hhyttppd
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 13:49:461楼 得分:10
    CRect 就是一个普通的数据结构(类?)
    HRGN是资源句柄(由操作系统管理,数量有限)

    1 构造出异形HRGN(这个HRGN必须有效,并且不为空)
    2 SetWindowRgn
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lsldd
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 13:59:572楼 得分:20
    CRect顾名思义,只是个矩形
    HRGN是区域,有各种api函数可以创建任意形状的区域
    创建区域后,使用SetWindowRgn改变窗体区域
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Longinc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:02:543楼 得分:0
    帮顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lsldd
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:57:264楼 得分:0
    给你个资源,你自己分析下:
    http://d.download.csdn.net/down/486145/lsldd
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaopoy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 17:19:135楼 得分:0
    矩形区域和区域的句柄
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syaomgg
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-20 12:38:066楼 得分:0
    以上谢谢大家给我的指导,我明白了很多!
    我主要是想建一个不规则的窗口,但一直不能显示,起先以为是CRect类用的不对。在观察网上下的程序的过程中发现大家用的是CRgn进行区域的生成,而我用的是HRGN类型进行区域的生成。在改完CRgn类型后发现窗口就能生成了。有哪位能告诉我是什么原因吗?在此基础上再给贴子加分。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaopoy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-21 01:07:027楼 得分:10
    不熟悉,自己的看法:
    HRGN是个句柄,handler
    新建个句柄没有实例,自然不能显示了
    CRGN是个实例。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • redleaves
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-21 02:23:088楼 得分:60
    引用 6 楼 syaomgg 的回复:
    以上谢谢大家给我的指导,我明白了很多!
    我主要是想建一个不规则的窗口,但一直不能显示,起先以为是CRect类用的不对。在观察网上下的程序的过程中发现大家用的是CRgn进行区域的生成,而我用的是HRGN类型进行区域的生成。在改完CRgn类型后发现窗口就能生成了。有哪位能告诉我是什么原因吗?在此基础上再给贴子加分。。。

    不规则窗口在Windows下有两种方式可以实现,一种是用Region,一种是用Layered Window.
    看样子你用的是第一种.用这种方式,你只要生成一个适合的Region并SetWindowRgn就可以了.你说用CRgn是对的,而直接使用HRGN不对,那应该是你用的不对.再仔细检查一下Region的用法吧.

    CRect和HRGN的区别:
    CRect只是一个类,封装了对于RECT的操作.描述了矩形的对角,可以确定出矩形.
    HRGN是Region的句柄,相当于一个指向了Region对象的指针.但这个"指针"只能由操作系统识别.Region对象描述了一个区域,这个区域可以由多个不同形状/大小的对象经过各种方式的组合以后形成.而CRgn只是MFC里对这个句柄的封装,可以方便你的使用.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • android2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-21 09:12:479楼 得分:0
    不懂,up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pushregistration
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-21 09:12:4810楼 得分:0
    不懂,up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syaomgg
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-21 09:23:2411楼 得分:0
    引用 8 楼 redleaves 的回复:
    引用 6 楼 syaomgg 的回复:
    以上谢谢大家给我的指导,我明白了很多!
    我主要是想建一个不规则的窗口,但一直不能显示,起先以为是CRect类用的不对。在观察网上下的程序的过程中发现大家用的是CRgn进行区域的生成,而我用的是HRGN类型进行区域的生成。在改完CRgn类型后发现窗口就能生成了。有哪位能告诉我是什么原因吗?在此基础上再给贴子加分。。。

    不规则窗口在Windows下有两种方式可以实现,一种是用Region,一种是用La…

    这个意思我好像明白了很多!
    当时观察从网上下载的程序的时候,他就是直接用的HRGN进行区域的描画.自己也没多想就照着画瓢了,呵呵

    现在回想起来才明白为什么人家的程序用HRGN可以实现,而我的却不行:
    他只是在一个函数中应用,用完马上就显示.而我的却是在这个函数中生成,而在另一个函数中引用显示.
    这样就导致在该函数中生成区域时句柄是存在的,而当本函数结束时局部变量资源被释放,在别的函数中根本就不能再应用这个区域句柄了.
    我说的对吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zmlovelx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-21 09:46:0612楼 得分:0
    up~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • water_alliance
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-23 12:17:5113楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syaomgg
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-24 09:45:4114楼 得分:0
    怎么没人理我了?自己顶一个,呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaopoy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-26 23:05:0415楼 得分:0
    well
    局部参数只能在本函数以及本函数调用的下层router和proc中使用纳。
    LZ你的说法没错
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved