1. 程式人生 > >基於OpenCV的視訊影象組態 (10): CEF瀏覽器與圖形軟體互嵌

基於OpenCV的視訊影象組態 (10): CEF瀏覽器與圖形軟體互嵌

開發者工具

CEF核心很強大,已經提供相當多的功能。

比如開發者工具,呼叫是如此的簡單。

稍微包裝一下,宣告一個屬性

    __property bool ShowDevTool = { read = GetDevToolVisible, write = SetDevToolVisible };

    bool __fastcall GetDevToolVisible();

    void __fastcall SetDevToolVisible(bool value);

 

 

bool __fastcall TCbwChromiumExplorer::GetDevToolVisible() {

    bool result = false;

    if(DevTools)

        result = DevTools->Visible;

    return result;

}

 

void __fastcall TCbwChromiumExplorer::SetDevToolVisible(bool visible) {

    if(!DevTools || !FBrowserParent)

        return;

    DevTools->Visible = visible;

    DevTools->Width = FBrowserParent->Width / 4;

    if(visible)

        Chromium->ShowDevTools(TPoint(0x80000000, 0x80000000), DevTools);

    else

        Chromium->CloseDevTools(DevTools);

    if(FSelfDevToolsFlag)

        OnResize(FBrowserParent);

}


則呼叫的時候,直接切換該屬性值即可。

    GlobalChromiumExplorer->ShowDevTool = !GlobalChromiumExplorer->ShowDevTool;

實現效果

與已有視窗互嵌

研究一下程式碼,可片面得出結論:CEF可以與視窗控制代碼很好地整合。

拿以前編的圖形軟體來說事,之前如果要整合,需要把圖形軟體實現為OCX,然後在網頁中呼叫。現在自己已經可以實現瀏覽器了,那就用另外一種方式進行整合 à 把目標視窗嵌入到CEF的控制代碼中。

先實現功能看看效果,用硬編碼方式來處理:

    GlobalChromiumExplorer->BrowserParent = FCurrentForm->Panel_Child;

    FCurrentForm->ScrollBox->BringToFront();

    FCurrentForm->ScrollBox->Align = alNone;

    FCurrentForm->ScrollBox->Top = 430;

    FCurrentForm->ScrollBox->Left = 270;

    FCurrentForm->ScrollBox->Width = 1050;

    FCurrentForm->ScrollBox->Height = 350;

演示效果

 [注:如果圖片不能顯示,可到點選開啟連結部落格園檢視,或者直接顯示動畫圖片]

後續通過CEF訪問取得網頁中目標元素的位置與大小,然後將目標視窗嵌入到指定位置,即可實現已有視窗介面與網頁之間的完美整合。