不懂就问,各位高人会的帮忙回一个,不会的帮忙捧个人场,谢谢.试验成功了一个小的基于对话框辅助线程程序,但对于多线程编程的问题多多,一个一个问:1.AfxBegainThread使用时,参数里边的线程函数为什么不能定义在Dlg类的内部呢?我一声明就报错。“AfxBeginThread” : 2 个重载中没有一个可以转换参数 1(从“UINT (LPVOID)”类型)
“CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
“CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
试图匹配参数列表“(overloaded-function, HWND, int)”时
2.线程函数后来查资料不写声明,直接UINT MyThreadProc(LPVOID pParam)写在Dlg.cpp里就编译通过了。
有的CSDN资料写的“类中的线程函数用静态” ,但我没这么做也可以运行啊,什么情况要用静态的呢?
3.由于2的缘故,在Dlg.cpp里声明的这个没爹没娘的线程函数里,不能使用对话框的控件。
我想用CWnd * pWnd = AfxGetApp()->GetMainWnd(); pWnd->m_Edit1;的方法,但pWnd无法使用m_Eidt1,根本不能找到.4. .net下对于AfxBeginThread的使用形式只有以下两种: “CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
“CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
但一些实例里经常省略一些参数写AfxBeginThread(MyThreadProc,hWnd,THREAD_PRIORITY_NORMAL);
事实上也能正常运行,但我想知道省略参数的规范格式是什么?
如果我想使用参数是不是 (1,2,3)而是(1,2,4)省略第3个参数也可以这么排着写3个参数吗?
“CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
“CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
试图匹配参数列表“(overloaded-function, HWND, int)”时
2.线程函数后来查资料不写声明,直接UINT MyThreadProc(LPVOID pParam)写在Dlg.cpp里就编译通过了。
有的CSDN资料写的“类中的线程函数用静态” ,但我没这么做也可以运行啊,什么情况要用静态的呢?
3.由于2的缘故,在Dlg.cpp里声明的这个没爹没娘的线程函数里,不能使用对话框的控件。
我想用CWnd * pWnd = AfxGetApp()->GetMainWnd(); pWnd->m_Edit1;的方法,但pWnd无法使用m_Eidt1,根本不能找到.4. .net下对于AfxBeginThread的使用形式只有以下两种: “CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
“CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)”
但一些实例里经常省略一些参数写AfxBeginThread(MyThreadProc,hWnd,THREAD_PRIORITY_NORMAL);
事实上也能正常运行,但我想知道省略参数的规范格式是什么?
如果我想使用参数是不是 (1,2,3)而是(1,2,4)省略第3个参数也可以这么排着写3个参数吗?
3, 作为参数传递进去,但是建议你别在线程直接操作,可以在线程里发消息
UINT MyControllingFunction( LPVOID pParam );
3.CWnd不是线程安全的,不建议这么用。
如果我想使用参数是不是 (1,2,3)而是(1,2,4)省略第3个参数也可以这么排着写3个参数吗?
????不可能,只能省略后面的缺省参数。