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

kinker 2005-11-22 03:35:20
#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;
}
...全文
166 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧