您的位置:首页 > 编程语言 > C语言/C++

[面试] C/C++ —— MFC(三)

2016-03-27 16:15 513 查看

CWnd 窗口基类的仿真

class CWnd
{
public:
BOOL CreateEx( DWORD dwExStyle,      // extended window style
...
);
BOOL ShowWindow(int nCmdShow);
BOOL UpdateWindow();
public:
HWND m_hWnd;
};

BOOL CWnd::CreateEx(DWORD dwExStyle,      // extended window style
....
)
{
m_hWnd = ::CreateWindowEx(dwExStyle, ....);
return m_hWnd ? true:false;
}

BOOL CWnd::ShowWindow(int nCmdShow)
{
return ::ShowWindow(m_hWnd, nCmdShow);
}

BOOL CWnd::UpdateWindow()
{
return ::UpdateWindow(m_hWnd);
}

int WINAPI WinMain(  HINSTANCE hInstance, ....)
{

WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
// ...
RegisterClass(&wndcls);
CWnd wnd;
wnd.CreateEx(...);
wnd.ShowWindow(SW_SHOWNORMAL);
wnd.UpdateWindow();
...
}


C++ 对象(CWnd)与窗口之间的关系

仅仅是因为在 CWnd 类的内部维护了一个指向窗口的句柄。

public:
HWND m_hWnd;


窗口销毁,CWnd 对象的其他成员函数依然可以使用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: