2014-07-11 1 views
0
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}; 
    ....  
} 

la fenêtre (la nouvelle fenêtre est une fenêtre plein écran avec un pic de bureau comme background) Je crée dans CaptureScreenApp :: captureScreen toujours sous la fenêtre du navigateur quand il apparaît (la fenêtre du navigateur est toujours activée dans un autre mot), quoi que je puisse définir HWND_TOPMOST pour la nouvelle fenêtre. comme ceci:plugin Firebreath créer une fenêtre plein écran, mais la fenêtre toujours sous la fenêtre du navigateur quand il appers, comment puis-je l'amener en haut

enter link description here

comment puis-je mettre la fenêtre en plein écran vers le haut quand il appers? L'API vous permet de changer l'ordre Z (assurez-vous de lire les remarques ici)

Répondre

0

SetWindowPos Vous créez votre fenêtre avec NULL parent, donc votre fenêtre est complètement indépendante de la fenêtre du navigateur, donc il n'y a rien à pousser vers l'avant: ce serait vous ou un utilisateur interactif.

+0

merci! Comme vous le suggérez, utilisez la fenêtre du navigateur en tant que parent, chrome et firefox fonctionne, mais IE a quand même échoué: la fenêtre du navigateur est toujours devant lorsque vous appelez le jsapi pour la première fois, mais la seconde fois. – yyj

+0

Vous pouvez utiliser Spy ++ pour inspecter la disposition effective des fenêtres, puis lire attentivement l'article 'SetWidnowPos' pour voir vos options de mise en avant de la fenêtre (sauf/en plus d'utiliser la fenêtre parent). –

+0

utiliser le SetForegroundWindow (hwnd) Je peux apporter la fenêtre avant, mais ne peut pas le garder en avant lorsque appuyez sur ctrl + tabulation, ce problème vient juste sur IE – yyj

Questions connexes