mfc中怎么接收消息

我做远程聊天,用MFC,CS模式,我想知道是那个函数把服务器过来的结构体接收的?... 我做远程聊天,用MFC,CS模式,我想知道是那个函数把服务器过来的结构体接收的? 展开
 我来答
lilaosi2001
2011-02-27 · TA获得超过823个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:361万
展开全部
用CSocket类或者CAsyncSocket类;其实CSocket是CAsyncSocket的派生类,用起来都一样;
首先,你需要自己继承CSoscket类或者CAsyncSocket类,定义出一个CServer类和一个CClient类;然后再你的主程序(主线程)中,建立服务端和客户端的实例,并进行相应的初始化;

服务端主要需要制定监听端口,然后服务端还需要调用listen这个函数使端口进入监听状态;然后你的CServer类中需要实现OnAccept这个函数,它负责检测有没有客户端接入;实现OnReceive,它负责通知你有数据需要接受;实现OnClose,它负责通知你,某个客户端断开了连接;

客户端主要需要调用connect函数向指定的服务器进行连接;然后你的CClient类中需要实现OnConnect函数,它负责告诉你与服务端连接已建立;实现OnReceive,它负责通知你有数据需要接收;实现OnClose,它负责通知你,某个服务端断开你的连接;

接下来,在前面我提到的OnAccept函数中,你需要调用Accept进行客户端接入操作;在OnReceive函数中应该调用Receive函数接收数据;OnConnect和OnClose是一个通知,这个根据你的需要自己添加功能;发送数据调用send函数
天天快乐郎
2011-02-27 · TA获得超过547个赞
知道小有建树答主
回答量:696
采纳率:0%
帮助的人:408万
展开全部
tWindowLong并传入GWL_WNDPROC参数来设置你新的消息处理函数地址,对于你不处理的消息用 CallWindowProc并传入旧的消息消息处理函数来处理它

你可以这样实现,在DLL里写一个函数,例如是叫HOOK吧,它有一个参数HWND;HOOK函数里面调用SetWindowLong并传入GWL_WNDPROC就可以设置指定的HWND的消息处理函数地址(SetWindowLong的返回值是旧的消息处理函数地址);剩下的就看你的消息处理函数怎么写了;对于你不需要处理的消息,都用
CallWindowProc(OldMsgProc,.....)来处理好了
===============
不懂再PM或HI留言
追问
nihao ,nihao 你好,我以前见过别人用那个不是DLL,他是随便在该工程中间写一个函数把它加入到消息队列中,然后就用那个消息了
我对DLL不是很了解,望加解释
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c1bwh086
2011-02-27 · TA获得超过1381个赞
知道小有建树答主
回答量:780
采纳率:0%
帮助的人:622万
展开全部
你可以在DLL里再写一个消息处理函数,然后用SetWindowLong并传入GWL_WNDPROC参数来设置你新的消息处理函数地址,对于你不处理的消息用 CallWindowProc并传入旧的消息消息处理函数来处理它

你可以这样实现,在DLL里写一个函数,例如是叫HOOK吧,它有一个参数HWND;HOOK函数里面调用SetWindowLong并传入GWL_WNDPROC就可以设置指定的HWND的消息处理函数地址(SetWindowLong的返回值是旧的消息处理函数地址);剩下的就看你的消息处理函数怎么写了;对于你不需要处理的消息,都用
CallWindowProc(OldMsgProc,.....)来处理好了
===============
不懂再PM或HI留言
追问
nihao 你好,我不懂这个,但是老师当时讲时候没有说是用动态链接库的
好像是对话框或者CSocket就有这个功能
我忘记了
希望您给个解决,
谢谢。

参考资料: 百度一下

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zss2366
2011-02-27 · TA获得超过206个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:130万
展开全部
你先创建一个C++类,继承自CSocket,比如叫CmySocket;
然后添加一个成员变量,指向你程序的主窗体的指针。初始化为NULL;比如叫pParent;
然后重载这个类的OnReceive()函数,写下面的代码
unsigned char buff[1024];
int n = Receive(buff, 1024);
pParent->DoSth(buff);
这样就行了,这个DoSth函数要在主程序中自己写,就是处理接收到的信息内容的。比如显示到某个空间啊,之类的。
然后再你的主程序中,包含这个新建的类的头文件,并且创建一个CmySocket的成员变量,在初始化的时候写上下面这样:
.h:
CmySocket mySock;
.cpp:
mySock.pParent = this;
当服务器发过来消息的时候,会自动调用这个函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式