2012-04-12 56 views

回答

1

不會。在MFC應用程序中託管WebBrowser組件並在非客戶端區域繪製一個關閉按鈕沒有問題,但WebBrowser組件本身將呈現背景。

+0

但有可能使非標準WebBrowser組件的背景透明(背景並不在我們經由瀏覽器中打開CSS文件中定義的)? – myWallJSON 2012-04-13 09:04:37

2

你可以試試下面的代碼,但是有選擇或調整時,仍然會假象:

private void WebCtrl_Loaded(object sender, RoutedEventArgs e) 
    { 
     var hRef = new HandleRef(null, WebCtrl.Handle); 

     int style = GetWindowLong(hRef, GWL_EXSTYLE); 
     if ((style & WS_EX_TRANSPARENT) == 0) 
      SetWindowLong(hRef, GWL_EXSTYLE, style | WS_EX_TRANSPARENT); 

     style = GetWindowLong(hRef, GWL_STYLE); 
     if ((style & WS_CLIPCHILDREN) == 0) 
      SetWindowLong(hRef, GWL_STYLE, style | WS_CLIPCHILDREN); 
    } 

    IntPtr WebCtrl_MessageHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
    { 
     if (msg == WM_ERASEBKGND) 
      handled = true; 
     return IntPtr.Zero; 
    } 
0

我不認爲你可以做到這一點與標準的web瀏覽器(IE嵌入引擎),因爲它不知道任何有關透明度的願望,並總是會畫出背景。

它可能與替代的HTML引擎,例如HTMLayout。雖然它不如互聯網瀏覽器(沒有JavaScript等),但對於Web風格的UI,它比WebBrowser(更快,使用更少的內存,支持漸變,動畫,高級佈局)要好得多。如果您只需要帶圖片,控件,鏈接,動畫和按鈕的「網絡用戶界面」,並且您使用的是MFC,WTL或純WinAPI,則這是一個不錯的選擇。

0

您是否嘗試捕獲窗口的背景,並將其添加爲瀏覽器組件的背景?當然它會只有,如果你想顯示自己(/團隊)創建的HTML文件,但如果情況並非如此,整個問題將是毫無意義的工作。

我從來沒有試過這樣做,嵌入式瀏覽器,但我做了一些其他控制(如備忘錄框),它的工作。如果你選擇這個解決方案,你應該仍然意識到,當你移動或調整大小時,你必須重新捕獲窗口的背景。

您可以使用您所選擇的解決方案,以顯示在嵌入式瀏覽器的背景,但恕我直言最好的選擇是使用CSS定義的背景,這將與您進行更換。 (不要忘了僞造一個簡單的javascript以刷新窗體大小/移動的背景,以避免無意中重新加載整個文檔。)

有關部分屏幕捕獲的更多信息,請參閱here

相關問題