你这样用是没什么错误的,有可能是你那个结构的问题或CSTRING的问题.
你用别的办法替换一下试试看
你用别的办法替换一下试试看
解决方案 »
- 关于截包内容的显示
- 补文档有什么好方法 Visual Studio
- 求助:两个类实例进行数据传递
- 谢一辈子!我下载了个源码?里面有2套资源工程dll,程序是如何知道加载哪个呢
- 请问怎么用CSocket实现UDP广播功能啊???求救!散分!
- 我想把對話框初始化中產生的字符串,保存成TXT檔,保存在視 圖中實現,產生一個保存一個,而且不知道會產生多少,請問該如何實現???
- 曾经在CSDN看到过<<windows学习笔记>>,怎么找不到了?
- 什么是call back ,如何使用呢?
- UDP做SOCKET程序,接受完数据后,缓存里的数据如何清除掉?
- SendMessage()参数传递问题
- 怎么样 在VC中把一个字符转成他本来的 ASCII码值!!
- 一个很菜的问题
m_Vita.m_member1 = 11;
m_Vita.m_member2 = 22;
...::SendMessage( hWnd, Messafe, (UINT)&m_Vita, 0);
m_Vita.Name = "aaa";::SendMessage(hWnd,Message,(LPARAM )&m_Vita,0);LRESULT CDakaileDlg::OnMsg(WPARAM wParam,LPARAM lParam)
{
Vita *m_Vita; m_Vita=(Vita *)lParam;
ASSERT(m_Vita);
SetDlgItemText(IDC_STATIC_SHOW,m_Vita->Name);
return TRUE;
}
在接收方用ASSERT(m_Vita)可以保证m_Vita所指向的内容访问的时候没有销毁吗?
因为windows用的是虚拟内存,所以两个ext之间虽然指针指向的地址数值一样,但的实际物理内存中并不相同,所以你会看到乱码。
你能说的详细一点吗?我是初学者,不太理解你的话。或者提供一些代码也可以,谢了!
to: lihato(大海)
共享内存的方法我会用,可是我们老师说:传递结构指针会比共享内存的方法要灵活,传后就释放内存。(他说的不一定对!)他要求用结构指针的方法.请大家多多指教!!!
头文件(Sendmes.h)
#ifndef __SENDMES_H
#define __SENDMES_H
#endif
typedef struct{
CString Name;
}Vita;...传递消息:
...
Vita* m_Vita;
...
::SendMessage(hWnd,Message,(WPARAM)0,(LPARAM)m_Vita);...收消息:
LRESULT CDakaileDlg::OnMsg(WPARAM wParam,LPARAM lParam)
{
m_Vita=(Vita *)lParam;
ASSERT(m_Vita);
SetDlgItemText(IDC_STATIC_SHOW,m_Vita->Name);
return TRUE;
} 下面是我测试成功了的:typedef struct{
CString szName;
}myStruct;LONG CSeimensSMSDlg::OnMyMsg(WPARAM wParam,LPARAM lparam)
{
CString *pText=(CString*)lparam;
SetDlgItemText(IDC_MYMSG,pText->GetBuffer(pText->GetLength()));
delete pText;
return 1;
}void CSeimensSMSDlg::OnButton2()
{
// TODO: Add your control notification handler code here
//CString *text=new CString;
//text->Format("Hello");
myStruct* aa=new myStruct;
aa->szName="aa";
SendMessage(WM_MYMSG,(WPARAM)0,(LPARAM)aa);
}
一般用LPARAM来传递一个指针,而不是WPARAM请注意我给你所作修改的的地方,还有我自己的一个原代码,我已测试成功了的。如有问题,请仔细地研究....
WM_COPYDATA
An application sends the WM_COPYDATA message to pass data to another application.
SendMessage(HWND_BROADCASE,(WPARAM)&m_vData,(LPARAM)0);
请问你测试成功的代码是进程间的程序吗?我需要的是进程间的,两个EXE之间的消息传递。请您尽快回复!谢了!
COPYDATASTRUCT cs;
cs.cbData=sizeof(p);
cs.lpData=p;
SendMessage(TargetWnd,WM_COPYDATA,(WPARAM)SourceWnd,(LPARAM)&cs);
然后在你的消息处理函数中把cs取出来,cs.lpData就是你要的字符串。