我创建了一个基于对话框的应用程序从对话框属性,我删除了标题栏并设置了边框是无。然后,我使用MOveWindow()修改对话框大小,然后将对话框形状更改为多边形区域和应用框架区域。工作正常。
但是当我创建基于对话框的应用程序 Progmatically时,我删除了标题栏和对话框,如下所示:
ModifyStyle(WS_CAPTION,0);
ModifyStyle(WS_DLGFRAME,0)
然后ProgmaticallyI使用MOveWindow()修改了对话框大小,并将对话框形状更改为polygonregion和应用的框架区域。框架未出现在对话框周围。它只在左侧和顶部。
BOOL CDialogShapeDlg :: OnInitDialog() { CDialogEx ::的OnInitDialog();
ModifyStyle(WS_CAPTION,0);
ModifyStyle(WS_DLGFRAME,0);
CRect rect;
GetClientRect(&rect);
MoveWindow(rect.left,rect.top,400,500);
GetClientRect(&rect);
CPoint vertex[4];
vertex[0] = CPoint(rect.left,rect.top);
vertex[1] = CPoint(rect.right,rect.top);
vertex[2] = CPoint(rect.right,rect.bottom);
vertex[3] = CPoint(rect.left,rect.bottom);
rgn.CreatePolygonRgn(vertex,4,ALTERNATE);
HGDIOBJ hRgn = rgn.Detach();
::SetWindowRgn(GetSafeHwnd(), (HRGN)hRgn, TRUE);
rgn.CreatePolygonRgn(vertex,4,ALTERNATE);
return TRUE;
}
void CDialogShapeDlg :: OnPaint() { CPaintDC dc(this); CBrush * pBrush =新CBrush(RGB(255,0,0)); dc.FrameRgn(安培; RGN,pBrush,1,1); }
请帮助解决这个问题。 感谢
答案 0 :(得分:0)
使用区域是一项高级功能,根据您的代码和问题,您是初学者。您应该阅读有关Windows编程的更多信息。然后你会知道你可能正在使用GetWindowRect()而不是GetClientRect()。 GetClientRect()在窗口的客户端空间坐标中返回窗口客户区的大小。