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

kinker kinker 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#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;
}
...全文
评论
收藏 已收藏
分享
返回顶部
kinker
其它技术问题 3,881 成员 9,044 内容