在全屏显示窗口

时间:2011-02-22 11:30:04

标签: c# c++ wpf windows winapi

如何在不退出电影播放器​​的全屏模式的情况下全屏播放电影时如何显示窗口?我只是希望窗口能够在电影的顶部出现。我知道这是可行的,因为雅虎messeger每次向你展示一个皮尔逊已登录或退出时都会这样做,而且我确信还有其他程序也可以这样做,但我现在还记不清了。

它可以在C / C ++ mfc中,win api,c#,wpf它不会。

3 个答案:

答案 0 :(得分:3)

只需显示带有z顺序的窗口,该窗口将其置于全屏窗口的顶部。我想你可以通过调用SetWindowPos传递HWND_TOP来做到这一点。像这样:

SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

您可能还想包含SWP_NOACTIVATE,或者可能包含其他SWP_***个选项。您可以检查SetWindowPos函数中的 uFlags 参数,查看不同的SWP_***消息。

答案 1 :(得分:0)

C# 使用user32.dll的SetForegroundWindow()

有关stackoverflow的更多信息 C# Force Form Focus

    // Sets the window to be foreground 
    [DllImport("User32")]
    private static extern int SetForegroundWindow(IntPtr hwnd);
    // Activate or minimize a window 
    [DllImportAttribute("User32.DLL")]
    private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
    private const int SW_SHOW = 5;
    private const int SW_MINIMIZE = 6; private const int SW_RESTORE = 9;
    private void ActivateApplication(string strAppName)
    {
        Process[] pList = Process.GetProcessesByName(strAppName);
        if (pList.Length > 0)
        {
            ShowWindow(pList[0].MainWindowHandle, SW_RESTORE);
            SetForegroundWindow(pList[0].MainWindowHandle);
        }
    }

答案 2 :(得分:0)

SetForegroundWindow将使播放器退出全屏模式,而BringWindowToTop将无效。如果窗口来自与视频播放器相同的应用程序,那么所有其他方法都会起作用,但我需要的是从另一个应用程序的视频播放器(全屏显示)中放入一个窗口。