`
mybwu_com
  • 浏览: 192797 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    VC窗口置顶程序例子

    这个“VC窗口置顶程序例子”提供了一个具体的解决方案,利用Microsoft Visual C++(VC)进行编程,实现窗口的顶级显示功能。 在Windows API中,窗口的层次关系是由其Z顺序决定的。窗口在Z顺序中的位置决定了它们在...

    VC窗口置顶src_VS2010.rar

    在本文中,我们将深入探讨如何在Visual C++(VC)环境中实现窗口置顶功能,以创建始终显示在其他窗口上方的应用程序。这个"VC窗口置顶src_VS2010.rar"压缩包可能包含了一个示例项目或源代码,用于演示如何在Visual ...

    vc对其进程的窗口置顶、取消置顶操作;拖拽消息DROPFILES封装及发送给其他进程

    vs2010实现对其进程的窗口置顶、取消置顶操作;实现DROPFILES消息封装并发送给其他进程。 注:1.一个pid获取到的是多个窗口句柄,操作的要是主窗口句柄;2.可以配合spy++看获取到的句柄是否正确;

    VC 顶层窗口 置顶窗口源代码.rar

    VC 顶层窗口 置顶窗口源代码,显示在最顶层的窗口,当启用本功能后,所有打开的窗口都要置于本窗口的下层,也就是本窗口始终不会被遮挡。目前已经有不少的软件,使用有这种效果,类似视频播放器程序在播放视频时,...

    VC 限定框架窗口的大小和位置.rar

    VC 限定框架窗口的大小和位置,无法移动且固定大小的SDI,用VC 编写实现这种固定窗口大小,且无法用鼠标拖动的窗口。窗口是不能改变大小的,窗口标题也不能被拖动,运行程序后,窗口的位置就已经固定,并不能移动和...

    VC中获取窗口句柄的各种方法

    本篇文章将详细介绍在VC中获取窗口句柄的多种方法。 1. **AfxGetMainWnd() 函数** 这个函数是MFC框架提供的一种便捷方式,用于获取应用程序的主窗口句柄。在MFC应用程序中,通常在CWinApp派生类的成员函数中使用...

    窗口总在最前,置顶窗口,顶层显示的VC 窗口.rar

    VC 通过编程实现在最顶层显示的窗口,也就是窗口置顶,这是一个目前来说较普遍的应用了,不少程序都喜欢自己拥有这样的霸权,像一些视频播放器,都有置于最顶层显示的定义项。本Demo代码就向大家演示了如何在VC编程...

    VC对话框动态窗口大小类

    在描述中提到的"VC对话框动态窗口大小类"是一个MFC基类,它的设计目的是允许子类化后的对话框根据用户的拖动行为动态改变其窗口尺寸。这种功能可以提供更好的用户体验,因为用户可以根据需要查看或操作更多的内容,...

    VC窗口函数 窗口风格设定函数

    ### VC窗口函数与窗口风格设定函数详解 在Visual C++(VC)开发环境中,窗口的创建、管理和控制是实现用户界面的重要组成部分。本篇将详细阐述VC中的窗口函数及其如何设置窗口风格,以便开发者能够更好地理解和应用...

    vc控制其他窗口简单实例

    这个"vc控制其他窗口简单实例"是一个针对初学者的教程,展示了如何利用Visual C++(VC)编程语言实现跨窗口操作,尤其是如何操控其他应用程序的界面元素。在这个实例中,主要涉及了以下几个关键知识点: 1. **窗口...

    VC打造顶层窗口

    在这个"VC打造顶层窗口"的教程中,我们将聚焦于如何利用Microsoft Visual C++ (VC++)来编写代码,使创建的窗口始终位于所有其他窗口的最上方,即置顶窗口。这个功能在很多应用程序中都有用到,比如浮动工具栏或者...

    VC不规则窗口

    在Windows编程领域,"VC不规则窗口"是指那些形状不局限于矩形,可以拥有自定义形状的窗口。这种技术在创建特殊效果或者某些特定应用程序时非常有用,比如游戏中的非矩形窗口或带有透明区域的窗口。在Visual C++...

    VC中如何实现窗口的隐藏

    VC 中如何实现窗口的隐藏 在 VC 中实现窗口的隐藏是一个常见的需求,特别是在开发桌面应用程序时。隐藏窗口可以使程序在后台运行,不会干扰用户的其他操作。下面讨论如何在 VC 中实现窗口的隐藏。 一、使用 ...

    VC拆分窗口,三叉窗口

    在标题“VC拆分窗口,三叉窗口”中提到的“拆分窗口”和“三叉窗口”是两种特殊的窗口样式,用于提供更灵活的用户交互体验。下面我们将详细探讨这两个概念以及如何在VC中实现它们。 1. **拆分窗口(Splitter Window...

    VC界面+停靠窗口+自动隐藏窗口

    本文将深入探讨如何使用VC6.0实现如VS2010中的弹出式工具栏功能,包括窗口停靠、自动隐藏和弹出机制。我们将主要关注以下几个方面: 1. **VC界面设计**:VC6.0中的MFC(Microsoft Foundation Classes)库为我们提供...

    VC写的窗口截图工具,可截取当前名目中的所有控件

    标题中的“VC写的窗口截图工具,可截取当前名目中的所有控件”指的是使用Microsoft Visual C++(简称VC)开发的一款屏幕截图软件,具备特殊功能,能够捕捉到屏幕上特定窗口内的所有控件,比如按钮、文本框、列表视图...

    置顶窗口,顶层显示的VC++窗口

    VC++通过编程实现在最顶层显示的窗口,也就是窗口置顶,这是一个目前来说较普遍的应用了,不少程序都喜欢自己拥有这样的霸权,像一些视频播放器,都有置于最顶层显示的定义项。本Demo代码就向大家演示了如何在VC编程...

    vc6.0 mfc 分割窗口

    本文将深入探讨如何使用MFC在VC6.0中实现窗口分割功能,创建一个可以分为两个独立工作区的窗口。 首先,我们需要创建一个新的MFC应用项目。在VC6.0中,选择"File" -> "New",然后在"Project"对话框中选择"MFC ...

    VC框架窗口界面设计教程

    VC框架窗口界面设计教程 vc教程 vc界面设计VC框架窗口界面设计教程 vc教程 vc界面设计VC框架窗口界面设计教程 vc教程 vc界面设计

    VC遍历窗口及窗口子控件

    该程序可遍历当前打开的所有窗口,以及每个窗口的子控件,显示出窗口名字,子控件名字及类型,使用VC++开发

Global site tag (gtag.js) - Google Analytics