Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Динамически изменять размер Dialog'а


Автор: bel_nikita 3.9.2006, 14:51
Как динамически изменять размер Диалога?
Нужно сделать, что-то, вроде, кнопки Details. Т.е. при нажатии октрывается нижняя часть диалога. При другом нажатии закрывается.

Автор: Greeen 3.9.2006, 15:57
CWnd::SetWindowPos
Код
BOOL SetWindowPos(
   const CWnd* pWndInsertAfter,
   int x,
   int y,
   int cx,
   int cy,
   UINT nFlags 
);

Автор: Dart 3.9.2006, 16:01
Или MoveWindow (прошче smile )

Автор: bel_nikita 3.9.2006, 17:36
нужно чтобы нижняя часть диалога открывалась/закрывалась. Но каждый раз координаты изменяются smile 
Как правильно юзать SetWindowPos, MoveWindow?

Код

void CImexNetDlg::OnButtonDetails() 
{
  // TODO: Add your control notification handler code here
  static bool full = true;
  ShowOwnedPopups(FALSE);
  // put the window at the bottom of z-order, so it isn't activated
    CRect cr;
  GetWindowRect(&cr);
    //GetClientRect(cr);
  if ( full )
    cr.bottom -= 100,full = false;
  else
    cr.bottom += 100,full = true;
  SetWindowPos(&CWnd::wndTop, 0, 0, cr.right, cr.bottom,
      SWP_NOMOVE|SWP_DRAWFRAME|SWP_FRAMECHANGED);
}

Автор: zkv 3.9.2006, 18:16
я так делал, проблем не было
Код

void CMyDlg::OnBnClickedAdvProps()
{
    CRect rect;
    GetWindowRect(rect);
    if( m_fAdvIsEnabled )                        //bool CMyDlg::m_fAdvIsEnabled
    {    
        rect.right -= m_ImageWidth;
    }
    else
    {
        rect.right += m_ImageWidth;
    }
    m_fAdvIsEnabled = !m_fAdvIsEnabled;
    MoveWindow( rect );
}

Автор: Earnest 4.9.2006, 07:33
bel_nikita, удобно на ресурсе диалога (содержащем все контролы, включая расширенную часть) нарисовать статик в виде тонкой горизонтальной или вертикальной рамки и сделать его невидимым. Только идентификатор ему нужно дать человеческий, не IDC_STATIC. Тогда ты можешь визуально задать границу расширенной части. Дальше, в OnInitDialog, спрашиваешь координаты этого контрола, и хранишь их. Ну а все остальное тебе уже написали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)