ダイアログ画面のEditBoxのコンテキストメニュー – プログラミング – Home

ダイアログ画面のEditBoxのコンテ...
 
通知
すべてクリア

[解決済] ダイアログ画面のEditBoxのコンテキストメニュー


sunyopu
 sunyopu
(@sunyopu)
ゲスト
結合: 23年前
投稿: 68
Topic starter  

以下の手順で作成したEditBoxについて質問です。

 ・VisualStudio のMFC-AppWizardで、
  ダイアログベースのプロジェクトを作成。
 ・リソースエディタで上記ダイアログに
  EditBoxを追加。

マウス右クリックで表示されるメニューに
不必要な項目(「右から左に読む」とか)があり、
削除したいのですが方法が分かりません。

ご存知の方がおられましたらお教え願いたいです。

開発環境は、
 WindousXP(SP2)/VC++6.0(SP5)/MFC使用 です。


引用未解決
トピックタグ
r
 r
(@r)
ゲスト
結合: 22年前
投稿: 48
 

よく知らないけど、OSの設定(「地域と言語のオプション」あたりかな)で出るものじゃ
ないですか?
だとすれば、ユーザーが意図して出るように指定しているから出るのであって、それを消
す必要があるのでしょうか?


返信引用
sunyopu
 sunyopu
(@sunyopu)
ゲスト
結合: 23年前
投稿: 68
Topic starter  

エクスプローラとかのアドレスバーでマウス右クリックしても、
同様のメニューが表示されるので、たしかにOS標準なのかも知れません。

画面キャプションを右クリックしたときに
出てくるシステムメニューについては、

 C***Dlg::OnInitDialog() の中とかで、
 CMenu* pSysMenu = GetSystemMenu(FALSE);
 if( pSysMenu != NULL )
 {
  pSysMenu->RemoveMenu( SC_SIZE, MF_BYCOMMAND );
 }

上記のような感じで簡単に
不要項目を削除できるので、
当件についても同等のことができないかと
思い質問してみました。


返信引用
r
 r
(@r)
ゲスト
結合: 22年前
投稿: 48
 

不要項目は OS や設定によって増加してしまう可能性があるので、
必要なものだけを表示するのがいいでしょう。

最も単純には、
CEditの派生クラスを作成し、WM_CONTEXTMENU ハンドラ(OnContextMenu)で
自作のポップアップメニューを表示することです。
CUT,COPY,PASTEなどが選択されたときの処理は自分で書く必要がありますが、
これらは CEdit のメンバ関数を使えば簡単にできると思います。

注)
作成したハンドラ内で基本クラスの CEdit::OnContextMenu() や CWnd::Default() を
を呼びさえしなければデフォルトのメニューは出なくなるはずです。


返信引用
sunyopu
 sunyopu
(@sunyopu)
ゲスト
結合: 23年前
投稿: 68
Topic starter  

このプログラムをWindows2000で動作させ、
同様の操作をしたところ、
余分なメニュー項目は表示されませんでした。
やはりOS依存みたいです。

> 最も単純には、
> CEditの派生クラスを作成し、WM_CONTEXTMENU ハンドラ(OnContextMenu)で
> 自作のポップアップメニューを表示することです。
> CUT,COPY,PASTEなどが選択されたときの処理は自分で書く必要がありますが、
> これらは CEdit のメンバ関数を使えば簡単にできると思います。

そこまでしないと、
必要な項目のみ表示するのは無理なのですね。

ご回答ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました