跨进程消息的传递,用到了一个WM_COPYDATA的函数.但是CString类型就传了个空内容过去??? 在跨进程消息的传递中,用到了一个WM_COPYDATA的函数,但是我在做这个程序(程序内容是,分别在两个编译器中创建窗口,这样两个窗口就是两个进程了)的时候发现,如int char CTime等等的类型都可以传过去,但是CString类型就传了个空内容过去,究竟是为什么呢?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将CString类型改成char *就可以了 CWnd* m_wnd=CWnd::FindWindow("Afx:Sunpro:ObtGlobalCom",NULL); if(m_wnd!=NULL) { COPYDATASTRUCT cpd; cpd.dwData = 0; //打印和主程序交换数据 cpd.cbData = m_saveFile.GetLength()+1; cpd.lpData = (void*)m_saveFile.GetBuffer(m_saveFile.GetLength()+1); m_wnd->SendMessage(WM_COPYDATA,0,(LPARAM)&cpd); m_saveFile.ReleaseBuffer(); } CString不能用于WM_COPYDATA,因其内部包含了LPTSTR m_pchData,这样当WM_COPYDATA时,其所指内容已不是当前进程中的地址了 为空白的原因是CString实际上传过去的是指向原来进程空间的字符数据的一个指针,如果你跨进程传递,那么这个指针已经无效了,它所指向的地方的数据是不可知的。 请教如何通过WM_DEVICECHANGE判断USB串口? 求8bit灰度图文件生成代码 求助:图像采集的摄像头采集卡的选择问题 初学网络编程,想请教几个问题 如何直接读取光轨? 关于系统 一个超级菜的问题 有搞WINCE开发的吗?大家互相结识一下,以后有问题可交流! opengl 旋转问题 这个问题怎么解决? 要使用CDataBase类进行数据库编程,在Appwizard中要怎样选择 [紧急求助]控制台程序中如何使用MSHFlexGrid控件(Up一样给分)
if(m_wnd!=NULL)
{
COPYDATASTRUCT cpd;
cpd.dwData = 0; //打印和主程序交换数据
cpd.cbData = m_saveFile.GetLength()+1;
cpd.lpData = (void*)m_saveFile.GetBuffer(m_saveFile.GetLength()+1);
m_wnd->SendMessage(WM_COPYDATA,0,(LPARAM)&cpd);
m_saveFile.ReleaseBuffer();
}