Изменение контрола CListCtrl на CDialog
От: NickolasCPP Россия  
Дата: 15.09.07 14:17
Оценка:
Написал функцию для OnSize, но там постоянно происходили скачки изображения. Выяснил что байду с изменением размеров контролов на диалоге нужно прописать в WM_WINDOWPOSCHANGING, но что-то я не разбирусь, способом тыка перепробовал все что можно.
И в OnWindowPosChanging происходят скачки Как-то можно заблокировать скачки в условии, но что-то не разберусь с флагами
void CDlgIntegral::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
    
    if( IsWindow(m_lstIntegral.m_hWnd) && !(lpwndpos->flags & SWP_NOSIZE) )
    {
        int dx = lpwndpos->cx - m_szPrevSize.cx;
        int dy = lpwndpos->cy - m_szPrevSize.cy;

        CRect lstRect, wndRect;        
        GetWindowRect(lstRect);
        m_lstIntegral.ScreenToClient(lstRect);

        lstRect.right    -= dx;
        lstRect.bottom    -= dy;
        m_lstIntegral.MoveWindow(lstRect);
    }

    m_szPrevSize.cx = lpwndpos->cx;
    m_szPrevSize.cy = lpwndpos->cy;

    CDialog::OnWindowPosChanging(lpwndpos);
}
Re: Изменение контрола CListCtrl на CDialog
От: Sashaka Россия  
Дата: 15.09.07 15:15
Оценка:
Здравствуйте, NickolasCPP, Вы писали:

используйте ETSLayout с codeproject и не парьтесь =)
Re[2]: Изменение контрола CListCtrl на CDialog
От: NickolasCPP Россия  
Дата: 15.09.07 15:56
Оценка:
Здравствуйте, Sashaka, Вы писали:

S>используйте ETSLayout с codeproject и не парьтесь =)


Не, мне нужно именно так, что бы ручками
P.S. ради одного контрола использовать другой класс нехочется
Re: Изменение контрола CListCtrl на CDialog
От: NickolasCPP Россия  
Дата: 16.09.07 04:58
Оценка:
Неужеди никто не знает как правильно изменять размеры??
Re: Изменение контрола CListCtrl на CDialog
От: NickolasCPP Россия  
Дата: 16.09.07 12:43
Оценка:
Все я разобрался, чпаио за помощь
Re[2]: Изменение контрола CListCtrl на CDialog
От: Аноним  
Дата: 24.01.08 17:47
Оценка:
Здравствуйте, NickolasCPP, Вы писали:

NCP>Все я разобрался, чпаио за помощь



А не могли бы написать как вы решили проблему?
Re[3]: Изменение контрола CListCtrl на CDialog
От: NickolasCPP Россия  
Дата: 24.01.08 18:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, NickolasCPP, Вы писали:


А>А не могли бы написать как вы решили проблему?


http://www.rsdn.ru/Forum/?mid=545048
Автор: korzhik
Дата: 19.02.04


Если будут проблемы пиши, буду рад помочь )
Re[3]: Изменение контрола CListCtrl на CDialog
От: Аноним  
Дата: 24.01.08 18:59
Оценка:
Поправлено форматирование текста. — SchweinDeBurg

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, NickolasCPP, Вы писали:


NCP>>Все я разобрался, чпаио за помощь



А>А не могли бы написать как вы решили проблему?


Правда у меня проблема в ограничении перемещения плавного

void CMainDlg::OnWindowPosChanging(WINDOWPOS *lpwndpos)
{
    CDlg* temp=(CDlg*)pDlg;
    CRect treerect;
    CRect dlgrect;
    GetWindowRect(&dlgrect);
    temp->pTree.GetWindowRect(&treerect);

// перемещение диалога ограничиваю treerect.right и treerect.top соответственно
    if(dlgrect.left<treerect.right)
    {
        lpwndpos->x=treerect.right;
    }
    if(dlgrect.top<treerect.top) 
    {
        lpwndpos->y=treerect.top;
    }
}

Появляются скачки
Re: Изменение контрола CListCtrl на CDialog
От: SK_Egoryan  
Дата: 27.01.08 15:08
Оценка:
Народ,никто не сталкивался чтоли с ограничением перемещения окна?
Re[2]: Изменение контрола CListCtrl на CDialog
От: NickolasCPP Россия  
Дата: 29.01.08 09:51
Оценка: 3 (1)
Здравствуйте, SK_Egoryan, Вы писали:

SK_>Народ,никто не сталкивался чтоли с ограничением перемещения окна?



BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//..
    ON_WM_MOVE()
//..
END_MESSAGE_MAP()

void CMyDlg::OnMove(int x, int y)
{
    // TODO: Пиши условие на ограничения
    CDialog::OnMove(x, y);
}


P.S. Незабудь в хидере описать событие
Re[3]: Изменение контрола CListCtrl на CDialog
От: SK_Egoryan  
Дата: 29.01.08 20:18
Оценка:
Удалено избыточное цитирование. — SchweinDeBurg

Здравствуйте, NickolasCPP, Вы писали:

NCP>P.S. Незабудь в хидере описать событие


Пасиб,уже разобрался. WM_MOVING ловил. Странно что WM_CHANGEWINDOWPOS не совсем четко работал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.