在MFC里面创建普通的不是popup子窗体,用Create即可代码如下:
CWnd *wnd=new CWnd(); wnd->Create(NULL,NULL,WS_OVERLAPPEDWINDOW,CRect(0,0,100,100),NULL,NULL); wnd->ShowWindow(SW_SHOW);
这样创建出来的窗体不带popup风格,它只能作为另一个窗体的子窗体的,并且Create只能创建
WS_CHILD风格的窗体,因为在Create内部进行了限制,Create内部代码如下:
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)(UINT_PTR)nID, (LPVOID)pContext);
从上面的代码可以看出Create不能创建WS_POPUP风格的窗体,并且必须有父窗体,而且创建的窗体
只能是WS_CHILD风格的窗体。
要创建WS_POPUP风格的窗体必须用CreateEx才行,代码如下:
CWnd *wnd=new CWnd(); wnd->CreateEx(NULL,AfxRegisterWndClass(CS_DBLCLKS,::LoadCursor(NULL, IDC_ARROW),(HBRUSH) ::GetStockObject (WHITE_BRUSH)),NULL,WS_POPUP|WS_OVERLAPPEDWINDOW,0,0,300,400,NULL,NULL); wnd->ShowWindow(SW_SHOW);
这样创建出来的窗体,父窗体那个参数可以为空,并且相对主窗体是独立的,可以在桌面随意移动