多文档工程中,在打开多个文档的情况下,如何得到非活动窗口的句柄

xianshui 2009-09-26 10:51:58
初玩MFC,我有一个这样的理解,不知道对不对,希望高手能指教一下:多文档下面,打开多个文档的时候(我没有创建多个模版),那么是不是程序会为每个打开的文档单独创建doc/view类?

接着,就是我的主要问题了,我现在打开了两个文件,同时我希望在活动窗口中得到非活动窗口的文件数据,请问这个,能实现不?应该如何实现呢?
...全文
120 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianshui 2009-09-28
  • 打赏
  • 举报
回复
结贴了,感谢以上两位。。
oyster2008 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xianshui 的回复:]
此前我还有一个理解,“GetFirstDocPosition是返回第一个文档指针的位置”,于是我就希望在前面加一个“*”来直接获取里面的值,结果失败老,他报错。呵呵。。
[/Quote]
呵呵,MFC里面的容器一般都是这样遍历的
xianshui 2009-09-27
  • 打赏
  • 举报
回复
此前我还有一个理解,“GetFirstDocPosition是返回第一个文档指针的位置”,于是我就希望在前面加一个“*”来直接获取里面的值,结果失败老,他报错。呵呵。。
oyster2008 2009-09-27
  • 打赏
  • 举报
回复
GetFirstDocPosition是返回第一个文档指针的位置,不是返回文档指针本身,GetNextDoc(pos)返回在pos这个位置的文档指针,并且更新pos,使它指向下一个文档
xianshui 2009-09-27
  • 打赏
  • 举报
回复
我还以为。。GetFirstDocPosition这个直接返回第一个打开的文档的指针了,然后用GetNextDoc是得到下一个。。结果不是。。
xianshui 2009-09-27
  • 打赏
  • 举报
回复
allright1199。。

谢谢啦。。你的这个我是在微软的帮助那里看到的一部分。。试了一下,发现结果是我要的。。只是我从字面上面和MSDN上面看不懂他们的作用。。

哈哈,反正我的确是拿到了我要的指针了。。

不知道你们能不能给文字解释一下啊?
xianshui 2009-09-27
  • 打赏
  • 举报
回复
GetNextDoc才返回CDocument类变量的指针啊。。。从字面去理解咋差别这大
oyster2008 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 allright1199 的回复:]
CWinApp * pApp = AfxGetApp();
POSITION posTemplate = pApp->GetFirstDocTemplatePosition();

while( posTemplate != NULL )
{
CDocTemplate* pTemplate= pApp->GetNextDocTemplate(posTemplate) ;
POSITION posDocument = pTemplate->GetFirstDocPosition();
while( posDocument!= NULL)
{
    CDocument *pDoc = pTemplate->GetNextDoc (posDocument) ;
            ………………
        }
}

自己的工程里拷贝的,lz试试看
[/Quote]
UP
allright1199 2009-09-27
  • 打赏
  • 举报
回复
CWinApp * pApp = AfxGetApp();
POSITION posTemplate = pApp->GetFirstDocTemplatePosition();

while( posTemplate != NULL )
{
CDocTemplate* pTemplate= pApp->GetNextDocTemplate(posTemplate) ;
POSITION posDocument = pTemplate->GetFirstDocPosition();
while( posDocument!= NULL)
{
CDocument *pDoc = pTemplate->GetNextDoc (posDocument) ;
………………
}
}

自己的工程里拷贝的,lz试试看
xianshui 2009-09-27
  • 打赏
  • 举报
回复
这个CDocTemplate::GetFirstDocPosition返回的值,和CView::GetDocument返回的值,有没有什么区别的?

英文水平不过关,MSDN看的悬乎啊。。

我真想得到非活动窗口那个文档的CXXXXDoc的指针哦
oyster2008 2009-09-26
  • 打赏
  • 举报
回复
那么是不是程序会为每个打开的文档单独创建doc/view类?
是的
同时我希望在活动窗口中得到非活动窗口的文件数据?
可以的,在CDocument派生类中得到CDocTemplate类的指针,然后遍历文档就可以了
GetDocTemplate、GetFirstDocPosition、GetNextDoc
xianshui 2009-09-26
  • 打赏
  • 举报
回复
哈哈,谢谢,我先试试看。。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧