Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2009, 22:47   #1
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию OnSize()

Вопрос таков: перегружаю функцию OnSize(). В своем диалоговом окне добиваюсь, чтобы кнопки при растягивании либо вверх, либо вправо сохраняли свои позиции относительно главного окна.
Получил такой код:
Код:
void CMobileTISDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialog::OnSize(nType, cx, cy);
		CDialog::OnSize(nType, cx, cy);
	if(Flag)
	{
		 int nCount = ResData.size();
        for(int i=0;i<nCount;i++)
         {
            GetDlgItem(ResData[i].nID)->SetWindowPos(&wndTop, cx - ResData[i].aPoint.x, cy - ResData[i].aPoint.y, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
         }
	}
}
ResData это вектор, содержащий структуры вида
Код:
struct  ResizeStruct
{
	CPoint aPoint;//левый верхний угол кнопки
	UINT nID;//идентификатор кнопки
};
заполнение структуры происходит при вызове функции
Код:
void CMobileTISDlg::SetResData(UINT nID)
{
	ResizeStruct Res;
    CRect rc, rcForm;
    GetDlgItem(nID)->GetClientRect(&rc);
    GetClientRect(&rcForm);
    Res.aPoint.x = rcForm.right - rc.left; Res.aPoint.y = rcForm.bottom - rc.top;
    Res.nID = nID;
    ResData.push_back(Res);
}
Проблема в том, что почему то при тестировании программы кнопки вместо того, чтобы вести себя, как описано выше, сбиваются в одну кучу в левом краю программы. В чем моя ошибка?
<= P.S. если я тебе помог нажми весы слева <=

Последний раз редактировалось assasin; 26.08.2009 в 10:02.
assasin вне форума Ответить с цитированием
Старый 26.08.2009, 11:14   #2
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

Разобрался, тему можно закрывать
<= P.S. если я тебе помог нажми весы слева <=
assasin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц