3

リストボックスのエントリを右クリックして、コンテキストメニューに特定のオプションを表示したいリストボックスのあるウィンドウがあります。オンラインで調べましたが、MFC C ++、または単にc#でしか例を取得できないようです。

これは標準のWin32c++で可能ですか?WM_CONTEXTMENUメッセージを介してリストボックスの右クリックを処理できますが、メニューを表示するにはどうすればよいですか?

4

1 に答える 1

7

関連する質問に関するBhargav Bhatのコメントのおかげで、私はそれを理解しました。

WndProc で WM_CONTEXTMENU をチェックして、リストボックスの右クリックを処理します。

wParam パラメーターを介してウィンドウへのハンドルを取得し、それをリストボックスと比較して、ユーザーがリストボックスを右クリックしたかどうかを確認します。

そこから、CreatePopupMenu() を介して popupmenu を作成します。

InsertMenu()/AppendMenu() を介してメニューに挿入/追加します。

最後に、TrackPopupMenu() を呼び出します。

case WM_CONTEXTMENU:
        if ((HWND)wParam == m_hListBox) {
            m_hMenu = CreatePopupMenu();
            InsertMenu(m_hMenu, 0, MF_BYCOMMAND | MF_STRING | MF_ENABLED, 1, "Hello");
            TrackPopupMenu(m_hMenu, TPM_TOPALIGN | TPM_LEFTALIGN, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), 0, m_hWnd, NULL); 
        }
于 2012-12-22T09:26:31.757 に答える