读书人

大家帮忙看看多文档应用程序新建多

发布时间: 2012-03-26 15:46:55 作者: rapoo

大家帮忙看看,多文档应用程序,新建多个文档后,如何获得当前被激活的文档指针。
void CghghView::WorkCanvusToWindow()
{
//CView *pOldActiveView=GetActiveView();
CClientDC dc(this);
struct IMAGEPARAMENT P;
if (SaveCanvus.IsNull())
return;
GetImageParament(&WorkCanvus, &P);
WorkCanvus.BitBlt(dc, 0, 0, P.nWidth, P.nHeight, 0, 0, SRCCOPY);//位块传输实现显示
}
上面是我写的一段把内存画布的图像显示到窗口的程序,如果应用程序中只有一个文档窗口,那么图片可以显示,问题来了,如果应用程序中新多个文档,再用该程序送显时,每个窗口都会现实这个图片,而我想要的是,只把图像显示到当前窗口激活的那个窗口,,我想是CClientDC dc(this);这一句的问题,括号里面的指针不该是this,而该是当前被激活的文档窗口指针,怎么获得当前文档窗口的指针,大家帮忙看看怎么改。谢过~

[解决办法]
当前活动的文档指针,先通过主框架 GetActiveFrame()/MDIGetActive() 等到 活动的子Frame

然后再通过子Frame的 GetActiveView获取活动视图
[解决办法]
第一句这样获得当前激活view

CMDIFrameWnd *pFrame =
(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

// Get the active MDI child window.
CMDIChildWnd *pChild =
(CMDIChildWnd *) pFrame->GetActiveFrame();

// or CMDIChildWnd *pChild = pFrame->MDIGetActive();

// Get the active view attached to the active MDI child
// window.


CView *pOldActiveView= (CView *) pChild->GetActiveView();

读书人网 >VC/MFC

热点推荐