VC关于置顶窗口的方法小结

将窗体置顶的方法有:

//将窗体置顶的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 则相互不起作用,即两个子对话框都可以通过获得焦点
而置顶。但二个子对话框 对于其他程序可以一起置顶。

时间: 2024-10-26 22:42:06

VC关于置顶窗口的方法小结的相关文章

vc++-win7下置顶窗口,为什么经常失效?如何解决 ?

问题描述 win7下置顶窗口,为什么经常失效?如何解决 ? win7下使用SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE)置顶窗口,为什么经常失效?如何解决 ?xp下没这个问题. 解决方案 失效,是不是窗口置顶被其它程序抢占了改了.还有可以用桌面窗口做父窗口,设置悬浮窗类似方式. 解决方案二: 我也怀疑是这样,就是不知道xp为什么不会被抢,win7就会,是不是win7有什么特定的设置 解决方案三: 这是uiAccess搞的鬼,w7还是

全民K歌置顶歌曲怎么设置?全民K歌置顶歌曲设置方法

1.在手机中点击全民K歌,然后进入之后点击[我的],接着点击要置顶的作品 2.点击右上角的[三点],接着点击[置顶作品] 3.点击[确认置顶]即可. 好了上文是小编为各位介绍的关于全民K歌置顶歌曲的方法了,如果要取消置顶的话操作方法也是一样的只需要简单的按上面方法反操作即可.

php实现文章置顶功能的方法_php技巧

本文实例讲述了php实现文章置顶功能的方法.分享给大家供大家参考,具体如下: 昨天客户让做文章置顶的功能.自己以前没做过.靠着同事的指点才做了出来.本来挺简单的事情,被自己搞了好久.自己真的缺乏对程序的理解.还是写篇博客记录一下吧. 第一步,在文章表里面建两个字段,用于做置顶功能.一个是top字段,timestamp类型,默认选"定义",用于存储置顶操作的时间;还有一个flag字段,int类型,用于判断是否置顶,置顶为1,否则为0.. 第二步,模板页面修改.列表选项里面加置顶列,下面对

jQuery表格行上移下移和置顶的实现方法_jquery

我们在操作列表数据的时候,需要将数据行排列顺序进行调整,如上移和下移行,将行数据置顶等,这些操作都可以在前端通过点击按钮来完成,并且伴随着简单的动态效果,轻松实现表格数据排序. 运行效果图: HTML 页面上是一个简单的数据表格,我们在数据行中分别放置"上移","下移"和"置顶"三个链接,并且分别定义三个class属性,我们来通过jQuery实现这些操作. <table class="table"> <tr&

微信公众号置顶如何设置?微信设置置顶公众号方法

1.我们在手机中打开"公众号"然后点击界面中的右上角图像,如下所示 2.之后在此找到要放置部的公众号,开启下图中的那个置顶公众号功能,效果如下所示 3.就能看到微信公众号有置顶啦 这样以后你设置的公众号就会在微信中最顶部了,我们如果要取消它也是一样捉拿要点击进入然后再点击取消即可了.

JavaScript操纵窗口的方法小结

一旦你得到了表示窗口的变量,你就能通过各种方法来操纵它.下面介绍一下对窗口的各种操作   在前面的介绍中,我们讨论过close()方法: 复制代码 代码如下: win = window.open("http://www.jb51.net/", "js"): win.close(): JavaScript提供了许多方法与属性,我们可以使用它们来控制窗口. 移动.滚动.改变大小 下面的方法(N4+,IE4+)负责个定窗口的移动.滚动以及大小改变操作: 复制代码 代码如下

vc中播放mp3文件的方法小结

一般播放MP3常见的有两种方法,一种是自己解码,另外一种用系统的库,比如MCI,当然如果可以用控件直接用个控件会更方便. 1.      使用mci   #include <windows.h> #include <stdio.h> #include <mmsystem.h> #include <shellapi.h> #include <AFXCOM_.H>   #pragma comment(lib,"winmm.lib"

js在ie下打开对话窗口的方法小结_javascript技巧

对话框的性质分为模态对话框和非模态对话框: 1.模态对话框: 打开该对话框之后,在该对话框之外的一切操作都是被禁止的,要想进行其他操作,必须先关闭本对话框. js命令: showModalDialog(); 2.非模态对话框: 和模态对话框相反,打开之后,仍可以进行对话框之外的操作. js命令: showModelessDialog();

Yii实现文章列表置顶功能示例_php实例

本文实例讲述了Yii实现文章列表置顶功能的方法.分享给大家供大家参考,具体如下: 我的理解:首先点击获取当前ID,model层查询所有sort字段,遍历数据,得到最大值,修改数据,替换数据,即可. 效果图: 模型层: //显示列表 public function lists1() { $arr=Yii::$app->db->createCommand("select * from acticle join type on type.t_id=acticle.t_id order by