1. 程式人生 > >解決MFC下執行緒建立的一個編譯錯誤

解決MFC下執行緒建立的一個編譯錯誤

錯誤的資訊為:error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'

今天在公司用winsdk寫了個執行緒的東西,回來後想用mfc的一些封裝類來寫,發現的確很簡單,很多引數都不用了。

用AfxBeginThread建立了個執行緒的指標也就是CWinThread *thread

一起看一下程式碼吧:

CWinThread *thread;

thread = AfxBeginThread(ThreadCallFunc, (LPVOID)this);

因為ThreadCallFunc是執行緒的回撥函式,我想當然的用Class Wizard來給View類添加了個成員函式,

產生的函式為

UINT CVedioView::ThreadCallFunc(LPVOID pParam)
{
    return 0;
}

我編譯就出現:error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'

的錯誤,google了很多有的說是回撥函式必須是static我也嘗試了還是錯誤。最後找到問題,就是不要用Class Wizard給View類新增成員函式,而是自己在cpp裡面新增一個函式也就是:

UINT ThreadCallFunc(LPVOID pParam)

{

    return 0;

}

這樣就好了。