模拟实现VC中的handle的c++方法,欢迎指正~~~

C++十大核心应用领域与技术详解:从操作系统到AI基础设施的实战指南 C++作为一门高性能系统级编程语言,其核心价值在于提供对硬件资源的精细控制与零开销抽象能力。其设计哲学遵循“零开销原则”,使得开发者能够在高级抽象与底层性能之间取得平衡,从而直接管理内存、操作硬件并实现极致优化。这一技术特性使其在构建高性能、高可靠性的基础设施时具有不可替代的价值,广泛应用于对计算效率有严苛要求的场景。例如,在操作系统与系统软件领域,C++通过RAII(资源获取即初始化)和现代内存管理技术确保资源安全;在游戏开发与实时图形领域,则利用数据导向设计(DOD)和内存模型优化缓存效率。本文聚焦于C 阅读详情

模拟实现VC中的handle的c++方法,可以使用在类层次结构的设计中。

代码没有添加注解,很简单嘛。程序使用dev c++调试通过。

#include <iostream>
#include <cstdlib>

using namespace std;
typedef void *   HANDLE;

class CTartgetCmd{
public:
        CTartgetCmd();
virtual ~CTartgetCmd();

virtual void  OnCmdMsg(unsigned int nCommand);
HANDLE GetHandle();

protected:
HANDLE m_hHandle;
};


CTartgetCmd::CTartgetCmd()
{
    m_hHandle = this;
}

CTartgetCmd::~CTartgetCmd()
{
    m_hHandle = NULL;
}
void  CTartgetCmd::OnCmdMsg(unsigned int nCommand)
{
}
HANDLE CTartgetCmd::GetHandle()
{
    return m_hHandle;
}
void SendMessage(HANDLE hHandle, unsigned int nCommand)
{
    CTartgetCmd *pCmd = (CTartgetCmd *)(hHandle);
    pCmd->OnCmdMsg(nCommand);
}

class CWnd : public CTartgetCmd
{
public:
 CWnd();
virtual ~CWnd();
 
 virtual void  OnCmdMsg(unsigned int nCommand);
 virtual unsigned int SendMessage(unsigned int nCommand);  
};
CWnd::CWnd()
{
}
CWnd::~CWnd()
{
}

void  CWnd::OnCmdMsg(unsigned int nCommand)
{
    cout<< nCommand <<endl;
}

unsigned int CWnd::SendMessage(unsigned int nCommand)
{
   ::SendMessage(GetHandle(),nCommand);
    return 0;
}

int main(int argc, char *argv[])
{
  CWnd myWnd,myWnd2;
  cout<<myWnd.GetHandle()<<endl;
  cout<<myWnd2.GetHandle()<<endl;

  for( int i = 0;i< 3;i++)
  {
    myWnd.SendMessage(i);
  }
  system("PAUSE"); 
  return 0;
}

C++判断当前程序对文件或文件夹是否有写权限(附源码) 判断当前程序对某文件或文件夹是否有写权限。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第八十四篇 C++分布式软件高并发/高可用算法01

4. 提交:协调者选择提交时间戳(>所有读时间戳),两阶段提交:a) 写意图预提交到所有参与者,b) 参与者持久化后确认,c) 协调者决定提交,异步清理意图。:客户端请求发送到协调节点,协调节点根据路由转发到主分片所在节点。Span有父子关系。1. 索引文档:客户端发送PUT请求到协调节点,协调节点路由到主分片节点,主分片写入本地,然后并行复制到副本分片,等待确认后响应客户端。3. 搜索:客户端发送搜索请求到协调节点,协调节点广播到所有相关分片,每个分片执行查询,返回结果,协调节点合并、排序、分页后返回。

weixin_49199313的博客 1077

VC++中的句柄

句柄(handle)是一种资源的标识; 操作系统要管理这些资源,都是通过句柄来找到对应的资源。 句柄有点类似于指针, 资源都会占用一定的内存,当我们需要使用这些资源的时候,就需要获得这些内存中的资源,通过句柄就可以访问这些内存。 按资源的类型,可以将句柄细分成 图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)。

yanghangjun的专栏 2045

opencv+nvcodec实现视频硬解码

最近遇到一个新项目,AI推理在上,为了方便和节省成本的考虑决定研究下模块。根据官网的说法显卡具有独立的和模块,所以理论上和是独立互不干涉的。以前的项目都只是把显卡当成推理工具,没有将它的功能利用起来,本身也是一种浪费。事实真的有这么丝滑吗?看到这里,如果你真的觉得是白叫的那就真的是了,事实究竟如何,请听我娓娓道来。NVCODEC全称是 NVIDIA VIDEO CODEC,是NVIDIA为绝大多数显卡配置的硬件编解码单元。不一定是所有显卡都有,一般来讲越新的显卡硬件编解码就越强,支持的格式也就越新。

jiexijihe945的博客 1万+

typedef void *HANDLE

这是typedef定义,就在void*键入罢了。那是,HANDLE相当于void ,们能够叫它披着句柄皮的指针(PS:指针和句柄是有差别的,在这说句废话);,它会自动将你写得HANDLE理解为void。 总结: 1)void*类型的指针其实本质就是一个过渡型的指针状态,必须要赋予类型(强制类型转换)才能正常使用。 2)只能单向类型转换。void可以转化成其他类型,但是有类型的不能转化成void。 2)在函数调用过程中的使用作为输入输出参数也非常好用,可以灵活使用任意类型的指针,避免只能使用固定类型的指针。

无问西东的博客 5307

S32的进阶之路->3,S32DS新建/删除/导入工程

右击工程名,点击Delect进行工程删除。选中Delect project contents on disk则会彻底删除工程,不选中Delect project contents on disk工程文件会保存在工作空间中。在Improt Projects中选择工程所在文件夹,选中所需要导入的工程,勾选Copy projects into workspace。选中目标示例工程,点击Finish,完成创建工程。导入已有工程,右击右击Project Explorer空白处,选择Import。

LC_8575的博客 2226

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2535

C++它 typedef void *HANDLE

阅读时编写代码的代码,经常看到一个代码: typedef void *HANDLE ,这是它背后的故事?怎么理解呢? 不明白的时候。这是非常美妙的感觉,后来我才知道这,这是typedef定义,就在void*键入罢了。那是,HANDLE相当于void *,们能够叫它披着句柄皮的指针(PS:指针和句柄是有差别的,在这说句废话); 对于void* 神通广大。由于它作为函数參数or函数返回值,...

weixin_33742618的博客 751

MATLAB 论文复现——含氢综合能源系统多目标最优折中分布鲁棒低碳调度

提出基于多目标决策理论和逼近理想解排序技术,构造综合考虑系统调度的经济性、低碳性和鲁棒度的多目标最优折中函数,从而建立含氢综合能源系统多目标最优折中分布鲁棒低碳调度模型,可快速准确地获得兼具经济性、低碳性和鲁棒性的含氢综合能源系统优化调度方案。[1]孙惠娟,胡紫平,彭春华,等.含氢综合能源系统多目标最优折中分布鲁棒低碳调度[J/OL].电力自动化设备,1-13[2024-07-26].https://doi.org/10.16081/j.epae.202406003.关键词: 综合能源系统;

sjr1478的博客 410

vc++之handle

handle   HANDLE:句柄,是Windows用来表示对象的(不是C++的对象),HWND是其中一种,HWND是HANDLE,但HANDLE不只是HWND,更具体的查MSDN吧。  我接上面的补充下!  HANDLE(句柄)是windows操作系统中的一个概念。指的是一个核心对象在某一个进程中的唯一索引,而不是指针。由于地址空间的限制,句柄所标识的内容对进程是不可见的,只能由操作系

sdnujun的专栏 1930

【小白深度教程 1.3】使用 BP-Net 深度补全网络,进行 KITTI 稠密点云和图像融合(Depth Completion 实战)

在上一节中,我们展示了如何将从激光雷达获取的稀疏点云(深度)映射到图像。因此这篇论文我们尝试使用 Depth Completion(深度补全)技术,来将稀释的点云深度,补全为稠密深度。

2401_87064292的博客 1199

学 Simulink—— 基于高频方波电压注入的表贴式永磁电机无感控制仿真

本文手把手教授基于Simulink的高频方波电压注入法实现表贴式永磁同步电机(SPMSM)无传感器控制。针对表贴式电机微弱凸极特性(Lq/Ld≈1.05-1.15),详解方波注入相比正弦注入的优势:通过5kHz方波(PWM频率半值)集中能量提升信噪比,并采用相邻周期电流直接相减的零延迟分离技术。系统架构包含高频注入器、无滤波器信号分离模块、锁相环观测器和磁饱和极性辨识等关键环节,提供参数设置经验(如注入幅值10-15%Vdc)和典型性能指标(位置误差<0.2rad)。特别强调工程实现要点:PWM同步时

xiaoheshang_123的博客 168

用C++和Windows的互斥对象(Mutex)来实现线程同步锁

用C++和Windows的互斥对象(Mutex)来实现线程同步锁

ffghggf的博客 606

RK3568平台(camera篇) MPP编码

同芯片的差异,为使用者提供统一的视频媒体处理接口(Media Process Interface,缩写 MPI)。瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的。mpi_enc_test 的命令参数中,图像宽度(w)图像高度(h),码流类型(t)为强制要求参数,其他参。视频拷贝,缩放,色彩空间转换,场视频解交织(Deinterlace)数如输入文件(i),输出文件(o),编码帧数(n)等为可选参数。设置一些MPP的模式。

weixin_49303682的博客 7379

利用BCB自己打造QQ炸弹

注:本文已发表在2007年《黑客防线》第10期,版权归《黑客防线》所有。俗话说的好啊:不会编程的黑客就不是好黑客(我会编程,但我也不是黑客,因为我是个——程序员,哈哈)。今天呢我们就来亲自动手打造一个专属于自己的小工具。我们要做的是一个QQ炸弹,这年头用QQ的人实在多。这林子大了可是什么鸟都有,当然其实我们今天做这个工具的威力并不是很大,顶多只能和好友聊天的时候骚扰一下。思路很简单,就是通过程序不

1318

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

利用BCB自己打造QQ×××

注:本文已发表在2007年《***防线》第10期,版权归《***防线》所有。 俗话说的好啊:不会编程的***就不是好***(我会编程,但我也不是***,因为我是个——程序员,哈哈)。今天呢我们就来亲自动手打造一个专属于自己的小工具。 我们要做的是一个QQ×××,这年头用QQ的人实在多。这林子大了可是什么鸟都有,当然其实我们今天做这个工具的威力并不是很大,顶多只能和好友聊天...

weixin_34174105的博客 166

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

解决VS2017/2019中缺失dirent.h的跨平台兼容方案

本文针对Visual Studio 2017/2019中因平台差异导致的“No such file or directory”编译错误,提供了跨平台兼容性解决方案。通过引入成熟的第三方dirent.h实现,详细讲解了如何快速集成并编写跨平台目录遍历代码,有效解决了Windows环境下缺失POSIX标准头文件的问题。

terraform7cloud的博客 418

秒杀多线程第三篇 原子操作 Interlocked系列函数

分享一下我老师大神的人工智能教程!http://blog.youkuaiyun.com/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 上一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运...

weixin_43417960的博客 126

typedef隐藏句柄

类型来声明变量,而无需了解句柄的具体内容。这样可以有效地隐藏实现细节,提供更好的封装性和抽象性。,并实现了创建句柄、使用句柄和销毁句柄的函数。这些函数内部可以直接访问句柄结构体的成员变量。这样,用户在使用该句柄时只需要知道它是一个指针类型,而无需知道具体的结构体定义。关键字来定义一个句柄类型,以隐藏句柄的具体实现细节。指针,可以在头文件中隐藏具体的结构体定义,只暴露句柄类型给用户。实现文件中,我们定义了一个具体的句柄结构体。下面是一个示例,展示了如何使用。的句柄类型,它被定义为。在C语言中,可以使用。

qq_43637548的博客 341

C++HANDLE的理解

HANDLE:句柄,是WINDOWS用来表示对象的,是一个通用句柄表示。 在WINDOWS程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时为他们分配内存,并返回标示这些资源的标示号,即句柄。 但是如果这些资源的位置变了呢? HANDLE是固定的,不会变,但是对象的地址会变,当对象在内存中的位置发生改变后,我们不能通过之前的对象指针找到对象。HANDLE能用来记录对象的最新地址。 也就是说,HANDLE像是中间商,联络着WINDOWS API和看不见的对象,所以可以通过HANDLE让对象做

weixin_45758146的博客 1万+

C++中handle的基本概念和使用

C++中句柄(handle)的基本概念:参考博客:https://blog.youkuaiyun.com/lihuacui/article/details/52673398?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task https://www.cnblog...

Littlehero_121的博客 3万+

C 语言句柄handle

我觉得自己对于指针理解比较透彻了,但关于句柄的理解,就容易犯理解成指针的错误.  一般说:句柄是资源(或项目)的唯一标识.  俺觉得这其实说得很不明白的,现在我想问的是句柄到底是怎么标识资源的:  1,句柄在32位机上是32位整型吗?  2,当HANDLE handle;声明句柄时,handle是它的标识符吗?如int a;则a就是标识符.  3,既然句柄是一个整型值,那么,它在内存的什

Godsight的博客 3万+

什么是句柄?(转载)

先来看些权威的片断: ... typedef unsigned int HANDLE; #define DECLARE_HANDLE(name) typedef UINT name DECLARE_HANDLE(HMODULE); DECLARE_HANDLE(HINSTANCE); DECLARE_HANDLE(HLOCAL); DECLARE_HANDLE(HGLOBAL); DECLARE_

7452

C++中HANDLE句柄的概念

c++

u011555996的博客 2739
上一篇: 调试时巧用宏实现输出变量的名字和值
下一篇: 【转载】如何正确安装MSDN
kinker
博客等级 码龄23年 7粉丝 6原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值