VC++创建popup窗体

在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);


这样创建出来的窗体,父窗体那个参数可以为空,并且相对主窗体是独立的,可以在桌面随意移动


 

你可能感兴趣的:(mfc,vc++,WS_POPUP,CreateEx)