トップ回答者
開発中にMFCダイアログバーでツールバーのボタンを増やすたびに実行ファイル側からいちいち「カスタマイズ...」でリセットしていますが、そんなことしなくてもよいのでは?

質問
-
回答
-
リソース変更等の編集によってコントロール数やメニューが変更になった場合、
また、ビューやペインのウインドウIDを変更した場合の直後、
起動時にLoadState()すると誤った情報がメインにロードされてしまいます(落ちはしない様ですが)。
こんな時、自分は regedit.exe を使って、対象のアプリケーション用のレジストリを削除してます。
「登録した名称」全体、または、直下のworkspaceを削除してます。
場所は一般にはHKEY_CURRENT_USER\Software\「登録した名称」\workspace
「登録した名称」は、主AppクラスのInitInstance()等で、
SetRegistryKey( 「登録した名称」);
していると思います。
自分のアプリではカスタマイズは制限しているので、
ユーザーによるカスタマイズの情報(レジストリ)に関しては、
詳しくありません。あしからず。
すべての返信
-
リソース変更等の編集によってコントロール数やメニューが変更になった場合、
また、ビューやペインのウインドウIDを変更した場合の直後、
起動時にLoadState()すると誤った情報がメインにロードされてしまいます(落ちはしない様ですが)。
こんな時、自分は regedit.exe を使って、対象のアプリケーション用のレジストリを削除してます。
「登録した名称」全体、または、直下のworkspaceを削除してます。
場所は一般にはHKEY_CURRENT_USER\Software\「登録した名称」\workspace
「登録した名称」は、主AppクラスのInitInstance()等で、
SetRegistryKey( 「登録した名称」);
していると思います。
自分のアプリではカスタマイズは制限しているので、
ユーザーによるカスタマイズの情報(レジストリ)に関しては、
詳しくありません。あしからず。 -
ダイアログの表示を止められました。
基本は CMainFrame で
m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
の先頭引数を FALSE にすればツールバー右端のボタンがなくなります。
ツールバーやメニューバーのコンテキストメニュー表示抑制は CMFCToolBar、CMFCMenuBar とも仮想関数になっている OnShowControlBarMenu を、
virtual BOOL OnShowControlBarMenu(CPoint point) { return TRUE; }
としてぶら下げ、CMainFrameのそれぞれを派生クラス名にしてやればOKでした。
あと Alt+ドラッグでもボタン位置が変わるのは、たぶん
EnableQuickCustomization(FALSE);
が効いていると思います。
OnCreateでウィンドウがインスタンスを持った後で食わせてやってください。
ここを見た方、ということで。
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年10月10日 0:25