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


    移动或改变视图的大小实际上移动与其关联的父框架窗口。因此,初始化位置的行为既可以在视图的框架窗口类中实现,也可以在视图类中实现,下面提供了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);  
        }  
    
  • 相关阅读:
    乐观锁和悲观锁
    [转载] Java实现生产者消费者问题
    [转载] 最全最强解析:支付宝系统架构内部剖析(架构图)
    [转载] Linux五种IO模型
    [转载] Hibernate与 MyBatis的比较
    Spring的69个知识点
    Spring MVC工作原理
    你不知道的JS系列 ( 12 ) - 声明提升
    你不知道的JS系列 ( 11 ) - 块作用域
    你不知道的JS系列 ( 10 ) - 立即执行函数表达式
  • 原文地址:https://www.cnblogs.com/luoshupeng/p/2220771.html
Copyright © 2020-2023  润新知