zoukankan      html  css  js  c++  java
  • 设置一个视图的初始位置和大小

    移动或改变视图的大小实际上移动与其关联的父框架窗口。因此,初始化位置的行为既可以在视图的框架窗口类中实现,也可以在视图类中实现,下面提供了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);  
        }  
    
  • 相关阅读:
    组播技术
    高阶函数
    《统计学习方法》第一章学习笔记
    R代码规范(转)
    数据挖掘与商业智慧:华通二十年专题----台湾辅仁大学谢邦昌教授访谈(转载)
    基于Hadoop的机器学习开源项目
    特征选择算法之开方检验(转载)
    朴素贝叶斯算法及不同特征值结果的比较
    走出数据挖掘的误区(转载)
    互联网时代的社会语言学:基于SNS的文本数据挖掘(转载)
  • 原文地址:https://www.cnblogs.com/luoshupeng/p/2220771.html
Copyright © 2011-2022 走看看