ポップアップメニューを選択不可にするには – プログラミング – Home

ポップアップメニューを選択不可にするに...
 
通知
すべてクリア

[解決済] ポップアップメニューを選択不可にするには


まかろに
 まかろに
(@まかろに)
ゲスト
結合: 20年前
投稿: 36
Topic starter  

いつもお世話になっております、まかろにです。

ツリービューアイテムの右クリックで出るポップアップメニューの項目を
選択不可状態にしようとしていますが、うまくいきません。
ソースの方は

void COOOView::OnRButtonDown(UINT nFlags, CPoint point)
{
  // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたは
       デフォルトの処理を呼び出してください

  CMainFrame *pFrame = (CMainFrame*)AfxGetApp() -> m_pMainWnd;
  CTreeCtrl *pTree;
  CMenu menu;
  CMenu *pPopup;

  pTree = &GetTreeCtrl();
{
  // ここで押されたアイテム番号に応じた処理を入れる予定
}

  // ポップアップメニュー読み込み
  menu.LoadMenu(IDR_POPUP);
  pPopup = menu.GetSubMenu(0);
  ClientToScreen(&point);
  
  pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, pFrame);

  pPopup->EnableMenuItem(ID_MENUITEM_INIT,
              MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );

  CTreeView::OnRButtonDown(nFlags, point);
}

void COOOView::OnMenuitemInit()
{
  // TODO: この位置にコマンド ハンドラ用のコードを追加してください
}

となっています。
メニューに ”初期化” 項目を入れて、それを選択不可状態にしようとしています。
何か間違っているとか足りない部分があれば、ご指摘いただければと思います。
よろしくお願い致します。

<開発環境>
・Windows XP
・VC++ 6.0 MFC


引用未解決
トピックタグ
UPcn
 UPcn
(@UPcn)
ゲスト
結合: 20年前
投稿: 1
 

TrackPopupMenu() はメニューを表示して選択されるまで制御を返しません。
ID_MENUITEM_INIT メニューの更新ハンドラを作って(ON_UPDATE_COMMAND_UI)、
そちらで Enable 制御してください。

なお、右クリックで表示されるメニュー(コンテキストメニュー)は、
WM_RBUTTONDOWN ではなく、WM_CONTEXTMENU で処理するのが定石です。
WM_CONTEXTMENU なら右クリックからだけでなく、
キーボードのアプリケーションキー(メニュー印のキー)からも
利用できるようになります。


返信引用
まかろに
 まかろに
(@まかろに)
ゲスト
結合: 20年前
投稿: 36
Topic starter  

アドバイスありがとうございます。
おかげさまでうまくいきました。
まだまだ勉強不足ですね、すいません。がんばります。
今後もよろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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