Изменение контрола CListCtrl на CDialog
Написал функцию для 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
Здравствуйте, Sashaka, Вы писали:
S>используйте ETSLayout с codeproject и не парьтесь =)
Не, мне нужно именно так, что бы ручками
P.S. ради одного контрола использовать другой класс нехочется
Re: Изменение контрола CListCtrl на CDialog
Неужеди никто не знает как правильно изменять размеры??
Re: Изменение контрола CListCtrl на CDialog
Все я разобрался, чпаио за помощь
Re[2]: Изменение контрола CListCtrl на CDialog
От:
Аноним
Дата: 24.01.08 17:47
Оценка:
Здравствуйте, NickolasCPP, Вы писали:
NCP>Все я разобрался, чпаио за помощь
А не могли бы написать как вы решили проблему?
Re[3]: Изменение контрола CListCtrl на CDialog
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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
Народ,никто не сталкивался чтоли с ограничением перемещения окна?
Re[2]: Изменение контрола CListCtrl на CDialog
Здравствуйте, 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
Удалено избыточное цитирование. — SchweinDeBurg
Здравствуйте, NickolasCPP, Вы писали:
NCP>P.S. Незабудь в хидере описать событие
Пасиб,уже разобрался. WM_MOVING ловил. Странно что WM_CHANGEWINDOWPOS не совсем четко работал
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить