可否在类中创建线程
创建辅助线程时,AfxBeginThread所调用的函数必须是全局函数吗?
我现在想在一个类中写一个方法,这个方法我想要创建一个辅助线程,
而我在书上看到AfxBeginThread所调用的函数需要是全局函数。我的
这个想法能否实现,怎样实现?
问题点数:50、回复次数:16Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 12:03:38 得分 0
可以,类型的静态成员函数也行。Top
2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 12:05:08 得分 20
class CUserClass
{
....
static UINT BmpToJpgThread(LPVOID param);
....
}
void CUserClass::BeginThread
{
AfxBeginThread(BmpToJpgThread,....);
}
Top
3 楼opentuxedo(借哥哥的号来试试)回复于 2004-09-03 12:05:26 得分 15
可以把线程函数定义为static func(void* p);
如果要使用类中的成员把类通过参数p传给函数。
要用C++就必须忍受奇傻无比的规则。C#中就没这种问题。Top
4 楼LongLongAgoImBoy(ThereIsAMe)回复于 2004-09-03 12:08:59 得分 10
比如在类中声明一个静态成员函数:
static DWORD ThreadFunctionProc(LPVOID pParam);
个人理解:其实我觉得静态成员函数和全局函数都差不多的,你在静态成员函数中访问变量的话,也需要有全局变量或者是静态变量。
这个纯属个人理解,希望不要误人子弟。Top
5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-03 12:47:05 得分 0
这里的静态成员函数与全局函数的意义应该是差不多的Top
6 楼azs()回复于 2004-09-03 12:54:46 得分 5
在静态成员函数中访问变量的话,也需要有全局变量或者是静态变量。
//////////////////////////////////////////
传参数也可以访问,不是吗
静态成员函数与全局函数的差别就相当于你应用了名字空间,避免污染全局名字空间,
特别是private可以限定它的调用仅限于本类型、protected可以限定它的调用仅限于本类型及派生类型,也就是定义了它的作用域Top
7 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 13:47:54 得分 0
class CUserClass
{
....
static UINT BmpToJpgThread(LPVOID param);
....
}
void CUserClass::BeginThread
{
AfxBeginThread(BmpToJpgThread,....);
}
=============
BmpToJpgThread这个函数可不可以没有参数,一定要用LPVOID类型的参数吗?掉用的地方如果要写全应该怎么写。Top
8 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:00:09 得分 0
在VC中编译多线程程序需要特殊设置吗?为什么提示如下信息:
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.Top
9 楼azs()回复于 2004-09-03 14:05:36 得分 0
使用多线程库代替单线程库
ML换成MD
MLd换成MDd
Top
10 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:08:39 得分 0
楼上英雄,我不明白“ML换成MD MLd换成MDd”具体怎么弄?Top
11 楼azs()回复于 2004-09-03 14:09:38 得分 0
编译指示字Top
12 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:11:29 得分 0
请step by step指给我,不懂。没用过。Top
13 楼azs()回复于 2004-09-03 14:11:57 得分 0
菜单:project(工程)
子菜单:setting(设置)
对话框:c/c++
编辑框:project optionsTop
14 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:14:28 得分 0
我那里面没有MLd也没有MDd,是不是要加上MDd呀?
里面有MD(原来就有)。
我没用过VC做东西,但是接手别人的Vc程序,在修改。Top
15 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 14:17:38 得分 0
还是下面的错误信息:
MainFrm.cpp(1281) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more informationTop
16 楼aw325(爱情甜蜜蜜)回复于 2004-09-03 15:19:50 得分 0
解决了.Top




