模拟实现VC中的handle的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;
}
#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;
}
...全文
相关推荐
vc_handle.rar_handle_vc HANDLE_visual c
在IT领域,尤其是在Windows操作系统和C++编程中,"HANDLE"是一个非常重要的概念,它在标题"vc_handle.rar_handle_vc HANDLE_visual c"中被提及。
C++判断当前程序对文件或文件夹是否有写权限(附源码)
判断当前程序对某文件或文件夹是否有写权限。
visual c++ vc使用winio.dll来模拟触发鼠标,键盘消息
在IT行业中,Visual C++(简称VC)是一种广泛使用的C++集成开发环境,它由Microsoft公司提供,用于创建Windows应用程序。
VC6到VS2010迁移所有问题的解决方法
### VC6到VS2010迁移的所有问题解决方法#### 一、概述随着软件开发工具和技术的不断进步,开发者经常会面临将旧版本的项目迁移到新版本环境中的需求。
BCB调用VC的DLL里的方法,即看即会。
本篇将基于提供的文件信息——BCB调用VC的DLL里的方法,来深入探讨这一技术知识点。


其它技术问题
