2、如何改变对话框的形状?
可用下面一些函数:
CreatePolygonRgn
CreateRectRgn
CreateRoundRectRgn 等.
CRgn m_rgn; // Put this in your dialog''s header file. i.e. a member variable // This Gets the size of the Dialog: This piece of code is to be placed in the // OnInitDialog Function of your dialog. CRect rcDialog GetClientRect(rcDialog); // The following code Creates the area and assigns it to your Dialog m_rgn.CreateEllipticRgn(0, 0, rcDialog.Width(), rcDialogHeight()); SetWindowRgn(GetSafeHwnd(), (HRGN) m_rgn, TRUE); 3、如何实现非客户区移动?
可用下面二种方法// Handler for WM_LBUTTONDOWN message void CYourDialog::OnLButtonDown(UINT nFlags, CPoint point) { CDialog::OnLButtonDown(nFlags, point); PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y)); } // Handler for WM_NCHITTEST message LONG CYourDialog::OnNcHitTest( UINT uParam, LONG lParam ) { int xPos = LOWORD(lParam); int yPos = HIWORD(lParam); UINT nHitTest = CDialog::OnNcHitTest(CSize(xPos, yPos)); return (nHitTest == HTCLIENT) ? HTCAPTION : nHitTest; } 4、如何使对话框初始为最大化状态?SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, NULL);5、如何限定对话框大小范围?
在 WM_SIZING中加入下面代码:void CYourDialog::OnSizing(UINT fwSide, LPRECT pRect) { if(pRect->right - pRect->left <=200) pRect->right = pRect->left + 200; if(pRect->bottom - pRect->top <=200) pRect->bottom = pRect->top + 200; CDialog::OnSizing(fwSide, pRect); }