【问题标题】:issue with _beginthreadex used with MFC class与 MFC 类一起使用的 _beginthreadex 问题
【发布时间】:2016-04-06 17:24:07
【问题描述】:

不能在 MFC 中使用 _beginthreadex 给出错误为错误 C3861: '_beginthreadex': 未找到标识符 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
                    );
}

【问题讨论】:

  • 请仅发布相关代码。您的问题中确实有太多不相关的代码使其有用。
  • 我下次会小心的。
  • 是什么让你这次不小心了?您仍然可以edit您的问题,以使其对未来的访问者更有用。

标签: mfc beginthreadex


【解决方案1】:

通常在 MFC 中使用 AfxBeginThread()。你确定你需要_beginthreadex()吗?您的所有参数似乎都是默认值。

您可能需要检查#includes 的顺序和stdafx.h 的内容和/或检查您的包含目录。您还需要包含&lt;process.h&gt; 之后 stdafx.h。这可能会解决它。

【讨论】:

  • 非常感谢。当在 stdafx.h 之后包含 process.h 时,Danny_ds 问题得到解决。我知道使用了 AfxBeginThread() 但需要使用 beginthreadex。
猜你喜欢
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多