MFC窗口去边框、置顶、全屏、激活
时间: 2023-07-10 16:14:21 浏览: 48
好的,我来回答你的问题。
要让 MFC 窗口去掉边框,可以在窗口创建时设置窗口的样式为 WS_POPUP,这样就可以去掉标题栏和边框。具体的实现可以在窗口类的 OnCreate 函数中添加以下代码:
```cpp
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_POPUP);
```
要让窗口置顶,可以使用 SetWindowPos 函数将窗口置于顶部。具体的实现可以在窗口类的 OnCreate 函数中添加以下代码:
```cpp
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
```
要让窗口全屏,可以获取显示器的分辨率,然后将窗口的大小设置为分辨率的大小。具体的实现可以在窗口类的 OnCreate 函数中添加以下代码:
```cpp
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(NULL, 0, 0, cx, cy, SWP_FRAMECHANGED);
```
要激活窗口,可以使用 SetForegroundWindow 函数将窗口激活。具体的实现可以在窗口类的 OnCreate 函数中添加以下代码:
```cpp
SetForegroundWindow();
```
希望这些代码对你有所帮助!
相关问题
MFC子对话框,窗口去边框、置顶、全屏、激活
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();
```
注意:为了避免窗口闪烁,全屏和激活应该在窗口创建完成后再执行。
mfc 窗口设置边框宽度
在 MFC 中,可以通过覆盖 CWnd 类的 OnNcCalcSize 函数来设置窗口的边框宽度。具体操作如下:
1. 打开窗口类的头文件,添加下面的代码:
```
afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
```
2. 在窗口类的 cpp 文件中添加下面的代码:
```
void CMyWnd::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp)
{
// 计算边框宽度
int nBorderWidth = 10; // 设置边框宽度为 10 像素
// 调整窗口大小
lpncsp->rgrc[0].left += nBorderWidth;
lpncsp->rgrc[0].top += nBorderWidth;
lpncsp->rgrc[0].right -= nBorderWidth;
lpncsp->rgrc[0].bottom -= nBorderWidth;
CWnd::OnNcCalcSize(bCalcValidRects, lpncsp);
}
```
在上述代码中,通过设置 nBorderWidth 变量来指定边框宽度,然后通过计算修改窗口大小,最后调用 CWnd::OnNcCalcSize 函数完成窗口大小的调整。