与 MFC 一起使用的 _beginthreadex 问题 class
issue with _beginthreadex used with MFC class
无法在 MFC 中使用 _beginthreadex
给出错误 C3861: '_beginthreadex': identifier not found
beginthreadex 在没有 MFC 代码的情况下工作正常。
编辑:问题与文件包含顺序有关,需要使用 _beginthreadex
// EventsHandshakeDlg.cpp : implementation file
//
#include <crtdefs.h>
#include <process.h>
#include"windowsx.h"
#include "stdafx.h"
unsigned int __stdcall/*AFX_THREADPROC*/ /*__cdecl*/ Server(void *iData)
{
}
// CEventsHandshakeDlg dialogCEventsHandshakeDlg::CEventsHandshakeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEventsHandshakeDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
BEGIN_MESSAGE_MAP(CEventsHandshakeDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BTN_REVERSE, &CEventsHandshakeDlg::OnBnClickedBtnReverse)
END_MESSAGE_MAP()
// CEventsHandshakeDlg message handlers
BOOL CEventsHandshakeDlg::OnInitDialog()
{
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CEventsHandshakeDlg::OnBnClickedBtnReverse()
{unsigned int threadId = 0;
HANDLE Thread =(HANDLE)_beginthreadex(
NULL,
NULL,
&/*CEventsHandshakeDlg::*/Server/*(void *iData)*/,
NULL,
0,
&threadId
);
}
通常在MFC中使用AfxBeginThread()
。您确定需要 _beginthreadex()
吗?您所有的参数似乎都是默认值。
您可能需要检查 #includes
的顺序和 stdafx.h
的内容 and/or 检查您的包含目录。您还需要在 stdafx.h
之后包含 <process.h>
。这可能会解决它。
无法在 MFC 中使用 _beginthreadex 给出错误 C3861: '_beginthreadex': identifier not found beginthreadex 在没有 MFC 代码的情况下工作正常。
编辑:问题与文件包含顺序有关,需要使用 _beginthreadex
// EventsHandshakeDlg.cpp : implementation file
//
#include <crtdefs.h>
#include <process.h>
#include"windowsx.h"
#include "stdafx.h"
unsigned int __stdcall/*AFX_THREADPROC*/ /*__cdecl*/ Server(void *iData)
{
}
// CEventsHandshakeDlg dialogCEventsHandshakeDlg::CEventsHandshakeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEventsHandshakeDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
BEGIN_MESSAGE_MAP(CEventsHandshakeDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BTN_REVERSE, &CEventsHandshakeDlg::OnBnClickedBtnReverse)
END_MESSAGE_MAP()
// CEventsHandshakeDlg message handlers
BOOL CEventsHandshakeDlg::OnInitDialog()
{
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CEventsHandshakeDlg::OnBnClickedBtnReverse()
{unsigned int threadId = 0;
HANDLE Thread =(HANDLE)_beginthreadex(
NULL,
NULL,
&/*CEventsHandshakeDlg::*/Server/*(void *iData)*/,
NULL,
0,
&threadId
);
}
通常在MFC中使用AfxBeginThread()
。您确定需要 _beginthreadex()
吗?您所有的参数似乎都是默认值。
您可能需要检查 #includes
的顺序和 stdafx.h
的内容 and/or 检查您的包含目录。您还需要在 stdafx.h
之后包含 <process.h>
。这可能会解决它。