社区
C语言
帖子详情
散分,句柄问题
devzhao
2003-04-09 06:05:07
1、什么是句柄?
2、为什么要用句柄?
3、怎样实现句柄?
4、如何利用句柄?
...全文
42
14
打赏
收藏
散分,句柄问题
1、什么是句柄? 2、为什么要用句柄? 3、怎样实现句柄? 4、如何利用句柄?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wshcdr
2003-04-11
打赏
举报
回复
就回答第一个句柄代表资源吧
比如位图,
andyfr1210
2003-04-10
打赏
举报
回复
我认为句柄其实就是指针,其目的是也就是为了封装。
THINKING IN C++中有说明。通常一个结构的声明要在头文件中,可是头文件大家都看得见,
为了隐藏这个结构里的声明,可以通过句柄,把其放入定义文件中。
devzhao
2003-04-10
打赏
举报
回复
我想问的是C++类的句柄,如给定一个类如何构造绑定该类的句柄
whupyf
2003-04-09
打赏
举报
回复
只知道每个窗口都对应唯一的句柄.
robin97
2003-04-09
打赏
举报
回复
有一点可以达到:编程的参数统一了
BlueSky2008
2003-04-09
打赏
举报
回复
1、什么是句柄? Mocrosoft说这个32位值叫**句柄,他就是句柄
2、为什么要用句柄?没有他,你就用不起来Mocrosoft给你的API和内裤。
3、怎样实现句柄? 只有Mocrosoft知道。
4、如何利用句柄? 一般用Create...得到,然后在所有需要的地方填上去。
oyd
2003-04-09
打赏
举报
回复
HWND不就是整数吗?整数与指针有区别吗?
#include <stdio.h>
void func()
{
printf("Hello world!");
}
void main()
{
void (*pvoid)();
int (*pint)();
int a;
pvoid=func;
(pvoid)();
pint=(int (*)())func;
(pint)();
a=(int)func;
//不明白这儿用什么语句才能调用
}
luyiping
2003-04-09
打赏
举报
回复
我想所谓句柄就是能唯一标示对象的参数吧
wyqiang
2003-04-09
打赏
举报
回复
我想我是知道句别
就是用来传数的哪个
sea_lover
2003-04-09
打赏
举报
回复
你可以看看《深度探索C++对象模型》中对句柄类的一些说法!
yyfzy
2003-04-09
打赏
举报
回复
UP&&学习
lcftc
2003-04-09
打赏
举报
回复
受M$的帮助文档以及很多Windows编程书籍的影响,大家对局柄比较普遍的认识是:句柄是一个整数,用以标识Windows对象,句柄不是一个指针……
而实际上,这些不过是M$进行数据封装的幌子而已,下面我们一起来分析一下HANDLE到底是什么。
请先到Windef.h找绝大多数句柄的定义:
DECLARE_HANDLE(HWND);
DECLARE_HANDLE(HHOOK);
……
DECLARE_HANDLE(HGDIOBJ);
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HBRUSH);
……
typedef HANDLE HGLOBAL;
typedef HANDLE HLOCAL;
……
OK, 现在大家跟我一起翻到Winnt.h,看看DECLARE_HANDLE和HANDLE到底是什么:
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef
struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;
哈哈,现在知道了吧,HANDLE就是PVOID,也就是无类型指针,
而DECLARE_HANDLE(HWND);就是:
struct HWND__ {
int unused;};
typedef struct HWND__ *HWND;
现在实际上都清楚啦,这些Handles都不过是指向struct的指针,至于这个struct的用处,连M$都说unused了,^o^
现在解释下M$这么做的意义,这就是所谓数据封装,你可以在你的程序中把M$的内部结构指针传来传去,可是你却不知道它到底指向的内容是什么,而且可以编个句柄的瞎话防止大家的质疑:)。而M$的程序大可以这么写:
#include <windows.h> //这个和大家用的一样
#include "windows_in.h" //这个是M$自用的,外人别想看到^o^
HSOMETHINGELSE DoSomething(HSOMETHING hSomething) {
struct RealSomething* p = (struct RealSomething*)hSomething;
//先强制类型转换成内部结构指针
……do something……
return (HSOMETHINGELSE)pRealSomethingElse;//强制类型逆转换
}
doer_ljy
2003-04-09
打赏
举报
回复
不知道!
这应该是标准答案吧!:)
bugfree
2003-04-09
打赏
举报
回复
看看这个:
http://www.parashift.com/c++-faq-lite/references.html#faq-8.7
数据结构 散列表
7. **退出系统**:退出系统时,通常会执行清理操作,如保存当前状态、关闭打开的文件
句柄
等,确保资源得到妥善处理。 在`散列表.cpp`这个文件中,我们可以期待看到实现这些功能的C++代码。它可能包括散列函数的定义...
CC++实习生笔试卷.doc
6. "高分求解"、"
散分
"常见于在线技术论坛,表示愿意付出较高分数求解
问题
。 四、文档阅读 MSDN文档关于系统调试的内容指出,内核调试器可以调试Windows CE中的应用和内核,与Visual Studio应用调试器不同。内核...
英伟达显卡温度获取.rar
3. 故障预警:异常的温度变化可能是硬件
问题
的早期迹象,及时发现有助于预防潜在故障。 二、C语言实现温度获取 1. 使用NVIDIA管理库(NVML):英伟达提供了NVML库,这是一个C接口,用于监控和控制GPU的状态,包括...
VC++下通过CryptoAPI对机要信息实行安全加密
- `CryptCreateHash`: 创建并初始化散列表。 - `CryptEncrypt`: 加密数据。 - `CryptDecrypt`: 对 `CryptEncrypt` 加密过的密文进行解密。 - `CryptDeriveKey`: 从基本数据中派生出密钥。 - `CryptDestroyKey`:...
MyFll Microsoft Visual FoxPro设计的扩展库
PostMessage 将消息投递到指定
句柄
的消息队列 ShowWindow 显示指定窗口 ShowWindowAsync 显示指定窗口 SetWindowLong 设置窗口的扩展样式 SetLayeredWindowAttributes 设置窗口效果 SetForegroundWindow ...
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章