社区
C语言
帖子详情
散分,句柄问题
devzhao
2003-04-09 06:05:07
1、什么是句柄?
2、为什么要用句柄?
3、怎样实现句柄?
4、如何利用句柄?
...全文
79
14
打赏
收藏
散分,句柄问题
1、什么是句柄? 2、为什么要用句柄? 3、怎样实现句柄? 4、如何利用句柄?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
英伟达显卡温度获取.rar
该工具可以检测英伟达显卡温度,纯C语言实现,根据该工具可以实现方法可以开发出英伟达显卡其他指标的实现,如GPU占用率,GPU现存等
MyFll Microsoft Visual FoxPro设计的扩展库
此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。 此库在第一次打开时自动添加智能感应功能已关闭。请在打开后,使用FllAddFoxCode()向智能感应库添加所有的函数原型(需要VFP7以上),此库存所有函数使用VFP推荐的命名规则,一般可以根据函数名和知能感应的提示参数来推测参数及返回值。 开发环境可以使用FllHelp()函数来检查函数信息: 取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.) 显示Fll的版:?FllGetVersion() 添加智能感应代码:FllAddFoxCode() 版本信息:由于不定期更新,请及时核对版本(右键属性),版本为X.X.X.X,第一位为主版本号,第二位为函数个数,第三位为发布的年份,第四位为日期。当前版本为:1.179.9.811 版权:你可以自由使用、散发此函数库及此帮助,包括应用于你的商业软件中。在转发时应注意帮助文件于函数库和帮助同在。不得对软件进行破解、反编译等破性或逆向工程。MyFll作者不承担可能由于技术原因或失误给你带来的错误或损失。发现错误可以与作者取得联系共同改进。 感谢:我的帮助论坛http://www.myf1.net/bbs 梅子论坛 http://www.meizvfp.com/bbs 感谢:各位为Myfll做测试、编写帮助的热心网友。 作者:木瓜 ljyit@163.com 函数列表: 硬件相关函数: GetDiskSerial 读取指定硬盘的序列号 GetCpuId 读取CPU的序列号 GetMAC 读取网卡的MAC地址 GetVolumeNumber 读取指写磁盘的卷标 IsDiskInDrive 检查指定磁盘是否就绪 GetPort 读取系统的串口、并口 ComOpen 打开串口 ComWrite 向串口输出信息 ComRead 从串口读取信息 ComClose 关闭串口 GetGUID 获取全球唯一ID AEthernet 枚举网卡的所有信息 加密解密函数: MD5File 计算一个文件的MD5效验和 MD5String 计算一个字符串的MD5效验和 CRC32File 计算一个文件的CRC32效验和 CRC32String 计算一个字符串的CRC32效验和 des 采用DES算法加密或解密一个字符串,长度为8位 des16 采用DES算法加密或解密一个字符串,长度为16位 des24 采用DES算法加密或解密一个字符串,长度为24位 EnDeString 双向加密解密字符串的函数 Encrypt 双向加密解密字符串 RSACalc RSA计算函数 RSAGen 生成随机RSA密钥函数 RSACmp 比较两个十六进制值是否相等 URLEncode URL编码 URLDecode URL解码 QPEncode Quoted-Printable QP编码 QPDecode Quoted-Printable QP解码 压缩解压函数: Zip 压缩文件 UnZip 解压文件 UnZipFile 解压单个文件 ZipInfo 测试一个文件是否在压缩文件中存在 ZipFileToStr 将压缩文件中的文件解压到变量 ZipAFile 将zip文件中的文件信息生成的数组 CompressString 压缩一个字符串 DeCompressString 解压字符串 数据库: CursorToStr 将Cursor生成变量 ChangesToStr 将Cursor的变动情况生成变量 StrToCursor 将变量还原为Cursor AppendFromStr 将变量中的表追加到指定表中 ACursorList 将变量中的表信息生成数组 ACursorFields 将变量中的指定表的字段信息生成数组 CRC32Record 计算一条记录的CRC32值 SQLCallBack SQL回调函数载入 SQLCallReset SQL回调函数卸载 PackMDB 压缩修复Access数据库 ReadMemo 读取vfp中大于16M的备注字段 网络相关函数: DownFile 从internet上下载文件到本地 DownFileX 线程方式从网上下载一个文件 HttpGetFileSize 读取internet上的文件大小 HttpPostData 向http服务器Post数据 HttpOpen 打开一个Internet
句柄
HttpAddParms 为Http
句柄
添加一个参数 HttpSend 发送Http
句柄
中的Post数据 HttpClose 关闭Http
句柄
FtpDownFile 从FTP服务器下载文件 FtpUploadFile 向FTP服务器上传文件 FtpConnect 连接FTP服务器 FtpDisconnect 断开FTP服务器连接 FtpAFile 枚举Ftp中的所有文件 FtpCreateDir 在FTP服务器上创建一个文件夹 FtpSetCurrentDir 设置当前的文件夹 FtpDeleteDir 删除FTP服务器上的文件夹 FtpDelFile 删除FTP服务器上的文件 FtpRename 重命名FTP服务器上的文件 FtpFOpen 打开FTP服务器上的文件 FtpFClose 关闭FTP服务器上的文件 FtpFRead 读取FTP服务器上的文件 FtpFWrite 写入FTP服务器上的文件 FtpSetPasv 设置FTP被动工作模式 ShareAdd 在局域网共享文件夹 ShareDel 删除共享文件夹的共享 ShareMapDrive 映射网络驱动器 ShareDelDrive 删除映射的网络驱动器 GetLocalIP 读取本机IP DomainToIP 转换域名为IP地址 DialUp 建立拨号连接 DialDown 断开拨号连接 GetSqlServer 列出所有网络上的SQL Server IpToMAC 根据IP得到MAC地址 邮件函数: SmtpCreate 创建一个SMTP发送邮件的
句柄
SmtpNewMail 在内存中创建邮件内容,等待发送 SmtpSend 发送邮件 SmtpGetLastError 检测邮件最后的错误 Pop3Create 创建一个POP3接收邮件的
句柄
Pop3Close 关闭
句柄
Pop3AMailList 枚举POP3服务器上的邮件数量 Pop3DeleteMail 删除POP3邮件服务器上的邮件 Pop3GetMail 下载一封邮件 Pop3GetMailHeader 下载邮件头 Pop3DeleteMail 删除服务器上的邮件 打印相关函数: PaperAdd 添加自定义纸张并返回ID PaperDel 删除自定义纸张 PaperInfo 读取所有纸张信息或指定纸张信息 APaper 枚举所有纸张生成数组 GetDefaultPrinter 取得默认打印机的名称 SetDefaultPrinter 设置默认打印机 PrinterOpen 启用一个打印任务 PrinterOutPage 打印页对像 PrinterClose 结束打印 常用转换函数: ToPY 生成指写字符串的拼音首字 NToC 数字转人民币大写 hzbh 计算指定字符串的汉字笔划 StringToDword 将高底位存放的字符串,转换为字符型 DwordToString 将整型数值转换为字符型数值 NumConver 进制转换函数,能够将一个数字转换为2至36进制的字符串 ConverNum 将指定进制的字符串转换为数值型 GB2312ToBIG5 简体转繁体 BIG5ToGB2312 繁体转简体 FormToBmp 将表单保存为BMP图片 RectToBmp 指定屏幕区域保存为bmp图片 StrReverse 指定屏幕区域保存为bmp图片 ImageConver 转换图片格式 FTrim 删除字符串中除指定字符以外的字符 Thumbnail 缩放图片 注册表读写函数: regRead 读取注册表中的设置 regWrite 向注册表中写入设置 regDelKey 删除注册表中的分支 regDelValue 删除注册表中的设置 ini文件读写函数: iniRead 从ini文件中读取设置 iniWrite 向ini文件中写入一个设置 iniSet 设置默认的数据段和ini文件 iniSetSection 设置默认的数据段 iniSetFileName 设置默认的ini文件 系统托盘 SysTrayAdd 向系统托盘添加一个图标 SysTrayEdit 修改系统托盘的图标 SysTrayDel 删除系统托盘中的图标 HotKeyAdd 向系统注册一个热键 HotKeyDel 删除向系统注册的热键 SysTrayShowMessage 显示托盘消息 文件操作 CopyFiles 复制文件 MoveFiles 移动文件 DeleteFiles 删除文件 CreateShortcut 创建快捷方式 GetIcon 释放exe或dll中的图标 其它: SetVFPEvents 设置MYFLL内部函数回调功能 SetDateTime 设置Windows系统时间 ChangEres 更改屏幕的分辨率 idleLoad 开始加载空闲检测 idleSeconds 读取系统空闲时间 idleUnload 卸载空闲检测 KillApp 终止指定进程 KillAllApp 终止所有进程,但排除指定标题的进程 KillProcessByName 根据程序文件名杀死一个进程 FindAllFile 查找指定文件夹下的所有文件 IsNum 检测函数是否是数字 CheckProcess 检测主程序是否重复运行 ProcLoad 载入一个VFP函数,取得函数地址 ProcUnload 卸载函数 MemRead 读取指定地址的内存 MemWrite 写入指写内存 PushError 系统错误处理压栈 PopError 系统错误处理出栈 Format 格式化输出字符串(类C语言) CreateLink 创建文件关联 DesktopHide 隐藏桌面 SystemKeySet 禁用系统键 RegisterFile 注册文件名解除文件注册 封装过的Win32 API函数: FindWindow 查找指定窗口的
句柄
SendMessage 向指写窗口发送指定消息 PostMessage 将消息投递到指定
句柄
的消息队列 ShowWindow 显示指定窗口 ShowWindowAsync 显示指定窗口 SetWindowLong 设置窗口的扩展样式 SetLayeredWindowAttributes 设置窗口效果 SetForegroundWindow 激活指定窗口使这成为最前面的窗口 ShellExecute 调用系统关联,打开一个文件 ShellExecWait 调用一个程序,并等待执行结束 SuspendThread 暂停一个线程 ResumeThread 恢复一个线程 Beep 使电脑内喇叭发出beep声 ExitWindowsEx 退出Windows Sleep 程序挂起nMilliseconds毫秒 ExitProcess 终止当前进程 GetLastError 返回最后的错误号码 SetParent 设置窗口的父窗口 UpdateWindow 更新窗口
实验项目21
3、实验内容: 1) 编程实现求动态链接库kernel32.dll的虚拟地址 4、项目需用仪器设备名称:PC机一台 5、所需软件环境:windows操作系统6、
行列式计算用matlab的代码-dispersioneering:用于Matlab的热或冷磁化等离子体色散求解器
行列式计算用matlab的代码分散工程 用于磁化等离子体(冷和热)的 Matlab 色散关系求解器。 它将始终通过二次方法求解冷色散,但随后会额外添加来自具有热电介质或冷电介质的根求解器的解。 快速开始 cd dispersioneering/ addpath(genpath('./')) dispersioneering(@case1,'num_points',30,'use_root_finder',true,'use_cold_eps',false) 运行一个新案例 dispersioneering/cases文件夹包含用于指定要运行的案例的输入文件。 指定你想要的情况的方法是在第一个争论中调用disperseering dispersioneering() ,即, 使用dispersioneering/cases/fast_wave.m案例运行 dispersioneering(@fast_wave) 案例输入文件为每个背景配置文件指定函数
句柄
。 选项 numpoints是一个整数,指定要使用多少个等距点对您的配置文件进行采样。 use_root_finder是一个true或f
工业互联网标识解析体系综述
随着物联网、5G和工业技术的发展,工业互联网已成为新兴研究领域。由于工业生产的特殊性,对标识解析服务的时延、安全性、稳定性都提出了更高要求。传统 DNS 标识主体单一、解析结果僵化、安全保护薄弱,无法满足工业互联网要求。在此背景下,如何对任意对象提供高效、灵活、安全的解析服务,已成为全球关注的热点领域。首先讨论了工业互联网标识解析体系设计原则和关键支撑技术,其次对现有标识解析体系进行了概述和对比分析,然后阐述了新型标识解析方案研究成果,最后讨论了该领域面临的核心
问题
,并对未来发展趋势进行了展望。
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章