****向各位高手求救:如何在对话框A中,为对话框B中的控件List control添加内容****
我想实现的功能:在对话框A中,当点击按钮Btn1,为对话框B中的CListCtrl来添加内容,我写的代码如下:我用的是SetItemText函数.该程序可以编译通过,并且二维数组也传递过去了,可是数据并不能在列表框显示出来,请问如何才能让它显示出来?
void m_dialag_A::OnBtn1()
{
m_dialog_B *pdlglist; //在对话框A中,声明并定义对话框B的指针对象pdlglist
pdlglist= new m_dialog_B; //创建对话框B指针对象
pdlglist->Create(IDD_DIALOG_B,this); //创建对话框B
pdlglist->m_list_tide.DeleteAllItems();//m_list.tide是对话框B的列表控件对象
CString mylist;
int i;
for ( i=0;i<7;i++)
{
for ( int ihour=0;ihour<24;ihour++)
{
mylist.Format(_T("%5d"),list[i][ihour]);//利用mylist调整输出格式,对齐
pdlglist->m_list_tide.SetItemText(ihour,i,mylist)//显示数组
}
}
pdlglist->UpdateData(false);
}
该函数能执行,但没有显示
...................................
另外,我在对话框B中添加了一个按钮Button1,点击它显示列表控件,完成显示功能.是不是在对话框A中创建的B窗体就象个"局部变量"无法保留呢?当B窗体真正创建以后,又得重绘.有没有办法能在对话框A中实现窗体B的列表显示功能呢?
我在对话框B中添加的Button1响应函数如下:
void m_dialog_B::OnButton1()
{
CString mylist;
int i;
for ( i=0;i<7;i++)
{
for ( int ihour=0;ihour<24;ihour++)
{
mylist.Format(_T("%5d"),list[i][ihour]);//利用mylist调整输出格式,对齐
m_list_tide.SetItemText(ihour,i,mylist)//显示数组
}
}
UpdateData(false);
}
问题点数:50、回复次数:10Top
1 楼QBHAPPY(水落无声)回复于 2005-04-21 17:22:48 得分 0
没人回,自己UP
Top
2 楼dfyang()回复于 2005-04-21 17:30:47 得分 0
void m_dialag_A::OnBtn1()
{
m_dialog_B *pdlglist; //在对话框A中,声明并定义对话框B的指针对象pdlglist
pdlglist= new m_dialog_B; //创建对话框B指针对象
pdlglist->Create(IDD_DIALOG_B,this); //创建对话框B\
pdlglist->ShowWindow(SW_SHOW);
pdlglist->m_list_tide.DeleteAllItems();//m_list.tide是对话框B的列表控件对象
CString mylist;
int i;
for ( i=0;i<7;i++)
{
for ( int ihour=0;ihour<24;ihour++)
{
mylist.Format(_T("%5d"),list[i][ihour]);//利用mylist调整输出格式,对齐
pdlglist->m_list_tide.SetItemText(ihour,i,mylist)//显示数组
}
}
pdlglist->UpdateData(false);
}
Top
3 楼widewind(野风)回复于 2005-04-21 17:32:32 得分 10
要先InsertItem 然后再SetItemTextTop
4 楼QBHAPPY(水落无声)回复于 2005-04-21 19:44:51 得分 0
不必一定先InsertItem.直接SetItemText应该也可以的.这个好象不是主要原因,是否是窗体的重绘?我是新手,大家多帮忙
Top
5 楼42252343(大跃进的猪)回复于 2005-04-21 19:54:58 得分 10
对 要InsertItem 还要加一个扩展样式Top
6 楼Mackz(在相互)回复于 2005-04-21 20:07:50 得分 20
“不必一定先InsertItem.直接SetItemText应该也可以的”
谁告诉你的?好好看看ListControl的用法。Top
7 楼QBHAPPY(水落无声)回复于 2005-04-21 21:10:06 得分 0
感谢大家的回复!!
to 大跃进的猪,你所指的扩展形式是什么呢?
to 在相互,的确可以的,我在对话框B中添加的Button1响应函数就没有用insertitem.它可以正常显示的,只是把相同的代码放在对话框A中就不可以了,我想问题应该不是出在InsertItem这句里的.
Top
8 楼howtotell(从何谈起)回复于 2005-04-21 21:19:44 得分 10
支持Mackz(在相互)的看法。Top
9 楼QBHAPPY(水落无声)回复于 2005-04-22 10:04:44 得分 0
是我的问题,的确需要有InsertItem,我是在对话框B初始化的时候加的横栏和纵栏.在按钮响应函数处就没有添加,因此有问题.如下:
BOOL m_dialog_B::OnInitDialog()
{
CDialog::OnInitDialog();
CString theday,thehour,list11;
int m=0,n=0,l=0,j=0;
m_list_tide.InsertColumn(0,"时间",LVCFMT_LEFT,70,0);
for(int i=0;i<24;i++)//小时栏
{
thehour.Format(_T("%d"),i);
m=m_list_tide.InsertItem(i,thehour);
}
for ( i=0;i<7;i++)///横栏:某日的潮位
{
theday.Format(_T("%d"),i);
m_list_tide.InsertColumn(i+1,theday+"日潮位",LVCFMT_LEFT,70,0);
}
return TRUE;
}
现在这个问题我知道了,可是即使我在程序中改动了也不行啊.还是不能用对话框A控制对话框B列表框的绘制,目前对话框A的按钮响应函数已经改为如下形式,希望各位再出点主意.
void m_dialog_A::OnButton1()
{
// TODO: Add your control notification handler code here
CString list11;
m_dialog_B *pdlglist; //创建B指针对象
pdlglist= new m_dialog_list;
pdlglist->Create(IDD_DIALOG_B,this);//创建B窗体
pdlglist->m_list_tide.DeleteAllItems();//m_list_tide是对话框2上的列表控件
CString theday,thehour;
int j=0;
/////////////////////小时栏
for(int i=0;i<24;i++)
{
thehour.Format(_T("%2d"),i);
thehour=thehour+"时";
pdlglist->m_list_tide.InsertItem(i,thehour);
}
//////////////////横栏:某日的潮位
pdlglist->m_list_tide.InsertColumn(0,"时间",LVCFMT_LEFT,70,0);
for ( i=0;i<7;i++)
{
theday.Format(_T("%d"),i);
pdlglist->m_list_tide.InsertColumn(i+1,theday+"日数据",LVCFMT_LEFT,70,0);
}
////////////////////添加数据
for ( i=0;i<7;i++)
{
for ( int ihour=0;ihour<24;ihour++)
{
list11.Format(_T("%5d"),list[j][ihour]);//输出格式
pdlglist->m_list_tide.SetItemText(ihour,j+1,list11);
}
j++;
}
pdlglist->UpdateData(false);
}
Top
10 楼QBHAPPY(水落无声)回复于 2005-04-22 20:11:47 得分 0
谢谢sinall(),程序修改完毕,问题的关键好象就是pdlglist的定义上,不应该把它定义为一个函数的局部变量,而应该在m_list_A的构造函数处定义,如下:
class m_dialog_address : public CDialog
{
// Construction
public:
m_dialog_list *pdlglist;
.......................................
这样就可以用对话框A的按钮控制对话框B的正常显示了.呵呵,希望以后有我这个问题的朋友,不再棘手啊^_^Top




