使用CreateThread() vc 6.0 的多线程问题。。。。。。。。。。。 各位高手大哥帮帮小弟。。。。。。

编译的时候出现:CreateThread':cannotconvertparameter3from'unsignedlong(void*)'to'unsignedlong... 编译的时候出现:CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'。。。
我的函数声明如下:
ULONG __stdcall CarRun(void *);
BOOL CarthreadRun(CDC * pDC)////我是在这个函数里面使用多线程的
{ CreateThread(NULL,0,CarRun,(void *)0,0,NULL);
return true; }
但是在编译的时候出现了:'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
None of the functions with this name in scope match the target type。。。。。但是我百度上看了其他人很多关于CreateThread()的用法,我就是按他们做到。。可是为什么会这样啊。。。。。。。。。。。。。。小弟求助。。。。。。。。。。。。
对不起。。。。。。。因为我全是问题。。。。我是菜鸟,很多东西都不懂。我自己也没有分。。。。。。。。。。。但是还是求求大哥些帮帮忙。。。
展开
 我来答
peachey
2011-03-13 · 超过15用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:34.7万
展开全部
你的程序应该有问题,鉴于你没有把全部的程序贴出来 我只能分析一下你可能出错的地方

ULONG __stdcall CarRun(void *); 前面的下划线 只有一个 我复制到记事本上看了 你写的有两个下划线 并且 unsigned long _stdcall CardRun(void*) 的声明不能放在类里面 应该作为一个全局函数 放到类的外面才可以

我已经给试过了 具体程序如下

//.h文件
DWORD _stdcall CarRun(void*);

class CKJScrDispDlg : public CDialog
{ 。。。。。。。。。。。。。
。。。。。。。。。
}

//cpp文件
BOOL CKJScrDispDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

CreateThread(NULL,0,CarRun,this,0,NULL);
return TRUE; // return TRUE unless you set the focus to a control
}

DWORD _stdcall CarRun(void *)
{
return 0;

}
兰冷之e7
2011-03-16
知道答主
回答量:13
采纳率:100%
帮助的人:4.9万
展开全部
你是在MFC的类里面定义吧?因为你是一个类的成员函数,所以是不行的,要把这个线程的过程函数定义为静态才可以,在声明前加上static就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式