闲着无聊,想整个进程间通信的C++小东西,美其名曰:技术储备。
其中一个要实现的功能可以精简概述为:A对话框向B对话框发送一个结构体,B收到后蹦个提示框显示收到的部分内容。
略去非重点,直奔主题:A框打算用发送WM_COPYDATA的方式发送结构体,但之前要先用FindWindow函数找到B框的句柄。以下是遇到的一系列问题……
问题一:找不到B框!
描述:调试程序,使用类名和窗口名作参数、单用类名作为参数,始终找不到B框句柄;改为只用窗口名,却可以找到。使用Spy++查看,发现A框和B框的类名都为“#32770 (对话框)”,看来问题出这,函数找到了两个,不好辨别了。两个参数的方式,似乎后一个参数是摆设~
解决办法:修改对话框默认类名。改起来还挺麻烦的,要改两处:
主类文件,在启动对话框前添加如下代码:
WNDCLASS wndMyClass;
::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wndMyClass); //取得原来对话框的窗口类属性
wndMyClass.lpszClassName= _T("Ctest2Dlg");//将类名改成自定义的类名
AfxRegisterClass(&wndMyClass);
.rc文件:
IDD_TEST2_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "CH372模拟器"
CLASS "Ctest2Dlg" ///////////////这行是要添加的内容,显然就是这里改了自定义类名,这个类名要和类文件里的相同!
FONT 9, "宋体", 0, 0, 0x1
问题二:SendMessage函数不能接受四参数
描述:根据MSDN里的实例,添加找到的窗口句柄作为第一参数,WM_COPYDATA作为第二参数,外加两个参数,结果调试报错。
解决办法:原来是个小问题,示例中的函数是系统函数,要调用得加::,否则默认调用的是Cwn::SendMessage,它只有三个参数。
问题三:B框响应函数收不到WM_COPYDATA消息
描述:现象就是B框没反应~
解决办法:COPYDATASTRUCT结构体没有正确设置,一定要给结构体里每一个参数都赋值。
问题四:B框的响应函数解析不了收到的结构体
描述:首先描述下我的结构体,我是将一个含有LPCTSTR类型参数的结构体嵌入到COPYDATASTRUCT结构体中去的。B的函数可以收到COPYDATASTRUCT结构体,但无法解析出LPCTSTR参数的内容,总是乱码。步调发现,在A端嵌入结构体的时候就出问题了,使用sizeof算出的结构体长度不对。我赋的字符串至少30个字符,它却只算出20个字节!
解决办法:看来不能用LPCTSTR参数,换了定长的TCHAR数组,问题解决了。至于原理还不怎么明白,有空研究下。
问题五:为什么不能用自定义的消息传递数据
解决办法:这是C++对内存的管理机制问题了,进程间的内存是不能互相访问的,而WM_COPYDATA消息在底层用了共享内存的机制,传递的是物理内存地址映射,而不是普通消息的虚拟映射。
众里寻他千百度,我的A框终于找到了它的B框了……
分享到:
相关推荐
本文将围绕“搜索引擎的SNS路径思考:众里寻他千百度”这一主题,深入探讨搜索引擎在SNS领域的探索历程以及所面临的困境。 文章开篇以“众里寻他千百度”为引子,借助这句古诗词的意境,暗示了搜索引擎在海量信息中...
第4章 马化腾:创业初期,每天…4.1 病毒编程高手马化腾4.2 马站长创立腾讯4.3 寻呼机情结与救命投资4.4 奄奄一息的胖企鹅4.5 网大为的远见4.6
成功最有效的是复制,并非所有复制能够起效果,希望整理发布的众里寻他千百度李彦宏创业史能给...该文档为众里寻他千百度李彦宏创业史,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
这篇文档实际上是一系列幽默、搞笑的个性签名集合,并非与IT知识相关。这些签名表达了作者对生活的各种诙谐看法和自嘲,例如关于成长、生活挫折、情感、季节体验等日常话题。由于内容与IT无关,无法根据这些信息生成...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
众里寻TA千百度.exe
是不是觉得众里寻他千百度,蓦然回首密码就是不对,这个该死的加密宝,把我也给搞的进不去我的加密文件夹了,我累死累活的找啊找啊就是找不到解密器。 好的。哥来了。给你送来了你找不到的资源! 对于那些想用此...
“百度”二字,来自于八百年前南宋词人辛弃疾的一句词:众里寻他千百度。这句话描述了词人对理想的执着追求。1999年底,身在美国硅谷的李彦宏看到了中国互联网及中文搜索引擎服务的巨大发展潜力,抱着技术改变世界的...
众里寻他千百度,终于找到。转自http://www.cnblogs.com/FrankYao/archive/2011/10/10/dropdowncheckboxlist.html。不敢独享,更不敢收分。先对这位大神表示感谢。 DropDownCheckBoxList 控件继承 DropDownList ; ...
百度的名称来源于宋词人辛弃疾的诗句“众里寻他千百度”,寓意着百度致力于追求中文信息检索技术。百度是全球最大的中文搜索引擎,致力于向人们提供简单、可依赖的信息获取方式。百度在美国纳斯达克上市,股票代码为...
其实学习任何东西都是一样,没有太多的捷径可走,必须打好了坚实的基础,才有可以在进一步学习中得到快速..."众里寻他千百度,蓦然回首,那人却在灯火阑珊处。"此第三境界也。 学习Oracle,这也是你必须经历的三种境界
百度由李彦宏在2000年创立,其名字来源于古代诗词“众里寻他千百度”,寓意着搜索的本质。在初期,百度主要提供搜索引擎技术,服务于其他门户网站,逐渐积累了技术实力和市场经验。在短短几年内,百度凭借其精准的...
第三境:“众里寻他千百度,蓦然回首,那人却在,灯火阑珊处”。随着学习的深入,你需要泛读更多Java相关技术文章,学习中级知识,如Java与XML的结合、Java Bean和EJB等。同时,可以研读Java认证考试资料,深化理解...
百度,一家全球领先的中文搜索引擎公司,其名字来源于宋代辛弃疾的诗句:“众里寻他千百度”,寓意着在复杂多变的世界中,坚持不懈地追求理想与目标。自成立以来,百度一直致力于为用户提供最优质的信息搜索服务,...
百度公司的创立者是李彦宏,他将公司的名称取自于中国古代诗词“众里寻他千百度”,寓意着信息检索的执着与精准。公司总部位于北京,拥有世界级的研发中心,汇聚了众多顶级技术人才。百度的搜索引擎服务在中国市场...
百度的名称来源于宋代词人辛弃疾的诗句“众里寻他千百度”,象征公司对中文搜索技术的执着追求。根据CNNIC的《2007年中国搜索引擎市场报告》,百度在2006年的用户首选市场份额为62.1%,到2007年9月已上升至74.5%。...
- **公司名称由来**:“百度”二字源于宋代词人辛弃疾的《青玉案》中的诗句“众里寻他千百度”,寓意百度对于中文信息检索技术的不懈追求。 - **发展历程**:自成立以来,百度始终在技术创新方面保持领先地位,并...
众里寻他千百度 需要配合numpy+mkl 等等我也传上去
第三境界“众里寻他千百度,回头蓦见,那人正在,灯火阑珊处”,意味着在历经艰难后,最终找到答案或实现目标的顿悟时刻。 王国维的“三境界”说不仅揭示了个人成长和学术探索的规律,也成为了他一生奋斗的座右铭。...
公司的名称来源于宋代辛弃疾的《青玉案·元夕》中的名句“众里寻他千百度”,寓意在海量信息中精准定位。百度的标志是一个熊掌图案,灵感源自猎人追踪熊爪印的典故,象征着百度强大的搜索引擎技术,能准确追踪用户的...