请问哈这个程序到底是怎么回事,不能调用里面函数呢?

UINTThread2(LPVOID)//线程1实验代码{CLLKView::DrawRectangleHollow();intm_nUpper=0;CLLKView::... UINT Thread2(LPVOID)//线程1 实验代码
{
CLLKView::DrawRectangleHollow();
int m_nUpper=0;
CLLKView::DrawProgress(m_nUpper); // 总共400个时间
int m_nSpeed=2;
for(int i=1;i<200;i++)
{
Sleep(300);
m_nUpper=m_nUpper+m_nSpeed;
CLLKView::DrawProgress(m_nUpper);
}
return 0;

}

1>h:\c++文件\llk\llk\llkview.cpp(55) : error C2352: “CLLKView::DrawRectangleHollow”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(69) : 参见“CLLKView::DrawRectangleHollow”的声明
1>h:\c++文件\llk\llk\llkview.cpp(57) : error C2352: “CLLKView::DrawProgress”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(68) : 参见“CLLKView::DrawProgress”的声明
1>h:\c++文件\llk\llk\llkview.cpp(63) : error C2352: “CLLKView::DrawProgress”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(68) : 参见“CLLKView::DrawProgress”的声明
展开
 我来答
百度网友4aa0cbadf
2011-03-31 · TA获得超过299个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:359万
展开全部
线程函数里是不能这样调用类成员函数的。你可以把线程回调函数设置为类成员函数,但要是static,而且不能访问类成员变量,不方便,还是用下一种方法吧。

在主线程CreateThread的时候,把this指针当作参数传进来就OK了,这是最方便的做法。

UINT WINAPI Thread2(LPVOID Para)//线程1 实验代码
{
CLLKView* clk = Para;
clk->DrawRectangleHollow();
int m_nUpper=0;
clk->DrawProgress(m_nUpper); // 总共400个时间
int m_nSpeed=2;
for(int i=1;i<200;i++)
{
Sleep(300);
m_nUpper=m_nUpper+m_nSpeed;
clk->DrawProgress(m_nUpper);
}
return 0;
}

如果线程很多,自己做安全保障措施。
追问
CLLKView* clk = Para;;这句中不能从LPVOID转换成CLLKView*类型,请问哈这位高手,现在该怎么转换呢?谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式