正用CSocket&&CSokcetFile&&CArchive做多线程聊天程序,开辟接受发送两个线程,主线程中的cliSocket(继承自CSocket)负责数据中间转发——详细点说就是,当receive的时候,cliSocket中OnReceive()响应消息,调用接受线程的Receive函数,该函数中接受CString类型数据,然后调用::PostThreadMessage((DWORD)(GetMainWnd()->GetSafeHwnd()),WM_RECEIVE_MSG,(WPARAM)&msg,NULL);将该数据msg传回去给CliSocket的消息函数WM_RECEIVE_MSG,cliSocket再将它传给dlg(对话框).send的差不多。问题是在msg->flush()出现内存泄漏,听网上人说,postthreadmessage中的wParam不能接受字符串参数,那么应该怎么弄,将msg转化成字符数组再传吗??可能表述不清,请见谅。谢谢
解决方案 »
- 恳请高手看看. Proactor问题
- 使用VC++.Net创建ActiveX在用户在WEB端调用时是否会有额外下载。
- 菜鸟问题,在idl中声明的一个结构体可以有它自己的uuid吗?
- 请教如何发送TCN_SELCHANGE消息?
- 如何在应用程序中通过程序的方法注册一个com组件
- 请问怎样在CMainFrame中得到CDocument MDI应用程序中。
- 嵌入式系统&嵌入式操作系统的前景怎么样?
- 我一直都想搞清vc程序的执行顺序,有谁能告诉我,我不胜感激。
- 近日找工作的感触:被英语绊了
- 有那位大虾可以帮忙翻译几个计算机术语!不胜感激!
- 为什么我用GetActiveView却得不到View呢
- CPropertySheet的最大化问题,高手请帮忙!!
否则你肯难空值变量生命周期
//全局
typedef struct
{
CString s;
}temp;//主进程的函数中
//在该类声明中
temp test1;
//在该类函数中
test1.s="aaa";
pSendThd->PostThreadMessage(WM_SEND,(UINT)&test1,NULL); ///////////////用new
//全局
typedef struct
{
CString s;
}temp;//主进程的函数中
//在该类声明中
temp *test2
//在该类函数中
test2=new temp;
test2->s="aaa";
pSendThd->PostThreadMessage(WM_SEND,(UINT)test2,NULL); ////////////////////////////////////////////////////////////////////////
第一种不可以吗??
是否和数据生命期有关。
指针=INT
第一个不行,你Post过去,得保证去方取的时候你的对象还存在