ダイアログ ベースのアプリケーションで CMFCVisualManager を使用して、アプリケーションの外観を変更できますか? もしそうなら、それはどのように行われますか?
アイデアは、MSVC 2008 でリリースされた MFC Feature Pack を使用して、プッシュ ボタンなどのコントロールの形状、色などを変更することです。
ダイアログ ベースのアプリケーションで CMFCVisualManager を使用して、アプリケーションの外観を変更できますか? もしそうなら、それはどのように行われますか?
アイデアは、MSVC 2008 でリリースされた MFC Feature Pack を使用して、プッシュ ボタンなどのコントロールの形状、色などを変更することです。
いいえ、できません。少なくとも、Feature Pack バージョンについて話している場合はそうではありません。バージョン 10 の BCGSoft ライブラリにはこの機能があります。たとえば、http://www.bcgsoft.com/bcgcontrolbarpro-versions.htmおよびhttp://www.bcgsoft.com/images/SkinnedBuiltInDlgs.jpgを参照してください。MFC 機能パックは、多かれ少なかれ BCGSoft ライブラリの以前のバージョンであり、MS はそれらからライセンスを購入しました。
OnApplicationLook
ベースに実装することで、いくつかの MFC-feature-pack 機能を使用できると思います(このページCDialog
のステップ 4 を確認してください)。メソッド全体を実装する方が良いかもしれませんが、これを に追加するだけでアプリケーションをテストできます:OnApplicationLook
OnInitDialog
CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver);
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
CDockingManager::SetDockingMode(DT_SMART);
RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
Common Controls マニフェストをプロジェクト リソースに追加する必要があります。マニフェスト ファイルのコードは次のとおりです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Program Name"
type="win32"
/>
<description>Description of Program</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
これは、ビジュアル スタイルを有効にするための最小限のコードです。CDialog をフレームに簡単にポップできるはずです。IDR_MAINFRAME はメニュー リソースです。
class CMFCApplication2Dlg : public CFrameWndEx
{
CMFCMenuBar bar;
public:
CMFCApplication2Dlg() : CFrameWndEx()
{
LoadFrame(IDR_MAINFRAME);
bar.Create(this);
}
};
class CMFCApplication2App : public CWinAppEx
{
public:
virtual BOOL InitInstance()
{
CWinAppEx::InitInstance();
CMFCVisualManagerOffice2007::SetStyle(
CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
CMFCVisualManager::SetDefaultManager(
RUNTIME_CLASS(CMFCVisualManagerOffice2007));
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
m_pMainWnd = new CMFCApplication2Dlg();
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}
};
CMFCApplication2App theApp;