15,980
社区成员
发帖
与我相关
我的任务
分享
// CDrawYunApp 初始化
BOOL CDrawYunApp::InitInstance()
{
............
............
// 注册应用程序的文档模板。文档模板
// 将用作文档、框架窗口和视图之间的连接 (这块创建工程时自带)
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_DrawYunTYPE,
RUNTIME_CLASS(CDrawYunDoc),
RUNTIME_CLASS(CSplitFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CDrawYunView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_DrawYunTYPE_CNTR_IP);//调用此函数在OLE对象被内部激活时设置所使用的资源。
AddDocTemplate(pDocTemplate);//调用这个成员函数,将文档模板加入应用程序维护的可用文档模板列表中。你可以在调用RegisterShellFileTypes之前加入所有的文档模板。
// 注册应用程序的文档模板。文档模板
//将用作告警文档、框架窗口和告警视图之间的连接
pWarnDocTemplate = new CMultiDocTemplate(IDR_DrawYunTYPE,
RUNTIME_CLASS(CWarnDoc),//告警窗口文档类
RUNTIME_CLASS(CSplitFrame),
RUNTIME_CLASS(CWarnView));//告警窗口视图类
if (!pWarnDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_DrawYunTYPE_CNTR_IP);//调用此函数在OLE对象被内部激活时设置所使用的资源。
return TRUE;
}
LRESULT CWarnView::DemoData(WPARAM wParam,LPARAM lParam)
{
CMainFrame* pMW=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWnd *pwnd = FindWindow(NULL,_T("报警提示"));
int i=SetWindowPos(&CWnd::wndTopMost,0,0,50,100,SWP_NOMOVE|SWP_SHOWWINDOW);//使告警窗口置最前, 调试时显示i不为0,因该调用成功了,为什么没效果
//上面一句如果换成int i=pwnd->SetWindowPos(&CWnd::wndTopMost,0,0,50,100,SWP_NOMOVE|SWP_SHOWWINDOW);会出现错误,调试发现pwnd的值为0x000000,怎么什么情况
if (i==0)
return false;
else
return true;
}
CWnd *pwndWarn = FindWindow(NULL,_T("报警提示"));
CWnd *pwndView = FindWindow(NULL,_T("CDP_M22测试画面.cle"));
if(!pwndWarn)
pwndWarn->SetOwner(pwndView);
else
{
}
//调试发现:
pwndWarn=0x00000000
pwndView=0x00000000
LRESULT CWarnView::DemoData(WPARAM wParam,LPARAM lParam)
{
.....
CView *pView=this;
CMainFrame* pMW=(CMainFrame*)AfxGetApp()->m_pMainWnd;
pMW->SetActiveView(pView);
.......
}
to"我建议你用单文档多视图,然后A窗口固定放上上面,B窗口固定放在下面,这样你就根本不需要去想着处理你现在的这些问题"
3、我的多文档工程完成已经比较多,改成单文档不现实,并且我还有许多子窗口要显示
CWnd *pwndWarn = FindWindow(NULL,_T("报警提示"));
CWnd *pwndView = FindWindow(NULL,_T("CDP_M22测试画面"));
pwndWarn->SetOwner(pwndView);
//告警子框架窗口的创建
void CDrawYunApp::WarnData()
{
CWarnDoc * doc=new CWarnDoc(_T("报警提示"));
CFrameWnd* wnd=pWarnDocTemplate->CreateNewFrame(doc,NULL);//是子框架窗口开始创建的起点
if (wnd)
{
pWarnDocTemplate->InitialUpdateFrame(wnd,doc,TRUE);//会调用CWarnView::OnInitialUpdate(),没这句告警窗口不弹
}
}