ChromeスタイルのC#アプリケーション?

c# google-chrome windows-vista

私はビスタグラス機能について話していません、私はすでにそれを達成する方法を知っています。 私が話している機能は、Office 2007がロゴとツールバーを使って行うように、タイトルバーにコントロールを追加することです。

  14  16


ベストアンサー

あなたはその効果を達成するためにいくつかのWin32相互運用機能を実行する必要があります。 WinformsとWPFのどちらを使用しているかに応じて、メッセージ処理にフックする方法が異なります(Winformsを覚えていないので、WPFのすべての例を示します)。 しかし、どちらの場合も、次のことが必要です。

  1. ウィンドウの作成をインターセプトし、ウィンドウのスタイルを変更し、
    拡張スタイル。 WPFでは、http://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.aspx [+ HwndSource +]から継承し、http://msdn.microsoft.comを変更する必要があります。 /en-us/library/system.windows.interop.hwndsourceparameters.aspx [+ HwndSourceParameters +]これを実現するため。 通常のスタイルにはWS_OVERLAPPEDWINDOW、WS_CLIPSIBLINGS、WS_VISIBLE、そして拡張スタイルにはWS_EX_WINDOWEDGEとWS_EX_APPWINDOWが必要です。

  2. HwndSourceパラメーターを介してメッセージハンドラーを追加する
    HwndSourceHook。

  3. ステップ2のフックを介して追加されたメッセージプロシージャでは、次のことが必要です。
    いくつかのメッセージを処理します。

  4. 上記を行うと、WPFがペイントするクライアント領域
    ビジュアルツリーはウィンドウの領域全体に広がります。 あなたのアプリケーションがユーザーにとって通常のアプリケーションのように見えるようにするためには、 “クリティカルでない”ビジュアルを追加する必要があります。

  5. さらにいくつかのメッセージが必要です。

  6. 入手したい場合は、Win32テーマAPIをご覧ください。
    「非クライアント」領域で使用する境界線、キャプション、閉じる、最小化、最大化ボタン用の標準Win32アセット。

  7. Glassを自分のウィンドウに拡張したい場合は、次のようにします。

あなたはhttp://pinvoke.net [P / Invoke]であなたが必要とするすべてのメッセージ、スタイルと対応するWin32 APIの適切なC#定義を見つけることができます。

`+ WindowStyle = none +`で標準のWPFウィンドウを使用することでも同様の効果を達成できます。 しかしながら、あなたのアプリケーションと他のアプリケーションに対するデスクトップの振る舞いの間にはいくつかの違いがあるでしょう。最も明白なのは、タスクバーを右クリックしてもウィンドウを積み重ねたりタイル張りしたりできないことです。

また、この機能の一部を有効にするサードパーティ製のコンポーネントを調べることもできます。 私は(あなたが見ることができるように、私はWin32の相互運用機能を怖がっていない: – )を使用していないので、私はあなたに特にお勧めできません。

22


Franciが述べているように、あなたが欲しいのはDwmExtendFrameIntoClientAreaです。 その方法を示すCodeprojectの例を次に示します。

8


WPF製品チームの開発者であるJoe Castroには、「WPF Chrome」というMSDNコードギャラリープロジェクトがあり、これを使用してOffice 2007のようなUI(つまり、ウィンドウのクライアント領域と非クライアント領域の両方にまたがるコントロール)を作成できます。 )

ここでそれを見つけます:http://code.msdn.microsoft.com/chrome

8


私はDotNetBarコントロールスイートをうまく使っています。

2


タイトルとURLをコピーしました