免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3264 | 回复: 3
打印 上一主题 下一主题

点击listview某一个格子,如何让edittext控件显示到该位置? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-31 11:27 |只看该作者 |倒序浏览
20可用积分
点击图中绿线的格子后,如何让标有红线的输入框显示到该格子处?

代码:
listview.rar (1.93 MB, 下载次数: 49)

最佳答案

查看完整内容

y的位置不好算。。SubItem == 0 的时候,选择变成了整行的了,这个需要注意

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
2 [报告]
发表于 2011-03-31 11:27 |只看该作者
  1. if(((LPNMHDR)lParam)->code == NM_DBLCLK)
  2.                                 {
  3.                                         int nItem, nSubItem;
  4.                                         LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE)lParam;

  5.                                         RECT rect;
  6.                                         //Get the row number
  7.                                         nItem = temp->iItem;
  8.                                         //Get the Column number
  9.                                         nSubItem = temp->iSubItem;
  10.                                         if (/*nSubItem == 0 || */nSubItem == -1 || nItem == -1)
  11.                                         {
  12.                                                 return FALSE;
  13.                                         }
  14.                                
  15.                                         char text[255]={0};
  16.                                         memset(&LvItem,0,sizeof(LvItem));
  17.                                         LvItem.mask=LVIF_TEXT;
  18.                                         LvItem.iSubItem=nSubItem;
  19.                                         LvItem.pszText=text;
  20.                                         LvItem.cchTextMax=256;
  21.                                         LvItem.iItem=nItem;
  22.                                         SendMessage(hList,LVM_GETITEMTEXT, nItem, (LPARAM)&LvItem);
  23.                                         char text2[255]={0};
  24.                                        
  25.                                         RECT rect1,rect2;
  26.                                         ListView_GetSubItemRect(hList,nItem,nSubItem,LVIR_BOUNDS,&rect);
  27. //                                         sprintf(text2,"rect,rect.left:%d,rect.right:%d,rect.top:%d,rect.bottom:%d",rect.left,rect.right,rect.top,rect.bottom);
  28. //                                         MessageBox(NULL,text2,"rect",MB_OK);

  29.                                         //Get the Rectange of the List Control
  30.                                         GetWindowRect(temp->hdr.hwndFrom,&rect1);
  31. //                                         sprintf(text2,"rect1,rect1.left:%d,rect1.right:%d,rect1.top:%d,rect1.bottom:%d",rect1.left,rect1.right,rect1.top,rect1.bottom);
  32. //                                         MessageBox(NULL,text2,"rect1",MB_OK);
  33.                                         //Get the Rectange of the Dialog
  34.                                         GetWindowRect(hWnd, &rect2);
  35. //                                         sprintf(text2,"rect1,rect2.left:%d,rect2.right:%d,rect2.top:%d,rect2.bottom:%d",rect2.left,rect2.right,rect2.top,rect2.bottom);
  36. //                                         MessageBox(NULL,text2,"rect2",MB_OK);
  37.                                         int x = rect1.left - rect2.left;
  38.                                         int y = rect1.top - rect2.top;


  39.                                         HWND hEdit = GetDlgItem(hWnd, IDC_INPUT);
  40.                                         //SetWindowPos(hEdit,HWND_TOP,rect.left+x,rect.top+4,rect.right-rect.left-3,rect.bottom-rect.top-1,NULL);
  41.                                         SetWindowPos(hEdit,HWND_TOP,rect.left+x,rect.top+14*2+7,rect.right-rect.left-3,rect.bottom-rect.top-1,NULL);
  42.                                         ShowWindow(hEdit, SW_SHOW);
  43.                                         SetFocus(hEdit);
  44.                                         //Draw a rectangle around the SubItem
  45.                                         Rectangle(GetDC(temp->hdr.hwndFrom), rect.left,rect.top-1,rect.right,rect.bottom);
  46.                                         //Set the listItem text in the EditBox
  47.                                         SendMessage(hEdit,WM_SETTEXT, 0, (LPARAM)"aaaaaa");       
  48.                                 }
复制代码
y的位置不好算。。SubItem == 0 的时候,选择变成了整行的了,这个需要注意

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
3 [报告]
发表于 2011-04-01 00:23 |只看该作者
case WM_NOTIFY:
                {
                        switch(LOWORD(wParam))
                        {
                            case IDC_LIST:
                                LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;

                                if(((LPNMHDR)lParam)->code == NM_CLICK)
                                {
                                        LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE)lParam;
                                        int nItem = temp->iItem;
                                        int nSubItem = temp->iSubItem;
                                        if (/*nSubItem == 0 || */nSubItem == -1 || nItem == -1)
                                        {
                                                break;
                                        }
                                       
                                        char Text[255]={0};
                                        char Temp[255]={0};
                                        char Temp1[255]={0};
                                        int iSlected=0;
                                        int j=0;
//
//                                         iSlected=SendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
//                                         if(iSlected==-1)
//                                         {
//                                                 MessageBox(hWnd,"No Items in ListView",
//                                                         "Error",MB_OK|MB_ICONINFORMATION);
//                                                 break;
//                                          }
                                        memset(&LvItem,0,sizeof(LvItem));
                                        LvItem.mask=LVIF_TEXT;
                                        LvItem.iSubItem=nSubItem;
                                        LvItem.pszText=Text;
                                        LvItem.cchTextMax=256;
                                        LvItem.iItem=iSlected;
                                        SendMessage(hList,LVM_GETITEMTEXT, nItem, (LPARAM)&LvItem);
                                        sprintf(Temp1,Text);
// //                                         for(j=1;j<=1;j++)
// //                                         {
// //                                                 LvItem.iSubItem=j;
// //                                                 SendMessage(hList,LVM_GETITEMTEXT,
// //                                                         iSlected, (LPARAM)&LvItem);
// //                                                 sprintf(Temp," %s",Text);
// //                                                 lstrcat(Temp1,Temp);
// //                                         }
                                        MessageBox(hWnd,Temp1,"test",MB_OK);
                                        hEdit=GetDlgItem(hWnd,IDC_INPUT);
                                       
                                        SendMessage(hEdit,WM_SETTEXT, 0, (LPARAM)Temp1);
                                }
                break;
                        }
                }

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
4 [报告]
发表于 2011-04-01 00:24 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP