MDI子框架一启动就最大化

MDI子框架一启动就最大化   
  方法一:   
  在CChildFrame::PreCreateWindow(CREATESTRUCT&   cs)函数中,加了   
  cs.style   |=   WS_VISIBLE|WS_MAXIMIZE;,可以实现了   
  方法二:   
  用ClassWizard为CChildFrame类添加ActiveFrame消息   
  void   CChildFrame::ActivateFrame(int   nCmdShow)     
  {   
       nCmdShow=SW_MAXIMIZE;
 CMDIChildWnd::ActivateFrame(nCmdShow);
}    
   
 方法三:
          在视类重载的OnInitUpdate成员函数中加上:     
          CMDIChildWnd   *pWnd=(CMDIChildWnd   *)GetParentFrame();     
          pWnd->MDIMaximize();//或者pWnd->ShowWindow(SW_MAXIMIZE)
 
 
主窗口最大化: 比较麻烦:
注意,
1如果和子框架一样,只在主框架的PreCreateWindow中写上cs.style   |=  WS_VISIBLE| WS_MAXIMIZE;会发现不起作用,
2在OnCreate()里写showwindow(SW_MAXIMIZE)是有问题的,会发现虽然启动后尺寸是最大化,但是右上角标记是最大化,也就是此时的状态是被标记成normal下的状态,也就是窗口的最大化和normal时的尺寸变成一样了。
3  PreCreateWindow中写上
    cs.cy = GetSystemMetrics(SM_CYSCREEN) ;
     cs.cx = GetSystemMetrics(SM_CXSCREEN) ;
会发现,首先启动时,画面的下面部分被桌面下面的任务栏挡住了,其次发现和2一样的问题,此时程序窗口的最大化最小化状态没问题,但normal状态下是显示启动时的特别大的画面尺寸。
4 在view类的OnInitialUpdate()里添加:
CMainFrame* pMainfrm=(CMainFrame *)AfxGetMainWnd();
    pMainfrm->ShowWindow(SW_MAXIMIZE);  不起作用。
 
其实问题出在imgpro2.cpp里的CImgpro2App::InitInstance()里
 倒数第2句:pMainFrame->ShowWindow(m_nCmdShow);
把这句话注释掉,依次用前几种方法看看:
1 依然不起作用
2程序启动时,主框架是最大化状态(右上角标记是还原标记),但是点击后,还原的尺寸还是最大化的尺寸。
3不显示画面
4 可以实现功能。初识最大化,点击还原标记,还原成中等大小的一个窗口。
 
或者 不把pMainFrame->ShowWindow(m_nCmdShow);注释掉
在   InitStance   函数中设定   m_nCmdShow的取值.   
          m_nCmdShow=SW_SHOWMAXMIZED   //最大化   
也能实现。
  补充:
1 如果想让一幅图画打开后,子框架窗口大小和图像大小一样。如果只在openfile里写上子框架
->setwindowpos或者movwindow等程序,那么当把子框架最大化以后,再打开一幅图像,会发现虽然子框架客户区的边框和图像大小一致,但是,子框架是在最大化状态下的,程序画面会有点奇怪。所以解决方法是,在setwindowpos之前加上一句子框架->ShowWindow(SW_NORMAL),先让框架处在normal状态下。
2在normal状态下,如果把窗口大小拖动发生变化,那么最大化后,再还原,就还原成拖动后的大小,也就是normal状态下的窗口大小可以发生变化。最大化和最小化都不会。比如上面说的,在最大化时打开图像,窗口大小变化了,最小化或者还原下,再点击最大化,窗口显示是最大化时的尺寸而不会是那副图片的大小。
3 调整子框架的大小,就会调整view的大小,使view窗口自动布满子框架大小好像。因为在程序里先调整view的大小,再调整子框架大小,(让子框架大一些),发现没用,view还是布满整个子框架;
如果先调整子框架大小,再调整view大小,就会发现,子框架里只有一部分被view覆盖。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值