// 编写菜单
CMenu PopupMenu;
// 创建弹出菜单
BOOL bRet = PopupMenu.CreatePopupMenu();
int nMenuID = 100;
bRet = PopupMenu.AppendMenu(MF_ENABLED,nMenuID,L"测试");
// 显示菜单
int nCmd = PopupMenu.TrackPopupMenu(TPM_RETURNCMD|TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this);
// 销毁菜单
PopupMenu.DestroyMenu(); CString strDebug;
strDebug.Format(L"%d",nCmd);
AfxMessageBox(strDebug);设置了TPM_RETURNCMD,本来想获取选择的menuitem的Cmd ID,结果TrackPopupMenu直接返回了,菜单一闪提示 strDebug为0值。怎么回事??用法有问题么?
wNotifyCode = HIWORD(wParam); // notification code
wID = LOWORD(wParam); // item, control, or accelerator identifier
hwndCtl = (HWND) lParam; // handle of control
{
CListView::OnInitialUpdate(); // TODO: 调用 GetListCtrl() 直接访问 ListView 的列表控件,
// 从而可以用项填充 ListView。 CListCtrl& MyListCtrl = GetListCtrl();
// 更新CListCtrl显示样式
MyListCtrl.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL);
//DWORD dwExStyle=MyListCtrl.GetExtendedStyle();
//MyListCtrl.SetExtendedStyle(dwExStyle|LVS_EX_FULLROWSELECT);
}
这里如果设置了LVS_SINGLESEL单选风格,TrackPopupMenu就会失败,直接返回0.如果不设置这个style那么就可以了。太邪乎了。这是怎么回事????