方法一:在对话框的属性中,在more style中有一项是System model,选上它,即可!
方法二:OnInitDialog里加入SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
外部调用: m_dialog->SetWindowPos(&wndTopMost, 0, 0, 400, 400, SWP_SHOWWINDOW);
MFC弹出非模态对话框
新建对话框IDD_DIALOG_TEST
用向导新建相应的类CTestDialog
在文件头#include “TestDialog.h”
CTestDialog *pTestDlg = new CTestDialog();
pTestDlg->Create(IDD_DIALOG_TEST, this);
pTestDlg->ShowWindow(SW_SHOW);
窗口保持在最前方
SetWindowPos(&wndTopMost,110,108,811,491,SWP_SHOWWINDOW);//这是标准位置
销毁窗口
pTestDlg->Destroy Windows;
delet pTestDlg;
方法一:在对话框的属性中,在more style中有一项是System model,选上它,即可!方法二:OnInitDialog里加入SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);外部调用: m_dialog->SetWindowPos(&wndTopMost, 0, 0, 400, 400, SWP_SH
Create( IDD_DIALOG, GetDesktopWindow() );
这样哪个窗体获得焦点就会位于最
前
,而那些没有指定GetDesktopWindow()的子窗体仍然会位于父窗体之上。
MFC
窗口
置顶
MFC
窗口
置顶,此处所说的
MFC
窗口
指的是应用程序
窗口
包含单
对话框
或者视图-文档结构
对话框
。
置顶:永远显示在其他应用程序之
前
。
文档-视图结构在函数
BOOL CXXXApp::InitInstance()//
::SetWindowPos(m_pMainWnd->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
对话框
在B
1.
窗口
置顶
(1)函数原型:
BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int x, int y,int cx, int cy, UINT nFlags);
(2)参数:
1)hWnd:
窗口
句柄。
2)hWndlnsertAfter:在z序中的位于被置位的
窗口
前
的
窗口
句柄。该参数必须为一个
窗口
句柄,或下列值之一:
HWND_
在系统中存在多个显示器是经常碰到的情况,如果存在,在哪个显示器上执行满屏的时候,系统不能随意把执行播放或者普通显示到首个显示器中,而是应该显示在显示界面当
前
的显示接口中。
以下讨论windows下
MFC
的多显示器支持。
先看以下代码,
MFC
view的视图类中,我们使用封装类CMonitor,可以获取有多少个显示器,并且得到显示的矩形
窗口
int C
MFC
Application3View::MonitorMonitor(RECT &rect)
int count = CMonito
MFC
非
模
态
对话框
窗口
最小化之后不能接收按键消息的问题,与
MFC
窗口
的最小化问题类似,也是因为焦点被转移到其他
窗口
导致的。解决这个问题的方法也很类似,在
对话框
的 PreTranslateMessage 函数中处理 WM_SYSCOMMAND 消息,判断是否是最小化操作,如果是,则将焦点设置为当
前
对话框
窗口
。
以下是处理 WM_SYSCOMMAND 消息的示例代码:
```c++
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
if (pMsg->message == WM_SYSCOMMAND && pMsg->wParam == SC_MINIMIZE)
// 最小化操作
SetForegroundWindow(); // 将焦点设置为当
前
对话框
窗口
return CDialog::PreTranslateMessage(pMsg);
这样就可以解决
MFC
非
模
态
对话框
窗口
最小化之后不能接收按键消息的问题了。