大概流程是这样的:
1、在CConferenceView接收网络传来的数据,并触发事件:
AfxGetMainWnd()->SendMessage(WM_ADDLIST + 1, (LPARAM)&(msg.from), 6);
2、然后在CMainFrame中响应事件,并把用户显示在m_olist的列表中
void CMainFrame::OnAddMember(WPARAM wParam, LPARAM lParam)
{
CString* pStr = (CString*)wParam;
this->dlgBar.m_olist.AddItem((short)lParam, pStr->GetBuffer(0), NULL);
pStr->ReleaseBuffer();}msg.from是用户名。现在我想显示用户名的同时,显示用户ip,接收数据代码是不是这样写:
AfxGetMainWnd()->SendMessage(WM_ADDLIST + 1, (LPARAM)&(msg.from)&&(LPARAM)&(msg.ip), 6);如果是的话,在OnAddMember(WPARAM wParam, LPARAM lParam)中又该怎样分别获取from和ip呢?谢谢!!
1、在CConferenceView接收网络传来的数据,并触发事件:
AfxGetMainWnd()->SendMessage(WM_ADDLIST + 1, (LPARAM)&(msg.from), 6);
2、然后在CMainFrame中响应事件,并把用户显示在m_olist的列表中
void CMainFrame::OnAddMember(WPARAM wParam, LPARAM lParam)
{
CString* pStr = (CString*)wParam;
this->dlgBar.m_olist.AddItem((short)lParam, pStr->GetBuffer(0), NULL);
pStr->ReleaseBuffer();}msg.from是用户名。现在我想显示用户名的同时,显示用户ip,接收数据代码是不是这样写:
AfxGetMainWnd()->SendMessage(WM_ADDLIST + 1, (LPARAM)&(msg.from)&&(LPARAM)&(msg.ip), 6);如果是的话,在OnAddMember(WPARAM wParam, LPARAM lParam)中又该怎样分别获取from和ip呢?谢谢!!
解决方案 »
- 有没有线程池,链接池的相关代码啊?网址也行
- 关于添加命名空间
- GetProfileInt这个函数是用来干什么的?
- ####想要看别人实现的DLL文件有什么办法???#########
- 一个关于文件夹的问题!请大家帮忙啊
- 运行问题
- 打开一个书上的例子弹出Visual SourceSafe Login对话框,是干什么用的??
- ATL能单单只生成一个接口,而不生成相应的COM类吗?(100分!!!)
- jconfig.h是做什么用的?
- 如何用C++获取各种系统相关信息,如CPU使用率,硬盘使用空间,内存使用大小以及操作系统名等等
- GDI画的图在移动窗体时消失了
- 求救:怎么在多文档的主框架窗口画一幅bmp图片,能画吗,试了好多次都没有成功
{
CString from;
CString ip;
};在发送的时候,将SendData整个结构体转换为LPARAM然后SendMessageSendData data;
//这边是2个值初始化,我不写了AfxGetMainWnd()->SendMessage(WM_ADDLIST + 1, (LPARAM)&data, 20); 接收端就能接收到这个结构体的指针,并访问其中的2个量了
消息WM_ADDLIST + 1是自定义消息吧?既然是自定义消息,消息的参数可以自定,可这样指定:
wParam传递msg.from的指针,而lParam传递msg.ip的指针。这样写消息响应函数:
void CMainFrame::OnAddMember(WPARAM wParam, LPARAM lParam)
{
CString* pStrFrom = (CString*)wParam;
CString* pStrIP = (CString*)lParam;
this->dlgBar.m_olist.AddItem(pStrFrom, pStrIP); // 这里按m_olist对象添加项
delete pStrFrom;
delete pStrIP;
} 消息发送端代码:
SendMessage(WM_ADDLIST + 1, (WPARAM)new CString(msg.from), (LPARAM)new CString(msg.ip));
CString from;
CString ip;
做过网络编程的朋友一定不陌生,就是串行化收发数据啊。
CString* pStrFrom = (CString*)wParam;
CString* pStrIP = (CString*)lParam; this->dlgBar.m_olist.AddItem(0, pStrFrom->GetBuffer(0),pStrIP->GetBuffer(0));
pStrFrom->ReleaseBuffer();
可以先用LTCPSTR转
SendData *data = (SendData *)wParam;
CString StrFrom = data->from;
CString StrIP = data->ip;
因为我的代码中msg头文件已经声明了from和ip两个量:
CString from;
CString ip;
所以我能不能这样做:
接收数据代码:
AfxGetMainWnd()->SendMessage(WM_ADDLIST + 1, (LPARAM)&msg, 20);
然后再取出这两个量的值:
Cmsg *msg = (Cmsg *)wParam;
CString StrFrom = data->from;
CString StrIP = data->ip;
然后再取出这两个量的值:
Cmsg *msg = (Cmsg *)wParam;
CString StrFrom = msg->from;
CString StrIP = msg->ip;