CWnd对象和窗口的关系

  很多人认为MFC中的CWnd对象就是窗口,其实不然,它只是拥有一个与窗口相关联的扭带,即窗口句柄。

可以模拟一下CWnd对象:


class  CWnd
{
  
public :
      BOOL CreateWindow(.....);
      BOOL ShowWindow(
int  cmdShow);
      BOOL UpdateWindow();
      
void  DestroyWindow();
  
private :
      HWND m_hwnd;
}

BOOL CWnd::CreateWindow(.....)
{
   
// 注意:保存了窗口句柄
   m_hwnd  =  ::CreateWindowEx(.....);
}

BOOL CWnd::ShowWindow(
int  cmdShow)
{
    
// 直接调用全局函数
     return  ::ShowWindow(m_hwnd,cmdShow);
}


BOOL CWnd::UpdateWindow()
{
    
// 直接调用全局函数
     return  ::UpdateWindow(m_hwnd);
}

void  CWnd::DestroyWindow()
{
    
// 置空窗口句柄
    m_hwnd  =  NULL;
}


 

窗口一旦销毁,并不表示CWnd对象销毁,其实只中把窗口句柄设置为NULL,反之,CWnd销毁,窗口肯定销毁。

 

你可能感兴趣的:(对象)