4

MicrosoftがVisualStudio2008用にリリースした「MFC機能パック」を使用するようにレガシーC++コードの一部を更新しています。新しいクラスを使用してCFrameWndExからアプリケーションを派生させ、Office2007スタイルを適用してよりモダンな外観のアプリケーション。これにより、グラデーションで塗りつぶされたウィンドウタイトル、ステータスバーなど、およびリボンツールバーの使用が可能になります。

ただし、アプリケーションには所有者が描画したコントロールがいくつか含まれているため、機能パックで使用される配色に一致するようにこれらを更新したいと思います。理想的には、現在使用されている明るい色と影付きのツールバーの色を知りたいです。

私はドキュメンテーションとウェブを探し回っていましたが、まだ何も見つかりませんでした。誰かがこの情報を見つける方法を知っていますか?

[編集]

特に、実行時に使用されている色を確認する必要があります。新しい静的関数CMFCVisualManager::SetDefaultManagerを使用して、実行時にアプリケーションの外観を変更できます。

次のmsdnページは、使用可能なスタイルの種類、特にOffice2007の外観を示しています 。msdnへのリンク

4

9 に答える 9

1

CMFCVisualManagerは、色情報を取得するためのいくつかの方法を提供しているようです。

CMFCVisualManager :: GetSmartDockingBaseGuideColors()CMFCVisualManager :: GetToolbarHighlightColor()

CMFCVisualManagerのMSDNドキュメントをご覧ください。

良い提案ですが、残念ながら、現在私がCMFCVisualManagerOffice2007 :: Office2007_LunaBlueのスタイルでアプリケーションを実行している場合、さまざまなグレーの色合いが返されます。

迷惑なことに、msdnヘルプは「作成中」なので、何をしているのかさえわかりません。

于 2008-08-15T10:39:39.003 に答える
1

MFC のソース コードを調べたことがありますか?

C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc

于 2008-08-12T13:14:00.273 に答える
1

afxGlobalDataMFC Feature Pack で使用されている現在の色、ブラシ、およびフォントに関する有用な情報が含まれています。特にafxGlobalData.m_clrBarFace、自分のコントロール バーの背景をペイントするときに使用します。

(私は自分の仕事用 PC の前にいないので、上記の構文は正しくないことに注意してください。)

于 2008-10-14T17:28:54.933 に答える
0

「お気に入りの画像エディタを使用して、スクリーングラブから色を選択できると思います。」

これは基本的に私が現在行っていることであり、色を引き出す定数のリストを定義しました。しかし、あまりエレガントではないようです!

于 2008-08-13T12:27:42.270 に答える
0

試したことはありますか: 2007 Office System Document: UI Style Guide for Solutions and Add Ins ?

于 2008-08-12T13:09:23.077 に答える
0

CMFCVisualManager は、色情報を取得するためのいくつかのメソッドを提供しているようです。

CMFCVisualManager::GetSmartDockingBaseGuideColors()
CMFCVisualManager::GetToolbarHighlightColor()

CMFCVisualManager の MSDN ドキュメントを参照してください。

于 2008-08-13T12:51:51.457 に答える
0

@GateKiller、OP は Office 2007 アドインを開発していないため、UI ガイドラインは実際には役に立ちません。これは、Visual C++ 2008 Feature Packを使用する MFC アプリケーションであり、MFC アプリが Office 2007 のルック アンド フィールを利用できるようにします。

于 2008-08-13T12:56:29.343 に答える
0

お気に入りの画像エディターを使用して、スクリーン グラブから色を選択できると思います。

于 2008-08-12T13:38:06.513 に答える
0

良い提案ですが、残念ながら、現在CMFCVisualManagerOffice2007::Office2007_LunaBlueスタイルでアプリケーションを実行しているときに、さまざまなグレーの色合いを返すだけです

CMFCVisualManagerOffice2007::GetTabFrameColors - clrFace 出力パラメーターが灰色ですか?

おそらく、それらはすべて、テーマごとに 1 つのベース色相の上にあるマスクなのでしょうか? CMFCVisualManagerOffice2007::GetStyle() でどの配色が有効であるかを判断できると仮定すると、おそらくその色相を把握し、GetxxxColor() メソッドでマスキングを行うことができます。

于 2008-08-18T16:25:44.410 に答える