Visual Studio 2008以降で サンプルの MFC アプリを実行すると大変なことに
VC++ 2008/2010/2012 などのウィザードでMFCのサンプルアプリのテンプレートをそのまま使うと大変なことになります。
具体的にはこう
ツールバーを使用する MFC アプリケーションで起動に失敗する場合がある
Visual C++ 2008 SP1 以降の MFC アプリケーション (CWinAppEx クラスを使用) では、アプリケーションの起動時に、ツールバーやドッキング コントロールの状態を前回アプリケーション実行時の状態に復元する機能が提供されています。前回実行時の状態はレジストリに保存されています。 こ のレジストリからの状態復元処理において、アプリケーション起動時の初期状態のツールバー メニュー ボタン (CMFCToolBarMenuButton) オブジェクトの状態と、レジストリから読み込んだ前回の状態との比較が行われますが、特定の条件下において、レジストリから読み込んだ情報から生成された オブジェクトが必要な情報を持たない状況が発生します。 具体的には、CMFCToolBarMenuButton クラスの一部の情報を持たず、基底クラスの CMFCToolBarButton クラスの情報のみを持っているため、オブジェクトのサイズとしても必要な領域が確保されていない状態となります。 問題発生時に、前回アプリケーション実行時のコントロールの状態を保存した以下のレジストリ キーを削除します。 レジストリ上に保存された前回実行時の状態を削除することで、問題が生じる比較処理が行われないようにします。 HKEY_USERS\<ユーザーの SID>\Software\アプリケーション ウィザードで生成されたローカル アプリケーション\<アプリケーション名> |
いやすぎる・ω・
// TODO: この文字列を、会社名または組織名などの、 // 適切な文字列に変更してください。 SetRegistryKey(_T("アプリケーション ウィザードで生成されたローカル アプリケーション")); LoadStdProfileSettings(4); // 標準の INI ファイルのオプションをロードします (MRU を含む) |
元のソース
Comments