VC中置顶窗口的方法
来源:互联网 发布:现代h6行车记录仪软件 编辑:程序博客网 时间:2024/05/16 15:38
将窗体置顶的方法有:
//将窗体置顶的API函数
::SetWindowPos(m_hWndTop,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
//MFC
pDlg->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
说明:
&CWnd::wndTopMost 是当前的最顶层窗口,调用函数,会把m_hWndTop或pDlg 置于&CWnd::wndTopMost上面
自然就变成了最顶层
&CWnd::wndTopMost 是个静态成员变量 不知是本主程序的还是整个Windows系统的?
所有对话框创建时,由系统自动更新的一个变量
我用(&CWnd::wndTopMost )->GetSafeHwnd(),能取到个有效的句柄,但调用SetWindowPos()却无效。
用::GetForegroundWindow()可以。
GetForegroundWindow() 所取到的一定是当前顶层的 但要注意 若你在界面程序里,比如按钮触发后调用他,获取
到的将是你正操作的界面。
如下代码:
void CTestTimerDlg::OnBnClickedButton1()
{
pdlgFir = new TestTopMostDlg();
pdlgFir->Create(IDD_DIALOG1,this);
//dlg.DoModal();
//此处获得的是TestTopMostDlg句柄
m_hWndTop = ::GetForegroundWindow();
//m_hWndTop = (CWnd::wndTopMost).GetSafeHwnd();
//bRetu = FALSE;
}
void CTestTimerDlg::OnBnClickedButton2()
{
//此处获得的将是CTestTimerDlg 句柄
//m_hWndTop = ::GetForegroundWindow();//(&(CWnd::wndTopMost))->GetSafeHwnd();
pDlg = new CTestSecondDlg();
pDlg->Create(IDD_DIALOG2,this);
BOOL bRetu=FALSE;
//pdlgFir->GetSafeHwnd()
bRetu = ::SetWindowPos(m_hWndTop,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
}
更关键的一点,同一个主程序里的两个子窗口都设置了 Topmost 则相互不起作用,即两个子对话框都可以通过获得焦点
而置顶。但二个子对话框 对于其他程序可以一起置顶。
- VC中置顶窗口的方法
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- VC关于置顶窗口的方法小结
- opencv中窗口置顶的方法
- opencv中窗口置顶的方法
- Delphi 窗口置顶的方法
- Delphi 窗口置顶的方法
- vc 实现窗口置顶
- VC中改变窗口标题的方法
- VC#中渐显窗口的方法
- VC#中渐显窗口的方法
- python tkinter窗口弹出置顶的方法
- vc将窗口置顶的SetWindowPos()函数以及相关
- vc将窗口置顶的SetWindowPos()函数以及相关
- VC++实现非窗口类中使用定时器的方法
- 如何恢复SQLServer表级数据详解
- BIO,NIO,AIO的理解
- 山东省赛题 NEU OJ 1444 线段树双标记
- ubuntu 从桌面登录切换回文本登录
- UVA 10271 Chopsticks
- VC中置顶窗口的方法
- Round Robin 轮叫调度
- C语言,模拟命名空间的方法
- Thinkphp中eq,neq,gt,lt等表达式缩写
- UVA1339- Ancient Cipher
- HDU 2031 进制转换
- too many open files的处理方法
- 刘颖:打造高质量的云服务
- HDU1698_Just a Hook