2 bigtree mfc bigtree_mfc 于 2014.11.24 16:34 提问

【MFC静态分割窗口后,窗口通信有哪些方法???】

我自己的是从通过doc来传输数据的。
发送数据
获取文档指针
pDoc->infoArray[0].InsertAt(0," 数据");
pDoc->add=true;
pDoc->UpdateAllViews(NULL);//刷新显示
接受数据
获取文档指针
if(pDoc->add)
{
CString str;
str = pDoc->InfoArray[0].GetAt(0);//str = 数据
}
那还有没有别的方法,
怎么发送数据,怎么接受数据,最好是不带这句话的方法:pDoc->UpdateAllViews(NULL);//刷新显示

4个回答

bigtree_mfc
bigtree_mfc   2014.12.25 08:05
已采纳

问题已经解决,采用的是,全局变量同时,获取各窗口的句柄,传值后进行窗口刷新显示,比窗口通讯要好

happyparrot
happyparrot   Ds   Rxr 2014.11.24 16:59

首先,文档类本身哪来的数据入口?应该是外部调用的吧?在哪里?从这个地方分支,一方面调用文档类进行数据处理,然后再通知各个视图类进行刷新。这个处理可以封装起来,比如由主框架类负责处理,并通知所有视图。这可以用一个消息来完成。

bigtree_mfc
bigtree_mfc 不经过DOC,直接传递么,然后调用draw或者paint?
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2014.11.25 00:12
wylblq
wylblq   2014.12.11 09:20

可以自定义消息,把要发送的数据封装成类,需要接受数据的地方定义消息处理函数。在发送的时候把数据类new出来,向接受数据的窗口句柄发送消息(postmessage),将new出来的对象指针当成参数传递。处理的窗口处理完成后记得delete。具体可以查“MFC 自定义消息”。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!