以下の手順で作成したEditBoxについて質問です。
・VisualStudio のMFC-AppWizardで、
ダイアログベースのプロジェクトを作成。
・リソースエディタで上記ダイアログに
EditBoxを追加。
マウス右クリックで表示されるメニューに
不必要な項目(「右から左に読む」とか)があり、
削除したいのですが方法が分かりません。
ご存知の方がおられましたらお教え願いたいです。
開発環境は、
WindousXP(SP2)/VC++6.0(SP5)/MFC使用 です。
よく知らないけど、OSの設定(「地域と言語のオプション」あたりかな)で出るものじゃ
ないですか?
だとすれば、ユーザーが意図して出るように指定しているから出るのであって、それを消
す必要があるのでしょうか?
エクスプローラとかのアドレスバーでマウス右クリックしても、
同様のメニューが表示されるので、たしかにOS標準なのかも知れません。
画面キャプションを右クリックしたときに
出てくるシステムメニューについては、
C***Dlg::OnInitDialog() の中とかで、
CMenu* pSysMenu = GetSystemMenu(FALSE);
if( pSysMenu != NULL )
{
pSysMenu->RemoveMenu( SC_SIZE, MF_BYCOMMAND );
}
上記のような感じで簡単に
不要項目を削除できるので、
当件についても同等のことができないかと
思い質問してみました。
不要項目は OS や設定によって増加してしまう可能性があるので、
必要なものだけを表示するのがいいでしょう。
最も単純には、
CEditの派生クラスを作成し、WM_CONTEXTMENU ハンドラ(OnContextMenu)で
自作のポップアップメニューを表示することです。
CUT,COPY,PASTEなどが選択されたときの処理は自分で書く必要がありますが、
これらは CEdit のメンバ関数を使えば簡単にできると思います。
注)
作成したハンドラ内で基本クラスの CEdit::OnContextMenu() や CWnd::Default() を
を呼びさえしなければデフォルトのメニューは出なくなるはずです。
このプログラムをWindows2000で動作させ、
同様の操作をしたところ、
余分なメニュー項目は表示されませんでした。
やはりOS依存みたいです。
> 最も単純には、
> CEditの派生クラスを作成し、WM_CONTEXTMENU ハンドラ(OnContextMenu)で
> 自作のポップアップメニューを表示することです。
> CUT,COPY,PASTEなどが選択されたときの処理は自分で書く必要がありますが、
> これらは CEdit のメンバ関数を使えば簡単にできると思います。
そこまでしないと、
必要な項目のみ表示するのは無理なのですね。
ご回答ありがとうございました。