• 设置一个视图的初始位置和大小


    移动或改变视图的大小实际上移动与其关联的父框架窗口。因此,初始化位置的行为既可以在视图的框架窗口类中实现,也可以在视图类中实现,下面提供了2中实现方法。

    第一种技术:在视图的框架窗口类中实现该行为

    第1步:使用ClassWizard创建一个新的CMDIChildWnd派生类,该类将实现所希望的初始化视图位置的行为。

    第2步:使用ClassWizard为CMDIChildWnd派生类增加WM_CREATE消息处理函数,该函数的实现代码如下:

        int CCenterChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)  
        {  
              if(CMDIChildWnd::OnCreate(lpCreateStruct)==-1)  
                    return -1;  
              //把窗口设置为主框架窗口客户区的1/4,并置于中央  
              CWnd* pMDIClient=GetParent();  
              ASSERT_VALID(pMDIClient);  
              CRect rect;  
              pMDIClient->GetClientRect(&rect);  
              MoveWindow(rect.Width()/4 , rect.Height()/4 , rect.Width()/2 , rect.Height()/2 );  
                
              return 0;  
        }  

    第3步:不要忘记在适当的文档模板中说明视图框架窗口,以得到所希望的行为。

    第2中技术:在视图类中实现该行为

          在视图类中使用ClassWizard重载OnInitialUpdate()虚函数,该函数的实现如下面的程序清单所示,每次创建一个新视图时,它把父框架窗口移动到所希望的位置。

        void CDrawView::OnInitialUpdate()  
        {  
              //首先调用基类  
              CView::OnInitialUpdate();  
              //1、得到父框架窗口的指针  
              CFrameWnd* pParentFrame=GetParentFrame();  
              ASSERT_VALID(pParentFrame);  
              //2、得到MDI客户区窗口窗口的指针  
              CWnd* pMDIClient=pParentFrame->GetParent();  
              ASSERT_VALID(pMDIClient);  
              //3、计算MDI成员窗口的大小  
              CRect retc;  
              pMDIClient->GetClientRect(&rect);  
              //4、把父框架窗口移动到希望的位置  
              pParentFrame->MoveWindow(rect.Width()/2 , 0 , rect.Width()/2 , rect.Height()/2);  
        }  
    
  • 相关阅读:
    TypeError: can't compare offset-naive and offset-aware datetimes bugfix
    pg_restore数据库恢复指令
    第四十期百度技术沙龙笔记整理
    JS事件模型小结
    matlab Newton method
    Markdown 语法的简要规则
    iOS社交分享Twitter、Facebook、拷贝到剪切板、LINE、及邮件
    Linux系统调用过程分析
    iOS自己定义返回button(不影响返回手势)
    MAVEN项目模块化
  • 原文地址:https://www.cnblogs.com/luoshupeng/p/2220771.html
Copyright © 2020-2023  润新知