对话框中的CListCtrl……
单文档程序中,
用菜单命令弹出个对话框——定义为TsLsDlg类
对话框上有CListCtrl列表控件,定义为变量m_ListCtrl在对话框TsLsDlg类中我填写如下代码:
TsLsDlg::TsLsDlg(CWnd* pParent /*=NULL*/)
: CDialog(TsLsDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(TsLsDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
LV_COLUMN lvc; //CListCtrl列结构
lvc.mask=LVCF_FMT | LVCF_WIDTH |LVCF_TEXT |LVCF_SUBITEM;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem=0;
lvc.pszText=(LPTSTR)_T("名称 ");
/*lvc.iSubItem=1;
lvc.pszText=(LPTSTR)_T("类型 ");
lvc.iSubItem=2;
lvc.pszText=(LPTSTR)_T("大小 ");
lvc.iSubItem=3;
lvc.pszText=(LPTSTR)_T("数量 ");
lvc.iSubItem=4;
lvc.pszText=(LPTSTR)_T("价格 ");*/
lvc.cx=80;
m_ListCtrl.InsertColumn(1,&lvc); //赋值给列表控件m_ListCtrl
LV_ITEM lvit; //CListCtrl行结构 lvit.mask=LVIF_TEXT;
lvit.iImage=0;
lvit.iItem=1;
lvit.iSubItem=0;
lvit.pszText=(LPTSTR)_T("行 1 ");
m_ListCtrl.SetItem(&lvit); //赋值给列表控件m_ListCtrl}
在Doc类中,我这样调用对话框:
void CTsListCtrlDoc::OnListctrl()
{
TsLsDlg mLsDlg;
mLsDlg.DoModal();
}编译,点击菜单,却不能显示对话框,更不要说正确显示CListCtrl控件了。请问……关于CListCtrl的代码哪里有错误,或是代码应该添加在哪个函数中?
单文档程序中,
用菜单命令弹出个对话框——定义为TsLsDlg类
对话框上有CListCtrl列表控件,定义为变量m_ListCtrl在对话框TsLsDlg类中我填写如下代码:
TsLsDlg::TsLsDlg(CWnd* pParent /*=NULL*/)
: CDialog(TsLsDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(TsLsDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
LV_COLUMN lvc; //CListCtrl列结构
lvc.mask=LVCF_FMT | LVCF_WIDTH |LVCF_TEXT |LVCF_SUBITEM;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem=0;
lvc.pszText=(LPTSTR)_T("名称 ");
/*lvc.iSubItem=1;
lvc.pszText=(LPTSTR)_T("类型 ");
lvc.iSubItem=2;
lvc.pszText=(LPTSTR)_T("大小 ");
lvc.iSubItem=3;
lvc.pszText=(LPTSTR)_T("数量 ");
lvc.iSubItem=4;
lvc.pszText=(LPTSTR)_T("价格 ");*/
lvc.cx=80;
m_ListCtrl.InsertColumn(1,&lvc); //赋值给列表控件m_ListCtrl
LV_ITEM lvit; //CListCtrl行结构 lvit.mask=LVIF_TEXT;
lvit.iImage=0;
lvit.iItem=1;
lvit.iSubItem=0;
lvit.pszText=(LPTSTR)_T("行 1 ");
m_ListCtrl.SetItem(&lvit); //赋值给列表控件m_ListCtrl}
在Doc类中,我这样调用对话框:
void CTsListCtrlDoc::OnListctrl()
{
TsLsDlg mLsDlg;
mLsDlg.DoModal();
}编译,点击菜单,却不能显示对话框,更不要说正确显示CListCtrl控件了。请问……关于CListCtrl的代码哪里有错误,或是代码应该添加在哪个函数中?
解决方案 »
- 如何获取本地磁盘的数量和对应的分区号
- 求助 VC++实现.mdb文件转成xml 代码
- ActiveX控件发布的问题,请高手指导
- ~~~~~~~~ocx访问数据库问题~~~~~~~~
- VC + ADO 压缩各类数据库(MySql、DB2、SQL、ACCESS)有没有统一的方法?
- VC++中的资源究竟如何准确理解?
- 对于个*.avi或是*.mpg的文件,怎么得知解码后图像格式和声音格式?
- 完了,俺今天放分兩次了,lwg7603請進來接分,多謝你的解答!
- 初学者的一个简单windows程序问题(对我很难)
- 求助:AfxBeginThread的编译问题!
- MSComm实现双串口通信问题,解决马上揭帖!
- 请教如何在IE工具栏添加一个有下拉箭头的按钮,望各位前辈指导,我在线放分!
首先你的初始化LIST放的位置不对,应该放到OnInitDialog里面(建议放在一个函数里面,然后再OnInitDialog里面调用);
protected:
virtual BOOL OnInitDialog();BOOL TsLsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
LV_COLUMN lvc;
lvc.mask=LVCF_FMT | LVCF_WIDTH |LVCF_TEXT |LVCF_SUBITEM;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem=0;
lvc.pszText=(LPTSTR)_T("名称 ");
lvc.cx=80;
m_ListCtrl.InsertColumn(1,&lvc); //赋值给列表控件m_ListCtrl
LV_ITEM lvit; //CListCtrl行结构 lvit.mask=LVIF_TEXT;
lvit.iImage=0;
lvit.iItem=1;
lvit.iSubItem=0;
lvit.pszText=(LPTSTR)_T("行 1 ");
m_ListCtrl.SetItem(&lvit); //赋值给列表控件m_ListCtrl}还是不行,同样的错误提示。我这是在文档视图程序中用弹出窗口,不是对话框程序。
要给TsLsDlg添加虚函数的时候OnInitDialog()的时候,列表中根本没有!怎么回事啊,各位?
{
CDialog::OnInitDialog();
//ASSERT((IDD_ABOUTBOX & 0xFFF0) == IDD_ABOUTBOX);
// ASSERT(IDD_ABOUTBOX < 0xF000);
m_ListCtrl.SetBkColor(RGB(0,0,0));
m_ListCtrl.SetTextColor(RGB(250,250,255));
m_ListCtrl.SetTextBkColor(RGB(0,0,0));
LV_COLUMN lvc;
lvc.mask=LVCF_FMT | LVCF_WIDTH |LVCF_TEXT |LVCF_SUBITEM|LVS_REPORT;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem=0;
lvc.pszText=(LPTSTR)_T(" 编号 ");
lvc.cx=80;
m_ListCtrl.InsertColumn(0,&lvc);
lvc.iSubItem=1;
lvc.pszText=(LPTSTR)_T("名称 ");
lvc.cx=80;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem=2;
lvc.pszText=(LPTSTR)_T("总额 ");
lvc.cx=80;
m_ListCtrl.InsertColumn(2,&lvc);
lvc.iSubItem=3;
lvc.pszText=(LPTSTR)_T("数量 ");
lvc.cx=80;
m_ListCtrl.InsertColumn(3,&lvc);
lvc.iSubItem=4;
lvc.pszText=(LPTSTR)_T("单价 ");
lvc.cx=80;
m_ListCtrl.InsertColumn(4,&lvc);
LV_ITEM lvit;
CString str;
for(int i=0;i<30;i++)
{
str.Format("%d",i+1);
m_ListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, i,
str, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED, 0, 0);
m_ListCtrl.SetItemText(i,1,"天王白酒");
m_ListCtrl.SetItemText(i,2,"¥10000.00");
m_ListCtrl.SetItemText(i,3,"100箱");
m_ListCtrl.SetItemText(i,4,"100");
} LONG lStyle;
lStyle=GetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE);//获取当前窗口类型
lStyle&=~LVS_TYPEMASK; //清除显示方式位
lStyle|=LVS_REPORT|LVS_EDITLABELS; //设置显示方式
SetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE,lStyle);//设置窗口类型
return TRUE; // return TRUE unless you set the focus to a control
}这是我测试的结果。不过,只能够对第一列进行编辑,且编辑之后,数据马上还原……怎样对点击到的数据项进行编辑?(单击)且进行保存?