FindWindow函数造成的问题

      这几天在使用MFC写一个程序的界面,因为原本程序时多线程的,所以在上面写界面的时候牵涉到了线程之间传递字符串的问题。对于这个问题,我采用的方法是使用SendMessage()方法,当然,该函数需要有个句柄参数hwnd。获取该句柄使用的方法就是FindWindow函数。该函数使用方法如下:HWND hwnd=::FindWindow(NULL,"vrtuDlg1");当然vrtuDlg1代表的是被获取的对话框的名字;最后返回的hwnd也就是该对话框的句柄了。

      那么这种使用方法会存在这样的问题,因为为了测试客户端的冗余处理问题,一个客户端会同时连接我这边的两个独立的服务器端,根据端口号不同来识别。那么我在使用两个我的带有界面的程序的时候,会出现这样的情况:只有当前激活窗口,才会显示实时收发的数据,而非激活状态的窗口,将没有数据显示在界面上。

      造成这样问题的原因就是FindWindow的问题了,因为两个服务端所使用的窗口的名字是一样的,所以它只能找到当前活动的窗口,通过SendMessage将数据传送给界面来显示。

       解决方法:我的解决方法就是不使用FindWindow这个函数来获得句柄,而是通过参数传递来实现的,讲主线程的当前对话框的指针对对象,传递给子线程,被子线程用于SendMessage()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值