ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
生活随笔
收集整理的這篇文章主要介紹了
ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在開(kāi)發(fā)中會(huì)用到右鍵菜單,我們來(lái)一起學(xué)習(xí)一下。
假如,我們現(xiàn)在已經(jīng)準(zhǔn)備好了列表,就差右鍵處理了。
?
1、在資源視圖中的添加一個(gè)MENU,如圖
2、給要添加右鍵菜單的ListCtrl子類(lèi),添加消息
按 ctrl + shift + x ?打開(kāi)類(lèi)向?qū)?#xff0c;選擇要添加的子類(lèi),在消息中找到 =NM_RCLICK消息,雙擊=NM_RCLICK,就會(huì)在右側(cè)出現(xiàn)OnNMRClick,然后點(diǎn)擊編輯代碼即可
?
?
3、編輯代碼
?
void CRunSerListCtr::OnNMRClick(NMHDR *pNMHDR, LRESULT *pResult) {LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼*pResult = 0;NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;if (pNMListView->iItem != -1){DWORD dwPos = GetMessagePos();CPoint point(LOWORD(dwPos), HIWORD(dwPos));CMenu menu;//添加線(xiàn)程操作VERIFY(menu.LoadMenu(IDR_MENU1)); //這里是我們?cè)?中定義的MENU的文件名稱(chēng)CMenu* popup = menu.GetSubMenu(0);ASSERT(popup != NULL);popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);//下面的兩行代碼主要是為了后面的操作為準(zhǔn)備的//獲取列表視圖控件中第一個(gè)被選擇項(xiàng)的位置 POSITION m_pstion = GetFirstSelectedItemPosition();//該函數(shù)獲取由pos指定的列表項(xiàng)的索引,然后將pos設(shè)置為下一個(gè)位置的POSITION值m_nIndex = GetNextSelectedItem(m_pstion);CString str;str.Format(L" m_nIndex = %d", m_nIndex);MessageBox(str, str, 0);}}測(cè)試效果
轉(zhuǎn)載于:https://www.cnblogs.com/ye-ming/p/7107625.html
總結(jié)
以上是生活随笔為你收集整理的ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 小学期-第二次
- 下一篇: Oracle把逗号分割的字符串转换为可放