MFC多文档程序中,如何在Doc类中获取ChildFrame的指针? MFC多文档程序中,如何在Doc类中获取ChildFrame的指针? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用AfxGetMainWnd()->MDIGetActive()或者用AfxGetMainWnd()->GetActiveFrame()应该都可以 BOOL CMDIDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; // TODO: Add your specialized creation code here m_Image.Load(lpszPathName); CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); CChildFrame* pChildFrame = (CChildFrame*)pMainFrame->GetActiveFrame(); pChildFrame->SetWindowPos(NULL,0,0,m_Image.Width(),m_Image.Height(),SWP_SHOWWINDOW); return TRUE;}在上面这个函数中我加载一幅图片,并根据图片尺寸来设置子窗口的大小,但实际上修改的是主窗口的尺寸,这是怎么回事? 子框架和视图被设为Active都发生在OnOpenDocument()或者OnNewDocument()后。所以在这个函数中是得不到子窗口的指针的。 得到子框架窗口是通过CMDIChildWnd* pWnd = ((CMainFrame*)AfxGetMainWnd())->MDIGetActive();得到的,不是((CMainFrame*)AfxGetMainWnd())->GetActiveFrame();//得到是活动的框架窗口,不一定是子框架窗口其他的问题ls都已经说明了你可以在OnOpenDocuemnt里PostMessage一个自定义的消息,然后在消息响应函数中去做处理,比如AfxGetMainWnd()->PostMessage(UM_SETCHILDSIZE, 0, 0);然后在主框架类中处理该自定义的消息LRESULT CMainFrame::OnSetChildSize(WPARAM, LPARAM){ MDIGetActive()->MoveWindow(CRect(0, 0, 400 ,300)); return 0;} 关于用ODBC查询SQL的问题 玩tinyxml的高人帮忙! 用opengl画一个 “指南针”的问题 ??? 大家推荐一些VC界面控件套件吧 关于如何裁剪bitmap 如何枚举出系统上所有的时区(注意:不是系统时区) 为何Release版的可执行程序比Debug版小? error LNK2001: unresolved external symbol _atexit 请教高手:当进程内组件被配置成COM+应用程序之后测试程序结果不同是什么原因? 有关ado封装类的头文件问题。。麻烦大家帮忙。 如何用vc++在word中插入图片?? RSA多线程算法
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
m_Image.Load(lpszPathName);
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
CChildFrame* pChildFrame = (CChildFrame*)pMainFrame->GetActiveFrame();
pChildFrame->SetWindowPos(NULL,0,0,m_Image.Width(),m_Image.Height(),SWP_SHOWWINDOW); return TRUE;
}在上面这个函数中我加载一幅图片,并根据图片尺寸来设置子窗口的大小,但实际上修改的是主窗口的尺寸,这是怎么回事?
CMDIChildWnd* pWnd = ((CMainFrame*)AfxGetMainWnd())->MDIGetActive();得到的,不是
((CMainFrame*)AfxGetMainWnd())->GetActiveFrame();//得到是活动的框架窗口,不一定是子框架窗口
其他的问题ls都已经说明了
你可以在OnOpenDocuemnt里PostMessage一个自定义的消息,然后在消息响应函数中去做处理,比如
AfxGetMainWnd()->PostMessage(UM_SETCHILDSIZE, 0, 0);
然后在主框架类中处理该自定义的消息
LRESULT CMainFrame::OnSetChildSize(WPARAM, LPARAM)
{
MDIGetActive()->MoveWindow(CRect(0, 0, 400 ,300));
return 0;
}