CDialog中在最大化后Button随着改变位置

   增加成员变量  bool m_ismax ;

                       CRect rect,m_rect;

   初始化   m_ismax = false;

在onsize中增加如下代码:

    CWnd *pWnd = GetDlgItem(IDC_START);


  if(pWnd!=NULL)     //刚开始的时候不会执行该if里边的东西,只有在点击最大化后才会执行
 {
  pWnd->GetWindowRect(&rect);
  ScreenToClient(&rect);

  //始终是相对于当前客户区来改变Button的位置

  if(true == m_ismax)   //现在是最大化,需要还原。
  {
   m_ismax = false;
   rect.left = cx - (m_rect.right - rect.right) - rect.Width();
   rect.right = cx - (m_rect.right - rect.right);
   pWnd->MoveWindow(rect.left,rect.top,rect.Width(),rect.Height());
  }

  if(nType == SIZE_MAXIMIZED)
  {


   if(false == m_ismax)    //现在还不是最大化,需要最大化。
   {


     rect.left = cx - (m_rect.right - rect.right) - rect.Width();
    rect.right = cx - (m_rect.right - rect.right);
    
    m_ismax = true;
    pWnd->MoveWindow(rect.left,rect.top,rect.Width(),rect.Height());

   }
  }

 }
  GetClientRect(&m_rect); 

   

   

猜你喜欢

转载自blog.csdn.net/ymj7150697/article/details/5633125