2017-08-21 30 views
0

左側にツリービューが表示されているビュー/ウィンドウに問題があり、右側に選択されたツリーノードに対応する「stuff」を表示する右側のリストスタイルビューがあります。 Windowsエクスプローラの外観と動作に非常に似ています。 "stuff"はリスト、大きなアイコン、小さなアイコンや情報として表示できます。C++ MFCメニューのフォーカスを変更します

ツリーノードの1つが「プレースホルダ」ノードである場合、「すべて選択」が「編集」メニューから実行され、その後に「編集」メニューの「削除」オプションがグレー表示されるという問題がありますRHSビューのすべての項目が選択済みとしてマークされていても、実際に安全に削除することができます。 これは、ツリーノードから別のノードを選択し、同じツリーノードに戻って選択し、最初に選択したリスト、大きなアイコン、小さなアイコン、または情報ビューなどの別のビューを選択することで修正できます。

トレースステートメントは、2番目の作業シナリオでは、右側のビューのアイテムが「can can delete」機能に渡されていますが、機能しないときは、取得するツリービューノードの名前「can can delete」機能に渡されます。 「can I delete」関数がtrueを返すとき、「delete」オプションはEditメニューで有効になり、falseのときは無効になります。

[編集]メニューから[すべて選択]を選択すると、右手のリスト、情報などの表示に、より良い単語を表示するための強制的な方法がありますか?

問題は、どのビュー(「考えられている」)がアクティブで、どこかのワイヤが交差していて編集メニューがツリービューで表示されているRHSノード・リスト・ビュー用です。それは私が苦労しているこれを修正する方法を考え出している。

ありがとうございました

答えて

0

MFCコマンドのルーティングに問題があります。

コマンドのハンドラの配置場所を確認します。

コマンドハンドラは、この順序で検索される:

  1. アクティブビュー
  2. ドキュメント
  3. 文書テンプレート
  4. フレームウィンドウ
  5. アプリケーション。

は、私はあなたがビューでハンドラを持っていると仮定し、フォーカス(アクティブビュー)は、あなたがroutingコマンドを変更することができます

変更、すなわちフレーム内で、ドキュメントに添付されているすべてのビューにコマンドを処理するよう依頼してください。このためにはOnCmdMsgを上書きする必要があります。

here

+0

あなたの答えは私の脳内のいくつかのコーディング線を接続しているようだ詳細を参照してください。リスト/情報クラスのOnEditSelectAllハンドラを見つけ、そこから親ビューのウィンドウにSetactiveviewを呼び出し、ビューがリスト/情報にあり、削除機能が正しく動作しているように見えます。ありがとう!私がやったことが技術的にハックかどうかわからないけど... ;-) – Keith

関連する問題