firebreath插件创建一个全屏窗口,但窗口总是在浏览器窗口下出现时,如何将其置于顶部

时间:2014-07-11 02:32:10

标签: window atl firebreath wtl

CaptureScreenApp app;

int MyPluginAPI::captureScreen(const FB::JSObjectPtr& callback)
{
    boost::thread cs(boost::bind(&CaptureScreenApp ::captureScreen,
        app, callback));
    return 1;
}

class CaptureScreenApp {
public:
    CaptureScreenApp() {
        HRESULT hRes;
        hRes = OleInitialize(NULL);
        ATLASSERT(SUCCEEDED(hRes));
        AtlInitCommonControls(ICC_WIN95_CLASSES);
        g_Module.Init(NULL, NULL);
    };
    ~CaptureScreenApp() {
        g_Module.Term();
        OleUninitialize();
    };

    bool captureScreen() {
        CMessageLoop theLoop;
        CMainDialog g_MainDlg;
        g_Module.AddMessageLoop(&theLoop);
        if (NULL == g_MainDlg.Create(NULL)){
            DWORD ret = GetLastError();
            return FALSE; 
        } 
        g_MainDlg.ShowWindow(SW_SHOW);
        g_MainDlg.UpdateWindow();

        int nRet = theLoop.Run();
        g_Module.RemoveMessageLoop();
        return TRUE;    
    };
};

class CMainDialog : public CDialogImpl<CMainDialog>
{
public:
    enum {IDD = IDD_MAIN};
    ....    
}

窗口(新窗口是一个以桌面图片为背景的全屏窗口)我在CaptureScreenApp :: captureScreen中创建时总是在浏览器窗口下显示(浏览器窗口总是在其他单词中激活),怎么样我为新窗口设置了HWND_TOPMOST。像这样:

enter link description here

如何在全屏窗口出现时将其全屏显示?

1 个答案:

答案 0 :(得分:0)

SetWindowPos API允许您更改Z顺序(请务必阅读备注)。您使用NULL父级创建窗口,因此您的窗口完全独立于浏览器窗口,因此无需将其推到前面:它可以是您或交互式用户。