下面是我弄的,,可是不知道该怎么删
//消息处理
LRESULT UserListViewNotify (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HINSTANCE hInst=GetModuleHandle(NULL);
switch (((LPNMHDR) lParam)->code)
{
case NM_RCLICK:
{
NMITEMACTIVATE *lpnmitem = (LPNMITEMACTIVATE) lParam;
HMENU hMenu,hTrackMenu;
POINT point;
//char szBuffer[80];
if(lpnmitem->iItem!=-1)
{
//wsprintf(szBuffer,"你点击的是第%d行,第%d列\n",lpnmitem->iItem,lpnmitem->iSubItem);
//MessageBox(lpnmitem->hdr.hwndFrom,szBuffer,TEXT("TEST"),MB_OK);
GetCursorPos(&point);
hMenu=LoadMenu(hInst,TEXT("USERPOPUP"));
hTrackMenu = GetSubMenu (hMenu, 0);
TrackPopupMenu(hTrackMenu,TPM_LEFTALIGN,point.x,point.y,0,hwnd,NULL);
}
else
return FALSE;
}
break;
case IDM_USER_DEL:
{
char szBuffer[80];
wsprintf(szBuffer,"你删除的是第%d行,第%d列\n",lpdel->iItem,lpdel->iSubItem);
MessageBox(hwnd,szBuffer,TEXT("TEST"),MB_OK);
}
break;
}
return TRUE;
}
//消息处理
LRESULT UserListViewNotify (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HINSTANCE hInst=GetModuleHandle(NULL);
switch (((LPNMHDR) lParam)->code)
{
case NM_RCLICK:
{
NMITEMACTIVATE *lpnmitem = (LPNMITEMACTIVATE) lParam;
HMENU hMenu,hTrackMenu;
POINT point;
//char szBuffer[80];
if(lpnmitem->iItem!=-1)
{
//wsprintf(szBuffer,"你点击的是第%d行,第%d列\n",lpnmitem->iItem,lpnmitem->iSubItem);
//MessageBox(lpnmitem->hdr.hwndFrom,szBuffer,TEXT("TEST"),MB_OK);
GetCursorPos(&point);
hMenu=LoadMenu(hInst,TEXT("USERPOPUP"));
hTrackMenu = GetSubMenu (hMenu, 0);
TrackPopupMenu(hTrackMenu,TPM_LEFTALIGN,point.x,point.y,0,hwnd,NULL);
}
else
return FALSE;
}
break;
case IDM_USER_DEL:
{
char szBuffer[80];
wsprintf(szBuffer,"你删除的是第%d行,第%d列\n",lpdel->iItem,lpdel->iSubItem);
MessageBox(hwnd,szBuffer,TEXT("TEST"),MB_OK);
}
break;
}
return TRUE;
}
theCtrl.DeleteItem(num); //num为行号
LRESULT UserListViewNotify (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HINSTANCE hInst=GetModuleHandle(NULL);
switch (((LPNMHDR) lParam)->code)
{
case NM_RCLICK:
{
NMITEMACTIVATE *lpnmitem = (LPNMITEMACTIVATE) lParam;
HMENU hMenu,hTrackMenu;
POINT point;
//char szBuffer[80];
if(lpnmitem->iItem!=-1)
{
//wsprintf(szBuffer,"你点击的是第%d行,第%d列\n",lpnmitem->iItem,lpnmitem->iSubItem);
//MessageBox(lpnmitem->hdr.hwndFrom,szBuffer,TEXT("TEST"),MB_OK);
GetCursorPos(&point);
hMenu=LoadMenu(hInst,TEXT("USERPOPUP"));
hTrackMenu = GetSubMenu (hMenu, 0);
TrackPopupMenu(hTrackMenu,TPM_LEFTALIGN,point.x,point.y,0,hwnd,NULL);
}
else
return FALSE;
}
break;
case IDM_USER_DEL:
{
POINT point;
DWORD dwpoint;
char szBuffer[80];
dwpoint=GetMessagePos();
point.x=LOWORD(dwpoint);
point.y=HIWORD(dwpoint);
ScreenToClient(hwnd,&point);
LVHITTESTINFO pInfo;
ZeroMemory(&pInfo,sizeof(pInfo));
pInfo.pt=point;
pInfo.flags=LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON;
if(ListView_HitTest(hwnd,&pInfo)!=-1)
{
wsprintf(szBuffer,"你删除的是第%d行,第%d列\n",pInfo.iItem,pInfo.iSubItem);
MessageBox(hwnd,szBuffer,TEXT("TEST"),MB_OK);
}
}
break;
}
return TRUE;
}
在处理右键菜单IDM_USER_DEL时,,获取不到行号和列号
int nSelect = theCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);
theCtrl.DeleteItem(nSelect ); //nSelect 为行号
LRESULT UserListViewNotify (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HINSTANCE hInst=GetModuleHandle(NULL);
switch (((LPNMHDR) lParam)->code)
{
case NM_RCLICK:
{
NMITEMACTIVATE *lpnmitem = (LPNMITEMACTIVATE) lParam;
HMENU hMenu,hTrackMenu;
POINT point;
//char szBuffer[80];
if(lpnmitem->iItem!=-1)
{
//wsprintf(szBuffer,"你点击的是第%d行,第%d列\n",lpnmitem->iItem,lpnmitem->iSubItem);
//MessageBox(lpnmitem->hdr.hwndFrom,szBuffer,TEXT("TEST"),MB_OK);
GetCursorPos(&point);
hMenu=LoadMenu(hInst,TEXT("USERPOPUP"));
hTrackMenu = GetSubMenu (hMenu, 0);
TrackPopupMenu(hTrackMenu,TPM_LEFTALIGN,point.x,point.y,0,hwnd,NULL);
}
else
return FALSE;
}
break;
case IDM_USER_DEL:
{
POINT point;
DWORD dwpoint;
char szBuffer[80];
dwpoint=GetMessagePos();
point.x=LOWORD(dwpoint);
point.y=HIWORD(dwpoint);
ScreenToClient(hwnd,&point);
LVHITTESTINFO pInfo;
ZeroMemory(&pInfo,sizeof(pInfo));
pInfo.pt=point;
pInfo.flags=LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON;
if(ListView_HitTest(hwnd,&pInfo)!=-1)
{
wsprintf(szBuffer,"你删除的是第%d行,第%d列\n",pInfo.iItem,pInfo.iSubItem);
MessageBox(hwnd,szBuffer,TEXT("TEST"),MB_OK);
}
}
break;
} return TRUE;
}
我这个怎么改一下就好了,,我这是SDK的,,不是MFC的,
{
case NM_RCLICK:
{
NMITEMACTIVATE *lpnmitem = (LPNMITEMACTIVATE) lParam;
HMENU hMenu,hTrackMenu;
POINT point;
//char szBuffer[80];
if(lpnmitem->iItem!=-1)
{
//wsprintf(szBuffer,"你点击的是第%d行,第%d列\n",lpnmitem->iItem,lpnmitem->iSubItem);
//MessageBox(lpnmitem->hdr.hwndFrom,szBuffer,TEXT("TEST"),MB_OK);
GetCursorPos(&point);
hMenu=LoadMenu(hInst,TEXT("USERPOPUP"));
hTrackMenu = GetSubMenu (hMenu, 0);
UINT nCmd = TrackPopupMenu(hTrackMenu,TPM_LEFTALIGN|TPM_RETURNCMD,point.x,point.y,0,hwnd,NULL);
if( nCmd == IDM_USER_DEL )
{
wsprintf(szBuffer,"你删除的是第%d行,第%d列\n",lpnmitem->iItem,lpnmitem->iSubItem);
MessageBox(hwnd,szBuffer,TEXT("TEST"),MB_OK);
}
else
return FALSE;
}
break;
}return TRUE;
}
再次感谢ylmbtm