ピクチャーボックス上のみでポップアップメニューを表示させるには?


ユウタロウ  2003-10-31 19:34:22  No: 52371

おはようごじゃる!
VC6.0のダイアログベースでランチャーを作っているのですが
ピクチャーボックス上のみでポップアップメニューを表示させるやり方がわからないので教えていただきたいです。
現在は、次のような形で作っています。
void CLauncherDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
  // TODO: この位置にメッセージ ハンドラ用のコードを追加してください

  CMenu    menu;
    menu.LoadMenu(IDR_MENU1);    /* IDR_MENU1はResourceViewで追加したメニュー */
    menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
    // DestroyMenu()はCMenuデストラクタから自動的に呼び出されます。
  
}ポップアップメニューを表示させるところまではできたのですが、
ピクチャーボックス上のみで表示させるには何を使えばいいのですか?

動作環境は  Win98SEです


瀬戸っぷ  2003-10-31 21:23:40  No: 52372

> ピクチャーボックス上のみでポップアップメニューを表示させるやり方がわからないので教えていただきたいです。
> 現在は、次のような形で作っています。
> void CLauncherDlg::OnContextMenu(CWnd* pWnd, CPoint point) 

実行時のスクリーン座標が渡されるのですから、
CWnd::WindowFromPoint()かCWnd::ChildWindowFromPoint()で調べるコトが出来ると思いますが。


ユウタロウ  2003-11-04 09:59:57  No: 52373

void CLauncherDlg::OnRButtonDown(UINT nFlags, CPoint point) 
{
  // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
    POINT pt ;
    GetCursorPos( &pt );
    CWnd* hWnd = ChildWindowFromPoint( pt );
    if(hWnd == NULL){
      m_flg = FALSE;
      return;
    }
    m_flg = TRUE;
  CDialog::OnRButtonDown(nFlags, point);
}

void CLauncherDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
  // TODO: この位置にメッセージ ハンドラ用のコードを追加してください
  if(m_flg == FALSE){
    m_flg = TRUE;
    return;
  }

  CMenu    menu;
    menu.LoadMenu(IDR_MENU1);    /* IDR_MENU1はResourceViewで追加したメニュー */
    menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
    // DestroyMenu()はCMenuデストラクタから自動的に呼び出されます。
  
}

のようにやってみたのですが上手くいきません。アドバイスお願いします。
ちなみにm_flgはBOOLがたでフラグを作り使用しています。


tetuo  2003-11-04 18:16:02  No: 52374

>POINT pt ;
>GetCursorPos( &pt );

こんなことしなくても引数のpointを使えばいいと思いますよ。

>if(hWnd == NULL)
NULLじゃなくてピクチャーボックスのCWndクラスへのポインターと
比較しなければ。

というか、クラスウィザードでピクチャーボックスの
WM_RBUTTONUPイベントハンドラを追加して
そこにポップアップメニューのコードを書けばいいような。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加