UpdateData的一个小问题!

时间:2022-07-14 17:34:26
void CCNCDlg::InitParam()
{
m_CnnTime="";
m_CnnState="已断开";
m_IPAddr="";
m_OverTime="0";
m_Port="";
m_RecvCount="0";
m_Send="0";
m_Succ="";
m_Time="";
m_UserName="";
m_WRCount="0";
m_AlCount="0";
m_Succ="0";
UpdateData(FALSE);
}
以上是初始个个标签的内容。我把这个函数加入OnInitDialog(),它可以运行!

然而我在OnInitDialog()新建一个线程来运行这个函数,为什么程序运行时会报错?

7 个解决方案

#1


你在运行这个线程前,DIALOG起来了吗?

#2


OnInitDialog()新建一个线程,dialog当然起来了。

#3


只要在Dialog任何地方都可以,就是新建线程调用Dialog的成员函数InitParam(),就报错误

#4


还是老办法,建timer,在timer里调用。

#5


在timer里调用就不会出现问题了

#6


什么错,我觉得你应该把你窗口的指针作为参数传给你的线程,然后在线程里用pWnd->UpdateData(FALSE);

#7


在Dialog类里面起线程,线程处理函数肯定是类的静态函数,而InitParam()函数是非静态函数,用静态函数处理非静态函数肯定会出错。

#1


你在运行这个线程前,DIALOG起来了吗?

#2


OnInitDialog()新建一个线程,dialog当然起来了。

#3


只要在Dialog任何地方都可以,就是新建线程调用Dialog的成员函数InitParam(),就报错误

#4


还是老办法,建timer,在timer里调用。

#5


在timer里调用就不会出现问题了

#6


什么错,我觉得你应该把你窗口的指针作为参数传给你的线程,然后在线程里用pWnd->UpdateData(FALSE);

#7


在Dialog类里面起线程,线程处理函数肯定是类的静态函数,而InitParam()函数是非静态函数,用静态函数处理非静态函数肯定会出错。