关于在mfc的在子对话框使用list control控件的问题
比如我建了一个类名为CExampleDlg的子对话框,并在子对话框中使用了listcontrol的控件,控件对应变量m_list。接下来我在父对话框中定义了一个CExam...
比如我建了一个类名为CExampleDlg的子对话框,并在子对话框中使用了list control的控件,控件对应变量m_list 。
接下来我在父对话框中定义了一个CExampleDlg的对象temp。
我希望能实现的功能很简单:
当我按下父对话框中的Button时,就会调用子对话框,并且根据Button的不同,可以在子对话框的list control中放映不同的信息
我的做法是从Button入手
void CExampleDlg::OnButton1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_Temp.m_List.InsertColumn(0,"NAMW",LVCFMT_CENTER,100);
m_Temp.m_List.InsertColumn(1,"TEAM",LVCFMT_CENTER,100);
DWORD dwStyle=m_Temp.m_List.GetExtendedStyle();
dwStyle|=LVS_EX_FULLROWSELECT;
dwStyle|=LVS_EX_GRIDLINES;
m_Temp.m_List.SetExtendedStyle(dwStyle);
m_Temp.m_List.InsertItem(0,"Tomy");
m_Temp.m_List.SetItemText(0,1,"Stom");
m_Temp.DoModal;
*pResult = 0;
}
感觉语法上没有什么错,但是一旦运行出现Debug Assertion Failed!的系统错误提示
仔细调试发现时从m_Temp.m_List.InsertColumn(0,"NAMW",LVCFMT_CENTER,100);开始就出现错误,看来是我的InsertColumn()函数用错了
那位能指点一下应该如何在父对话框中对子对话框的control list初始化。 展开
接下来我在父对话框中定义了一个CExampleDlg的对象temp。
我希望能实现的功能很简单:
当我按下父对话框中的Button时,就会调用子对话框,并且根据Button的不同,可以在子对话框的list control中放映不同的信息
我的做法是从Button入手
void CExampleDlg::OnButton1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_Temp.m_List.InsertColumn(0,"NAMW",LVCFMT_CENTER,100);
m_Temp.m_List.InsertColumn(1,"TEAM",LVCFMT_CENTER,100);
DWORD dwStyle=m_Temp.m_List.GetExtendedStyle();
dwStyle|=LVS_EX_FULLROWSELECT;
dwStyle|=LVS_EX_GRIDLINES;
m_Temp.m_List.SetExtendedStyle(dwStyle);
m_Temp.m_List.InsertItem(0,"Tomy");
m_Temp.m_List.SetItemText(0,1,"Stom");
m_Temp.DoModal;
*pResult = 0;
}
感觉语法上没有什么错,但是一旦运行出现Debug Assertion Failed!的系统错误提示
仔细调试发现时从m_Temp.m_List.InsertColumn(0,"NAMW",LVCFMT_CENTER,100);开始就出现错误,看来是我的InsertColumn()函数用错了
那位能指点一下应该如何在父对话框中对子对话框的control list初始化。 展开
2个回答
展开全部
你的这种做法存在这样的问题:在写MFC程序的时候,经常会遇到的一种错误是对话框还没有被实力话,即对话框对象不存在,就对该对话框里面的控件进行初始化操作。因为对话框没有被实例化,既而对话框中的控件也就不存在,对这些控件进行初始化操作自然会导致错误。
对于这个问题,我通常采用这样的做法:
1、在子窗口类中声明一个变量,如int m_nFlag,用来判断父窗口点击的是哪个按钮,要让它在list ctrl中显示什么样的信息。
2、在父窗口响应按钮点击操作的函数中,依据点击的按钮不同给子窗口的m_nFlag传递不同的值,然后显示子对话框,即
m_Temp.m_nFlag=1;(具体传递哪个值根据按钮不同而设)
m_Temp.DoModal();
3、在子窗口的OnInitDialog函数中,根据m_nFlag的值来初始化list control控件。
对于这个问题,我通常采用这样的做法:
1、在子窗口类中声明一个变量,如int m_nFlag,用来判断父窗口点击的是哪个按钮,要让它在list ctrl中显示什么样的信息。
2、在父窗口响应按钮点击操作的函数中,依据点击的按钮不同给子窗口的m_nFlag传递不同的值,然后显示子对话框,即
m_Temp.m_nFlag=1;(具体传递哪个值根据按钮不同而设)
m_Temp.DoModal();
3、在子窗口的OnInitDialog函数中,根据m_nFlag的值来初始化list control控件。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询