求助一个ListView入门级问题。。如何点击后使用dialogbox显示一行

yangt1100 2011-05-02 02:49:22
我刚接触wm一周多,老大让我先学习listview。但是好些都忘了,而且跟以前用的vc6.0的界面什么的都不同。
他给我3个问题让我弄出来,明天就要交给他。实在弄不出来了,望大神们给个思路。具体点怎么实现更好了、
语言是C++,工具是VS2008。
3个问题分别是1.添加checkbox
2.添加fullrowview
3.点击会出现个menu,有delete和view两个选项。delete是删除选中哪行。view是点击显示选中那行的详细信息。1.2已经实现。3中添加menu和delete也实现了。
view他给我的提示是点击后添加个dialogbox,在dialogbox中显示这一行的详细信息。但是问题来了,我不知道怎么添加dialogbox。是在resource里面新建个dialog吗?新建了dialog后怎么将这行的信息导入到dialog中??我现在能找到这行的index,但是信息怎么添加进去??需要源码的话我再上传。
case WM_COMMAND:

switch( LOWORD( wParam ))
{
case LVM_DELETEITEM:
ListView_DeleteItem(hWndListView,LVIndex);
break;
case ID_WHAT_VIEW:
后面怎么弄呀??用什么函数不懂啊
我的qq是495792749.。。。十分着急啊,明天还要交给他。。先谢谢大神们了
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangt1100 2011-05-06
  • 打赏
  • 举报
回复
好了搞定了。沒有用getitem了。直接獲得的數組輸出。我知道了,原來只需要用幾個staticbox來輸出就好了。不管咋樣謝謝這位童鞋
yangt1100 2011-05-04
  • 打赏
  • 举报
回复
我知道 怎麼GetItem了。
TCHAR szText[100];
LV_ITEM lvi;
lvi.mask=LVIF_TEXT;
lvi.iItem=LVIndex;
lvi.iSubItem=0;
lvi.pszText=szText;
lvi.cchTextMax=100;
ListView_GetItem(hWndListView,&lvi);

但是怎麼傳遞到dialogbox中我很費解。。dialogbox中到底要不要加入個listbox控件??還有裡面DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG), hWnd, (DLGPROC)MainWndProc); 這樣子的話根本沒有反應。。我了個去!!!快瘋了。。
yangt1100 2011-05-04
  • 打赏
  • 举报
回复
我的源碼是這個,還有個typedef struct tagLVITEMA。。不知道怎麼弄。。改成
ListView_GetItem( hWndListView,LVITEMW*);
ListView_GetItem( hWndListView,LVITEMW);
ListView_GetItem( hWndListView,LVITEM*);
ListView_GetItem( hWndListView,LVITEM);
都是error C2059: syntax error : ')'
改成
ListView_GetItem( hWndListView,*LVITEMW);
就是error C2275: 'LVITEMW' : illegal use of this type as an expression

是不是需要先定義個全局變量然後再用?GetItem函數第二個函數到底是什麼類型的呀?地址還是具體的?

typedef struct tagLVITEMW
{
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPWSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
int iGroupId;
} LVITEMW, FAR* LPLVITEMW
海盗医生 2011-05-04
  • 打赏
  • 举报
回复
是LVITEM* 非LPLVITEMW

typedef struct _LVITEM {   UINT mask;   int iItem;   int iSubItem; 
UINT state; UINT stateMask; LPTSTR pszText; int cchTextMax;
int iImage; LPARAM lParam; #if (_WIN32_IE >= 0x0300) int iIndent;
#endif int iGroupId;} LVITEM;
海盗医生 2011-05-04
  • 打赏
  • 举报
回复
dialogbox中到底要不要加入個listbox控件??
你要取决于你是否需要使用listbox
如何创建listbox:
在dialogbox中,WM_CREATE中创建


ListView_GetItem 获得
ListView_SetItem 设置
海盗医生 2011-05-03
  • 打赏
  • 举报
回复
把有不怎么理解的代码贴出来看看
yangt1100 2011-05-03
  • 打赏
  • 举报
回复
上楼没说清楚,应该是:
case ID_WHAT_VIEW:
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG), hWnd, (DLGPROC)MainWndProc);
ListView_GetItem( hWndListView,LVIndex);
就这个地方。。GetItem后面的第二个参数应该是什么??
ListView_GetItem( hWndListView,&LPLVITEMW);
添加上会显示error C2275: “LPLVITEMW”: 将此类型用作表达式非法

如果ListView_GetItem( hWndListView,LPLVITEMW);
就会显示error C2059: 语法错误 : “)”
yangt1100 2011-05-03
  • 打赏
  • 举报
回复
case ID_WHAT_VIEW:
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG), hWnd, (DLGPROC)MainWndProc);
ListView_GetItem( hWndListView,LVIndex);
就这个地方。。GetItem后面的第二个参数应该是什么??&LVITEM 什么东西的 添加上会显示error C2275: “LPLVITEMW”: 将此类型用作表达式非法

如果ListView_GetItem( hWndListView,&LVIndex);
就会显示error C2059: 语法错误 : “)”
yangt1100 2011-05-02
  • 打赏
  • 举报
回复
2楼谢谢,不过还是有些不会。。。能不能具体点怎么实现呢?从创建完dialog开始。。。有点头绪但是下午还是没弄出来
海盗医生 2011-05-02
  • 打赏
  • 举报
回复
1、是在resource里面新建个dialog吗? 是的,在资源中添加新的Dialog,并且创建对话框类
2、新建了dialog后怎么将这行的信息导入到dialog中??这个简单,例如:
//定义
testdlg dlg;
//传值
dlg.m_test="111"; DIALOG中的变量,可以对应EDIT控件等,也可以是单纯的变量
//呼出显示
dlg.DoModal();
说明一点,DoModal执行后,会首先调用Dialog中的virtual BOOL OnInitDialog(); 初始化函数
因此你可以在DoModal前赋值,在OnInitDialog中进行初始化,然后显示

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧