Treectrl与视图间通信问题

protosswy 2006-08-29 11:11:06
我作了个在MFC中嵌入WORD的程序,视图左面是个TOOLBAR里面放了个treectrl,而word文档的嵌入是通过下面这个函数实现的,CDemo1CntrItem是容器类。
void CDemo1View::EmbedNewItem()
{
BeginWaitCursor();
CDemo1CntrItem* pItem = NULL;
TRY
{
CDemo1Doc* pDoc = GetDocument(); //出错
ASSERT_VALID(pDoc);
pItem = new CDemo1CntrItem(pDoc);
ASSERT_VALID(pItem);
GetClientRect(&pItem->rect);

CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.document",&clsid)))
AfxThrowMemoryException();
if(!pItem->CreateNewItem(clsid))
AfxThrowMemoryException();
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW, this);
m_pSelection = pItem;
pDoc->UpdateAllViews(NULL);
LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch();
}
CATCH(CException, e)
{

if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCH
EndWaitCursor();
}

下面是问题:
我想通过treectrl来插入word文档,我的方法是在App里面定义一个CDemo1View的指针pView,然后在treectrl里得到这个指针
CDemo1App *pApp=(CDemo1App *)AfxGetApp(); //得到APP指针
但是在调用嵌入的函数的时候出错了
pApp->pView->EmbedNewItem() //出错拉
跟了一下发现是在函数里CDemo1Doc* pDoc = GetDocument();的地方出错,该怎么解决呢?
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
protosswy 2006-08-29
  • 打赏
  • 举报
回复
应该不是没有绑定的问题吧,因为我在CDemo1View里面直接调用是没有问题的,Elysium的方法我去试试看
思危 2006-08-29
  • 打赏
  • 举报
回复
如果返回文档指针为空,应该是你创建时没绑定文档视图关系
Elysium 2006-08-29
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4895/4895361.xml?temp=.7444116
muroachanf 2006-08-29
  • 打赏
  • 举报
回复
1 用release编译
2 你的 doc没跟view绑定,建议你检查一下GetDocument()函数
muroachanf 2006-08-29
  • 打赏
  • 举报
回复
估计pApp->pView这个是空指针
protosswy 2006-08-29
  • 打赏
  • 举报
回复
自己解决了,换了个获得指针得方法
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CDemo1View *pView=(CDemo1View *)pMain->GetActiveView();
pView->EmbedNewItem();
具体原因不清楚,谁能解释下,我就散分鸟,呵呵

16,551

社区成员

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

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

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