2012-04-12 9 views

答えて

1

いいえMFCアプリケーションでWebBrowserコンポーネントをホストし、非クライアント領域に単一の閉じるボタンをペイントしても問題はありませんが、WebBrowserコンポーネント自体がバックグラウンドをレンダリングします。

+0

しかし、standart WebBrowserコンポーネントの背景を透明にすることは可能です(背景は、そのブラウザで開いたCSSファイルで定義されていません)。 – myWallJSON

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などはありません)としてはあまりよくありませんが、ウェブスタイルのUIの方がWebBrowserよりはるかに優れています(より速く、メモリを少なくし、グラデーション、アニメーション、高度なレイアウトをサポートします)。必要なのは、画像、コントロール、リンク、アニメーション、ボタンを持つ「Web UI」だけで、MFC、WTL、または純WinAPIを使用している場合は、これが良い選択肢です。

0

ウィンドウの背景をキャプチャしてブラウザコンポーネントのバックグラウンドとして追加しようとしましたか?自分で作成したHTML文書(/あなたのチーム)を表示したい場合はしか動作しませんが、そうでない場合は問題は無意味です。

埋め込みブラウザ私はこれをやってみたことがありませんでしたが、メモ欄のような他のコントロールにも入れました。このソリューションを選択した場合でも、ウィンドウが移動またはサイズ変更されるたびにウィンドウの背景を取り戻す必要があることに注意してください。

埋め込みブラウザで背景を表示することができますが、最良の選択肢はCSSで定義された背景を使用することです。これはあなたのもので置き換えられます。 (文書全体の意図しないリロードを回避するために、フォームのサイズ変更/移動の背景をリフレッシュするためにjavascriptシンプルを偽造することを忘れないでください。)here見つけることができる部分画面キャプチャの

詳しい情報を。

関連する問題