void CExam8Dlg::OnSaveKeywordButton()
{
////
////
////
////
}
void CExam8Dlg::OnStartthreadButton()
{
HANDLE hand=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
}DWORD WINAPI ThreadProc(LPVOID lpParameter)
{ OnSaveKeywordButton() ;
return 0;
}错误提示 :error C2065: 'OnSaveKeywordButton' : undeclared identifier明明就定义了,我该怎么做才能调用那个函数呢?求教
{
////
////
////
////
}
void CExam8Dlg::OnStartthreadButton()
{
HANDLE hand=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
}DWORD WINAPI ThreadProc(LPVOID lpParameter)
{ OnSaveKeywordButton() ;
return 0;
}错误提示 :error C2065: 'OnSaveKeywordButton' : undeclared identifier明明就定义了,我该怎么做才能调用那个函数呢?求教
你的情况最好用消息发送给对话框
{
HWND hWnd = (HWND)lpParam;
SendMessage(hWnd, UM_MESSAGE, 0, 0);
return 0;
}afx_msg LRESULT OnMessage(WPARAM wParam, LPARAM lParam);ON_MESSAGE(UM_MESSAGE, &CXXXDlg::OnMessage)LRESULT CXXXDlg::OnMessage(WPARAM wParam, LPARAM lParam)
{
OnSaveKeywordButton();
return 0;
}
{
CExam8Dlg *pDlg = (CExam8Dlg*)lpParameter;
pDlg->OnSaveKeywordButton() ;
return 0;
}
{中的参数,可以把当前窗口类的指针传进来,CExam8Dlg *pDlg = (CExam8Dlg*)lpParameter;
pDlg->OnSaveKeywordButton() ;就如这种方式,就可以用到类成员函数了。
线程函数是你那个类的静态函数。不属于具体对象,所以你得把对象的指针传过去。
线程函数都有一个LPVOID类型的参数,可以把Dialog的指针传过来。你的OnSaveKeywordButton是Public的吗?
OnSaveKeywordButton' : cannot access protected member declared in class 'CExam8Dlg'
h:\microsoft visual studio\myprojects\exam8\exam8dlg.h(54) : see declaration of 'OnSaveKeywordButton'怎么办?救救我啊
{
HANDLE hand=CreateThread(NULL,0,ThreadProc,this,0,NULL);
}
我还想请问 这里的 this 是什么意思?
就是这个类本身大哥,你不会连C++的基本知识都甚是缺乏吧?