在报表中写数据

 
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) ; //其他消息返回原消息处理例程
}

你可能感兴趣的:(在报表中写数据)