请教:在开一个线程时如何把一个参数同时传给它!!!!!高手请进,急!!!!!! 我在用CWinthread建立一个线程,用AfxBeginThread开始线程执行!!!我想在开始的时候同时传参数过去,比如一个SOCKET套接字,请问是如何操作的,急!!!!回答一定给分!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 AfxBeginThread(线程函数, 参数, 0, 0, 0, 0);就行了第二个参数你就可以填进一个 socket线程函数UINT Thread(LPVOID lparam){}lparam为线程接收的参数 AfxBeginThread(线程函数,参数,THREAD_PRIORITY_NORMAL);最后一个是优先级 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 );如果是第一种调用就如楼上所说! 如果是第二方法,即你是创建的一个CWinThread的派生类的话,你可以创建一个暂停的线程,然后给线程的成员变量付值,然后再恢复线程的运行1 For example:m_pTransferThread = (CRemotePlayThread*) AfxBeginThread(RUNTIME_CLASS(CRemotePlayThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); m_pTransferThread->m_bAutoDelete=false;m_pTransferThread->m_pRemotePlayChannel = this;m_pTransferThread->m_nID = nID;m_pTransferThread->ResumeThread(); 我用的是api函数,不过传参形式相似,请参考! 创建一个线程,进行通讯 m_hThread = CreateThread ( NULL, 0, ThreadProc, (LPVOID) ClientSock,// 线程的参数 0, &m_idThread ); DWORD WINAPI ThreadProc ( LPVOID parameter ) { SOCKET Sock = (SOCKET)parameter; //转换线程参数 .... } NPAPI插件的开发,请教各位大牛 Ribbon界面两问题->如何使添加的控件可用及checkbox控件勾选问题 各位大神,c++ buidler编译的lib怎么在vs中使用啊? 进程外组件该怎么调用? 多用户操作数据库 连接字串怎么写 具体过程如何 怎么防止锁 怎么用代码创建一个窗口 新建一个表,为何不能插入数据? 如何在一个对话框中加主菜单?谢谢! 如何将CMDIView中的按键消息,传送给对话框的列表。 请教图形高手,一个简单的问题? VC中只有按钮类有自画属性吗? 国庆放大假了,祝大家玩的愉快:),顺便问一个软件工程硕士的问题,大家进来评评!!!
就行了第二个参数你就可以填进一个 socket线程函数UINT Thread(LPVOID lparam)
{
}
lparam为线程接收的参数
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
);如果是第一种调用就如楼上所说!
m_pTransferThread = (CRemotePlayThread*) AfxBeginThread(RUNTIME_CLASS(CRemotePlayThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
m_pTransferThread->m_bAutoDelete=false;
m_pTransferThread->m_pRemotePlayChannel = this;
m_pTransferThread->m_nID = nID;
m_pTransferThread->ResumeThread();
m_hThread = CreateThread ( NULL,
0,
ThreadProc,
(LPVOID) ClientSock,// 线程的参数
0,
&m_idThread
); DWORD WINAPI ThreadProc ( LPVOID parameter )
{
SOCKET Sock = (SOCKET)parameter; //转换线程参数
....
}