В вашем звонке на AfxBeginThread
есть две проблемы. Во-первых, как указано в комментариях, вы должны убедиться, что ваш CCheckDlg::MyThreadProc
является static
функцией-членом (которая должна иметь атрибут __cdecl
, хотя это может по умолчанию) и используйте &CCheckDlg::MyThreadProc
в качестве первого аргумента.
Другая проблема заключается в том, что 0
(второй аргумент) интерпретируется как параметр int
, и поэтому компилятор не может разрешить какую из двух перегрузок выбрать. Используйте nullptr
- или явный (void *)(0)
- в качестве второго аргумента, чтобы была выбрана первая перегрузка.
две перегрузки для AfxBeginThread
:
CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);