2012-12-22 65 views
3

我有一個帶有列表框的窗口,我想要右鍵單擊列表框中的一個條目,並在上下文菜單中顯示某些選項。我在網上看過,但似乎我只能在MFC C++或簡單的C#中獲得示例。如何在列表框上右鍵單擊創建上下文菜單?

這是可能的標準Win32 c + +?我可以通過WM_CONTEXTMENU消息處理右鍵單擊列表框,但我怎樣才能使菜單顯示?

+0

也許相關[這](http://stackoverflow.com/questions/12796501/detect-clicking-inside-listview-and-show-context-menu)的問題?在這種情況下,也不會使用TrackPopupMenu? –

回答

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); 
     } 
相關問題