【问题标题】:Make my MDI application topmost of other applications?让我的 MDI 应用程序在其他应用程序中居于首位?
【发布时间】:2013-02-24 03:50:37
【问题描述】:

我想让我的MDI MFC application 最上面的all other applications' windows 在 Windows 操作系统上运行。所以我可以在我的应用程序中制作one view 的屏幕截图。
但是像SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW);SetFocus()(在我的view class 中调用)这样的函数根本不起作用。
每当another application's window 在我的顶部并且我创建screenshot 时,它会在我的顶部保存window 的图片。

那么如何在other applications' windows之上制作my application's windows(特别是the view window)

【问题讨论】:

  • 使用粗体或斜体标记(* 或 **)而不是代码(`)。

标签: windows mfc window mdi


【解决方案1】:

我想让我的 MDI MFC 应用程序在所有其他应用程序的窗口中处于最顶层。

这根本不可能。如果您的应用程序可以做到这一点,那么其他应用程序也可以。只有一个可以获胜,没有理由让您的应用程序比其他应用程序更特别。

【讨论】:

    【解决方案2】:

    试试:

    SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
    

    或:

    BringWindowToTop( );
    

    【讨论】:

    • 不行,我想我应该先激活我的窗口(或“设置焦点”)。
    • @RubbyMath - SetWindowPos API 调用有效!但是您必须在 CFrame 类中调用它,因为只有应用程序主窗口才能被带到最顶层,而不是任何子视图或子窗口。
    • 有一个小技巧如何在最新版本的 Windows 中窃取焦点。请参阅这篇文章 (codeproject.com/Articles/1724/…)(在页面上搜索术语“如何窃取焦点”)
    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多