关于再线程理调用其他类的成员函数 将对象指针传递给线程参数 FlashToolThread(LPVOID pParam){ A *p = (A *)pParam; p->fun();} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将对象指针传递给线程参数 FlashToolThread(LPVOID pParam){ A *p = (A *)pParam; p->fun();} UINT _ListenTcpThread(LPVOID lparam){//TCP监听线程 CBackupClientDlg *pDlg=(CBackupClientDlg *)lparam;//看这里,创建对话框对象 if(pDlg->StopServer==true) return -1; CSocket sockSrvr; pDlg->m_Potr=PORT+pDlg->m_server; int createSucceed=sockSrvr.Create(pDlg->m_Potr); if(createSucceed==0) { AfxMessageBox("_ListenTcpThread Create错误!"+pDlg->GetError(GetLastError())); return -1; } int listenSucceed=sockSrvr.Listen();//本机指定端口监听网络事件 if(listenSucceed==0) { AfxMessageBox("_ListenTcpThread Listen错误!"+pDlg->GetError(GetLastError())); return -1; } CSocket recSo; SOCKADDR_IN client; int iAddrSize=sizeof(client); //监听到网络事件交给接收线程处理,监听线程继续监听消息 int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR *)&client,&iAddrSize); if(acceptSucceed==0) { AfxMessageBox("_ListenTcpThread Accept错误!"+pDlg->GetError(GetLastError())); return -1; } sockSrvr.Close(); char flag[FLAG]={0}; if(recSo.Receive(flag,FLAG)!=2) { return -1; } pDlg->m_type=flag[0]; if(pDlg->m_type=='D') return 0; pThreadLisen=::AfxBeginThread(_ListenTcpThread,pDlg); pDlg->ReceiveFileMsg(recSo,client);//接收线程 return 0; } class A对象实例的指针通过线程参数传递进来,也可以使用全局变量,不过在多线程时要慎用全局变量 pDC,CDC问题 还是那个问题- - 对程序运行时候的判断 怎么动态改变Static的文字 关于dll 如何利用ftp作中继,连接局域网和Internet? 不知如何运用线程提高效率!(急)!!!!!!!!!!!! MFC基于对话框问题---变量的传递 一个有关软件安装的问题!请指教 sizeof这个函数是干什么用的?最近看它出现的比较频繁又摸不到头脑! 为什么资源ID都变成了数字? 如何获取各驱动器的盘符和相就的设备名
FlashToolThread(LPVOID pParam)
{
A *p = (A *)pParam;
p->fun();
}
UINT _ListenTcpThread(LPVOID lparam)
{//TCP监听线程
CBackupClientDlg *pDlg=(CBackupClientDlg *)lparam;//看这里,创建对话框对象
if(pDlg->StopServer==true) return -1;
CSocket sockSrvr;
pDlg->m_Potr=PORT+pDlg->m_server;
int createSucceed=sockSrvr.Create(pDlg->m_Potr);
if(createSucceed==0)
{
AfxMessageBox("_ListenTcpThread Create错误!"+pDlg->GetError(GetLastError()));
return -1;
}
int listenSucceed=sockSrvr.Listen();//本机指定端口监听网络事件
if(listenSucceed==0)
{
AfxMessageBox("_ListenTcpThread Listen错误!"+pDlg->GetError(GetLastError()));
return -1;
}
CSocket recSo;
SOCKADDR_IN client;
int iAddrSize=sizeof(client);
//监听到网络事件交给接收线程处理,监听线程继续监听消息
int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR *)&client,&iAddrSize);
if(acceptSucceed==0)
{
AfxMessageBox("_ListenTcpThread Accept错误!"+pDlg->GetError(GetLastError()));
return -1;
}
sockSrvr.Close();
char flag[FLAG]={0};
if(recSo.Receive(flag,FLAG)!=2)
{
return -1;
}
pDlg->m_type=flag[0];
if(pDlg->m_type=='D') return 0;
pThreadLisen=::AfxBeginThread(_ListenTcpThread,pDlg);
pDlg->ReceiveFileMsg(recSo,client);//接收线程
return 0;
}