16,471
社区成员
发帖
与我相关
我的任务
分享
BOOL CWnd::CreateEx()
{
cout<<“CWnd::CreateEx \n";
PreCreateWindow();
return TRUE;
}
这个PreCreateWindow(); 为什么 是调用CFrameWnd::PreCreateWindow 而不是调用CWnd::PreCreateWindow();
this->PreCreateWindow();
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
...
return 0;
}
BOOL CWnd::Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext)
{
// can't use for desktop or pop-up windows (use CreateEx instead)
ASSERT(pParentWnd != NULL);
ASSERT((dwStyle & WS_POPUP) == 0);
return CreateEx(0, lpszClassName, lpszWindowName,
dwStyle | WS_CHILD,
rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top,
pParentWnd->GetSafeHwnd(), (HMENU)nID, (LPVOID)pContext);
}
BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
int x, int y, int nWidth, int nHeight,
HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam)
{
...
if (!PreCreateWindow(cs))
{
PostNcDestroy();
return FALSE;
}
...
return TRUE;
}
class CWnd::public CCmdTarget
{
public:
CWnd::CWnd() {}
~CWnd::CWnd() {}
virtual BOOL Create();
BOOL CreateEx();
virtual BOOL PreCreateWindow();
}
BOOL CWnd::CreateEx()
{
cout<<“CWnd::CreateEx \n";
PreCreateWindow();
return TRUE;
}
BOOL CFrameWnd::PreCreateWindow()
{
\\details
return TRUE;
}
BOOL CWnd::PreCreateWindow
{
\\details
return TRUE;
}