MFC子对话框,窗口去边框、置顶、全屏、激活
时间: 2023-07-10 20:14:36 浏览: 180
MFC 子对话框的窗口去边框可以通过重载 OnNcCalcSize 函数和 OnNcPaint 函数来实现,具体可以参考以下代码:
```C++
// 去掉边框
void CMySubDlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
CDialogEx::OnNcCalcSize(bCalcValidRects, lpncsp);
// 去掉边框
lpncsp->rgrc[0].left += 1;
lpncsp->rgrc[0].top += 1;
lpncsp->rgrc[0].right -= 1;
lpncsp->rgrc[0].bottom -= 1;
}
// 绘制边框
void CMySubDlg::OnNcPaint()
{
Default();
// 绘制边框
CWindowDC dc(this);
CRect rect;
GetWindowRect(&rect);
rect.OffsetRect(-rect.left, -rect.top);
rect.right -= 1;
rect.bottom -= 1;
dc.Draw3dRect(rect, RGB(0, 0, 255), RGB(0, 0, 255));
}
```
将该代码添加到子对话框类中即可去掉窗口边框。
子对话框置顶可以使用 SetWindowPos 函数实现:
```C++
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
```
全屏可以使用 SetWindowPos 函数实现:
```C++
SetWindowPos(NULL, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_NOZORDER | SWP_FRAMECHANGED);
```
激活可以使用 SetForegroundWindow 函数实现:
```C++
SetForegroundWindow();
```
注意:为了避免窗口闪烁,全屏和激活应该在窗口创建完成后再执行。
阅读全文