游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1798|回复: 1

该怎么实现列表的某一项被选中的状态?

[复制链接]

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2010-6-26 10:54:00 | 显示全部楼层 |阅读模式
这是我参考别人在mfc下的代码,为什么单击列表控件的某一项后,对话框和列表控件都不见了,应该在哪里修改一下


  1. case NM_CLICK:         
  2.       BeginEdit(hdlg,pnmhdr,&pNmView->itemNew.lParam);
  3.   break;
  4. //--------~~~~~~
  5. void BeginEdit(HWND hnd, NMHDR* pNMHDR, LRESULT* pResult)
  6. {
  7.   int nItem, nSubItem;
  8.    m_list.Invalidate();
  9.     HWND hWnd =  GetDlgItem(hnd,IDC_LIST1);
  10.     LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
  11.     RECT rect;
  12.     //获得行数
  13.     nItem = temp->iItem;
  14. //    nItem = lvinfo.iItem;
  15.     //获得列数
  16.     nSubItem = temp->iSubItem;
  17. //    nSubItem = lvinfo.iSubItem;
  18.     if(nSubItem == 0 || nSubItem == -1 || nItem == -1)
  19.       return ;
  20.     //恢复列表项里的文字
  21.     CString str = m_list.GetItemText(nItem ,nSubItem);

  22.     RECT rect1,rect2;
  23.     //这个宏用来恢复选择项的矩形
  24.     ListView_GetSubItemRect(hWnd,temp->iItem,temp->iSubItem,LVIR_BOUNDS,&rect);
  25.     //获得列表控件矩形的大小
  26.     ::GetWindowRect(temp->hdr.hwndFrom,&rect1);

  27.     //获得对话框的矩形
  28.     ::GetWindowRect(hnd,&rect2);

  29.     int x=rect1.left-rect2.left;
  30.     int y=rect1.top-rect2.top;
  31.    
  32.     if(nItem != -1)   
  33.     ::SetWindowPos(GetDlgItem(hnd,MY_EDIT1),HWND_TOP,rect.left+x,rect.top +4,rect.right-rect.left - 3,rect.bottom-rect.top -1,NULL);
  34.     ::ShowWindow(::GetDlgItem(hnd,MY_EDIT1),SW_SHOW);
  35.     ::SetFocus(::GetDlgItem(hnd,MY_EDIT1));
  36.     //围绕子选项选项画一个矩形
  37.     ::Rectangle(::GetDC(temp->hdr.hwndFrom),rect.left,rect.top-1,rect.right,rect.bottom);
  38.     //把列表项的文字放到文本框里
  39.     ::SetWindowText(::GetDlgItem(hnd,MY_EDIT1),str);   
  40.     *pResult = 0;

  41. }


复制代码
[em5] [em4] [em21]

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2010-6-26 11:37:00 | 显示全部楼层

Re:该怎么实现列表的某一项被选中的状态?

找到原因了,原来是后面少了个break;导致的……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 12:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表