大家好,我用下面的代码为ListBox加入项的时候, 为什么不能成功?CListBox *lst = (CListBox*)::AfxGetMainWnd()->GetDlgItem(IDC_LIST1);
for(int i = 0;i<=120;i++)
lst->SendMessage(LB_ADDSTRING,0,i);
另外一点小问题,当我放一个组件在窗体上的时候,我如何能知道它是属于哪个类的呢?
for(int i = 0;i<=120;i++)
lst->SendMessage(LB_ADDSTRING,0,i);
另外一点小问题,当我放一个组件在窗体上的时候,我如何能知道它是属于哪个类的呢?
解决方案 »
- (急切求助)最近电脑开机总是提示IP冲突和ARP攻击,怎么弄啊(在线等,谢谢)
- 奇怪的问题,静态链接编译通过,使用共享dll编译不过
- 关于连接过程中的 unresolved externals的问题
- 100分求教如何看到编译后被宏替换的代码?
- 200分求一个可以直接用的可发送附件,带验证的CSMTP类
- 请问如何调用winrar命令行对多个文件进行压缩?
- 想删除指定的视图,却删不掉,怎么办?急
- 单步运行OnReceive可以接收到完整数据,连续运行却不行
- 有哪位高手知道微软提供的的简繁互转的组件是哪个,在线等待,高分送
- 在2000下有什么API可以断开网络吗?
- 怎么样实现在资源管理器多一个盘号?
- 怎样在VC里执行SQL语句??? 参与有分!
在classwizard里 添加控件的变量时,会有一个默认的类,一般就是了
m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192));
m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) );
m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL);
为报表添加4列:
char *szColumn[]={"昵称","IP地址","登陆时间","状态"};
int widths[]={100,98,70,55};
LV_COLUMN lvc;
lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc.fmt=LVCFMT_LEFT;
for(int i=0;i<4;i++) {//插入各列
lvc.pszText=szColumn[i];
lvc.cx=widths[i];
lvc.iSubItem=i;
m_caller_list.InsertColumn(i,&lvc);
}
为报表添加两项,以附加方式添加:
char* data[4];
data[0]="所有人";
data[1]="0.0.0.0";
data[3]="在线";
data[2]=new char;
CTime now=CTime::GetCurrentTime();
CString temp = now.Format("%H:%M:%S");
data[2]=temp.GetBuffer(1);
LV_ITEM lvi;
lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
lvi.iSubItem=0;
lvi.pszText=(char *)data[0];
lvi.iImage = 0;
lvi.iItem=0;
m_caller_list.InsertItem(&lvi);
for (int j=0;j<4;j++) m_caller_list.SetItemText(count,j,data[j]);
count++;
lvi.iImage = 1;
lvi.iItem=count;
m_caller_list.InsertItem(&lvi);
data[0]="cherami";
data[1]="127.0.0.1";
for (int n=0;n<4;n++) m_caller_list.SetItemText(count,n,data[n]);
count++;设置报表的样式
选中一整行:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
绘制表格:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_GRIDLINES);
带复选框:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);
自动切换:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_TRACKSELECT);选定一行:
设置CListCtrl的Show selection always选项
SetItemState (iIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED)
选中一个或多个项目时,会发送LVN_ITEMCHANGED消息,可以使用
GetSelectedCount()方法得到被选定的项的数目。点击列头的消息响应:
ON_NOTIFY(HDN_ITEMCLICKW, 0, ResponseFunc)
消息,需要自己添加
或者:
ON_NOTIFY(LVN_COLUMNCLICK, ID_yourCtrl, ResponseFunc)//向导添加
前者后响应,后者先响应响应函数:
ResponseFunc(NMHDR *pNMHDR, LRESULT *pResult)双击CListCtrl中的ITEM的消息是及消息函数:
ON_NOTIFY(NM_DBLCLK, ID_yourCtrl, ResponseFunc)单击ITEM的消息响应:
ON_NOTIFY(NM_CLICK, ID_yourCtrl, ResponseFunc)
ResponseFunc(NMHDR *pNMHDR, LRESULT *pResult)
HDN_ITEMCLICK 就是Header control Notify message for mouse left click on the Header control!
而HDN_ITEMCLICK是当List View中存在一个Header Contrl时,Header Ctrl通知父窗口List View的!CListCtrl中的Item被选中触发LBN_SELCHANGE(通过WM_COMMAND)消息!删除CListCtrl中选定的项:
POSITION pos;
int nIndex;for(; pos= GetFirstSelectedItemPosition();)
{
nIndex = GetNextSelectedItem(pos);
DeleteItem(nIndex);
}
不知道为什么,当我用AddString方法来添加时,运行时会出错,代码如下:
void CModellessDlg::OnButton1()
{
CListBox *lst = (CListBox*)::AfxGetMainWnd()->GetDlgItem(IDC_LIST1);
for(int i = 0;i<=120;i++)
{
CString s;
s.Format("%d",i);
lst->AddString(s);
}
}
另外,当我把整型转换为CString时,必须通过CString::Format来转换吗?不会吧?太麻烦了:(关于第二个问题,可能你看错我的意思了,我的意思是,如果我放一个按钮在窗体上,那么,我怎么才能看到它的类名其实是CButton呢?to free_card(痛并快乐着) :
谢谢你的回复,我还没有测试过你的代码,待会儿试试看,它好像是对TListView类(C++Builder中的叫法)进行操作的吧?