对话框中的控件,为什么只能在事件函数中使用?

ivymm 2004-04-04 05:00:21
我的意思是,一个对话框中的控件(如ListCtrl),它的成员函数(如InsertItem)只能在用户事件函数(如OnOK)中调用?如果在对话框中定义一个普通的函数,在其他类中调用这个函数,函数中调用InsertItem()就出错。
...全文
41 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
_foo 2004-04-06
  • 打赏
  • 举报
回复
在你在别的类中调用Drive时,该对话框是否已经生成?
ivymm 2004-04-06
  • 打赏
  • 举报
回复
非模态?
ivymm 2004-04-05
  • 打赏
  • 举报
回复
int CQQAD::Drive(CString Hi, CString Lo)
{
int item=m_list1.InsertItem(0,_T("Ts"));
m_list1.SetItemText(0,1,_T("Ts"));
//这两条语句执行时出错

return 0;
}


BOOL CQQAD::OnInitDialog()
{
CDialog::OnInitDialog();
int i;

m_list1.InsertColumn(0,"0",LVCFMT_LEFT,60);
m_list1.InsertColumn(1,"1",LVCFMT_LEFT,60);
m_list1.InsertColumn(2,"2",LVCFMT_LEFT,60);
m_list1.InsertColumn(3,"3",LVCFMT_LEFT,60);


return TRUE;
}

void CQQAD::OnOutput()
{
UpdateData(TRUE);
int item=m_list1.InsertItem(0,_T("Ts"));
m_list1.SetItemText(0,1,_T("Ts"));
//这儿执行正确
}


Drive函数在某各类中被调用
ivymm 2004-04-05
  • 打赏
  • 举报
回复
int CQQAD::Drive(CString Hi, CString Lo)
{
int item=m_list1.InsertItem(0,_T("Ts"));
m_list1.SetItemText(0,1,_T("Ts"));
//这两条语句执行时出错

return 0;
}


BOOL CQQAD::OnInitDialog()
{
CDialog::OnInitDialog();
int i;

m_list1.InsertColumn(0,"0",LVCFMT_LEFT,60);
m_list1.InsertColumn(1,"1",LVCFMT_LEFT,60);
m_list1.InsertColumn(2,"2",LVCFMT_LEFT,60);
m_list1.InsertColumn(3,"3",LVCFMT_LEFT,60);


return TRUE;
}

void CQQAD::OnOutput()
{
UpdateData(TRUE);
int item=m_list1.InsertItem(0,_T("Ts"));
m_list1.SetItemText(0,1,_T("Ts"));
//这儿执行正确
}


Drive函数在某各类中被调用
yxlijinzhu 2004-04-05
  • 打赏
  • 举报
回复
怀疑是某个对象的生命期出了问题
smallbull 2004-04-05
  • 打赏
  • 举报
回复
象InsertItem()这样的函数,这有在控件显示的时候才能调用,如果这时候对话框还没有,你就InsertItem(),可以想象肯定不行,不知道你是不是这种情况。
vollin 2004-04-04
  • 打赏
  • 举报
回复
一般不会,也有可能是生存期的问题,或线程安全问题。这样的问题最好其它的类发消息给窗口,然后在窗口消息中处理。
yyf_ty 2004-04-04
  • 打赏
  • 举报
回复
可能是你那用错了吧,没有这么一说吧
_foo 2004-04-04
  • 打赏
  • 举报
回复
不可能.
把你代码贴出来看看.

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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