基于单文档的程序,下面是一个基于子对话框的类CDlgZaixian_Jiance,设计按下按钮调用其一个函数:
void CDlgZaixian_Jiance::OnZJDraw()
{
....
//进入直径在线检测线程
ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,NULL,THREAD_PRIORITY_IDLE);
}线程函数为:
//直径在线检测线程
UINT GrabThread_ZJ_ZaiXian(LPVOID pParam)
{
SetDlgItemText(IDC_ZhiJing_10,s);
DoEvents();//使得测量数据动态显示
}
DoEvents()函数为类CDlgZaixian_Jiance的一个public函数
void CDlgZaixian_Jiance::DoEvents()
{
......
}
此时编译时候报错:
D:error C2660: 'SetDlgItemTextA' : function does not take 2 parameters
D:error C2065: 'DoEvents' : undeclared identifier
另外好像MessageBox("!","系统提示!",MB_OK|MB_ICONWARNING)也用不了的。请教高手,在自定义的线程中,如何调用一些MessageBox之类的函数,以及一些同一类中的函数及成员变量呐?
另外如果是其余类的类函数及成员变量,在线程中如何调用呐?请指教,谢谢!10
void CDlgZaixian_Jiance::OnZJDraw()
{
....
//进入直径在线检测线程
ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,NULL,THREAD_PRIORITY_IDLE);
}线程函数为:
//直径在线检测线程
UINT GrabThread_ZJ_ZaiXian(LPVOID pParam)
{
SetDlgItemText(IDC_ZhiJing_10,s);
DoEvents();//使得测量数据动态显示
}
DoEvents()函数为类CDlgZaixian_Jiance的一个public函数
void CDlgZaixian_Jiance::DoEvents()
{
......
}
此时编译时候报错:
D:error C2660: 'SetDlgItemTextA' : function does not take 2 parameters
D:error C2065: 'DoEvents' : undeclared identifier
另外好像MessageBox("!","系统提示!",MB_OK|MB_ICONWARNING)也用不了的。请教高手,在自定义的线程中,如何调用一些MessageBox之类的函数,以及一些同一类中的函数及成员变量呐?
另外如果是其余类的类函数及成员变量,在线程中如何调用呐?请指教,谢谢!10
解决方案 »
- 按钮点击不响应,哪位大虾来帮忙啊
- 安装的vc6精简版没有activex test container,请问有谁知道在哪儿可以下载吗?
- 如何在控制台程序中使用定时器
- 求助关于socket网络编程
- 求vc1.5,哪个大侠有呀?
- 请问用RAR命令行参数能不能压缩成ZIP,谁有好的压缩控件也行,急在线等待!!!!
- 超级简单的问题,combo的列表怎么在属性页中添加?
- 在做数据库程序时,如果用户没有安装JET3.0驱动怎么做?能不能动态的在代码中为用户来安装JET驱动?是不是要写注册表,在那里写?
- APP类中的m_pMainWnd
- 请问我想在一个窗体启动时,同时显示一个滚动条在往前增加在哪个消息中?
- 关于ADO连接的奇怪问题!
- 怎么学习nds游戏开发
{
CDlgZaixian_Jiance* pCDlg = (CDlgZaixian_Jiance*)pParam;
pCDlg->SetDlgItemText(IDC_ZhiJing_10,s);
pCDlg->DoEvents();//使得测量数据动态显示
}
SetDlgItemText()使用全局的或加对象指针,DoEvents()加对象调用。
ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,(LPVOID)this,THREAD_PRIORITY_IDLE);
另外SetDlgItemText()如何使用全局啊?
//基于单文档的程序,下面是一个基于子对话框的类CDlgZaixian_Jiance,设计按下按钮调用其一个函数:
void CDlgZaixian_Jiance::OnZJDraw()
{
....
//进入直径在线检测线程
//ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,NULL,THREAD_PRIORITY_IDLE);
// 改为下面这个
ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,this,THREAD_PRIORITY_IDLE);
} 线程函数为:
//直径在线检测线程
UINT GrabThread_ZJ_ZaiXian(LPVOID pParam)
{
//SetDlgItemText(IDC_ZhiJing_10,s);
//DoEvents();//使得测量数据动态显示
// 改为这个
CDlgZaixian_Jiance* pthis = (CDlgZaixian_Jiance*)pParam;
pthis->SetDlgItemText(IDC_ZhiJing_10,s);
pthis->DoEvents();//使得测量数据动态显示
}
DoEvents()函数为类CDlgZaixian_Jiance的一个public函数
void CDlgZaixian_Jiance::DoEvents()
{
......
}