case WM_NOTIFY:
LPNMITEMACTIVATE lpnmitem;
switch(LOWORD(wParam))
{
case ID_LIST:
lpnmitem=(LPNMITEMACTIVATE)lParam;
if(lpnmitem->hdr.code==NM_CLICK||lpnmitem->hdr.code==NM_SETFOCUS)
{
if(hListEdit!=NULL)
{
GetWindowText(hListEdit,buff,10);
SetItemText(hDlg,curpos.x,curpos.y,buff);
DestroyWindow(hListEdit);
hListEdit=NULL;
}
curpos.x=lpnmitem->iItem;
curpos.y=lpnmitem->iSubItem;
if(curpos.y<1||curpos.x<0)
return 0;
Rect.top=lpnmitem->iSubItem;
Rect.left=LVIR_BOUNDS;
SendDlgItemMessage(hDlg,ID_LIST,LVM_GETSUBITEMRECT,(WPARAM)lpnmitem->iItem,(LPARAM)&Rect);
hListView=GetDlgItem(hDlg,ID_LIST);
hListEdit=CreateWindow("EDIT","",WS_CHILD|WS_BORDER|WS_VISIBLE,Rect.left,Rect.top,Rect.right-Rect.left,Rect.bottom-Rect.top,hListView,(HMENU)ID_LISTEDIT,hInst,NULL);
lvi.mask=LVIF_TEXT;
lvi.iItem=lpnmitem->iItem; //行数
lvi.iSubItem=lpnmitem->iSubItem; //列数
lvi.pszText=buff; //文本
lvi.cchTextMax=20;
SendDlgItemMessage(hDlg,ID_LIST,LVM_GETITEMTEXT,lpnmitem->iItem,(LPARAM)(LPLVITEM)&lvi);
SetWindowText(hListEdit,buff);
SetFocus(hListEdit);
}
break;
}
break;
WM_COMMAND://取消编辑框
if(hListEdit!=NULL)
{
GetWindowText(hListEdit,buff,10);
SetItemText(hDlg,curpos.x,curpos.y,buff);
DestroyWindow(hListEdit);
hListEdit=NULL;
}
响应滚动条消息
hListView=GetDlgItem(hDlg,ID_LIST);
OldList=(WNDPROC)SetWindowLong(hListView,GWL_WNDPROC,(LPARAM)ListProc);//设置消息响应例程
LRESULT CALLBACK ListProc(HWND hList,UINT message,WPARAM wParam,LPARAM lParam)
{
char buff[10];
switch(message)
{
case WM_HSCROLL:
if(hListEdit!=NULL)
{
GetWindowText(hListEdit,buff,10);
SetItemText(hDlgMain,curpos.x,curpos.y,buff);
DestroyWindow(hListEdit);
hListEdit=NULL;
}
break;
}
return CallWindowProc (OldList, hList, message, wParam, lParam) ; //其他消息返回原消息处理例程
}