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) ; //其他訊息返回原訊息處理常式
}