c++ - 没有重载函数 "AfxBeginThread"的实例与参数列表匹配

标签 c++ multithreading mfc

我正在尝试使用 MFC 创建一个工作线程,所以这里是代码:

struct ThreadParam
{
    HWND mDlg;    // Note: A handle.
};

UINT TestMFCThread::Test( LPVOID pParam ){
  //do work!
}
void TestMFCThread::OnBnClickedButton2()
{
    ThreadParam* param = new ThreadParam;
    param->mDlg = m_hWnd;
    AfxBeginThread(Test, param);
}

但它给了我这个错误:

1   IntelliSense: no instance of overloaded function "AfxBeginThread" matches the argument list
    argument types are: (UINT (LPVOID pParam), ThreadParam *)

idk whats wrong it should be right!

最佳答案

来自 AfxBeginThread() 的文档您需要将第二个参数转换为 LPVOID:

AfxBeginThread(Test, (LPVOID) param);

并将Test的调用约定设置为__cdecl:

UINT __cdecl Test( LPVOID lParam)

关于c++ - 没有重载函数 "AfxBeginThread"的实例与参数列表匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9791648/

相关文章:

c++ - 使用派生类的成员函数启动线程

windows - Unicode/非 Unicode/UTF-8 问题

c++ - Windows 上 glibc 的 backtrace() 和 backtrace_symbols() 的对应物?

c++ - 初始化列表中的 QString 导致访问冲突。这里出了什么问题?

.net - 部署工具 ENTERPRISE - 什么是最适合 Windows 环境的工具?

c# - 干净的调用模式?

c++ - 新对象导致堆损坏

Java多线程有状态服务器——网络设计

c++ - array[byte] 到 HBITMAP 或 CBitmap

c++ - 无论如何,是否可以通过 PC 重启或用户单击应用程序快捷方式来识别 MFC 应用程序启动?