• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Onsize

  • Автор темы Автор темы zhenek91
  • Дата начала Дата начала
Z

zhenek91

Вопрос таков: перегружаю функцию OnSize(). В своем диалоговом окне добиваюсь, чтобы кнопки при растягивании либо вверх, либо вправо сохраняли свои позиции относительно главного окна.
Получил такой код:
Код:


Код:
void CMobileTISDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(Flag)
{
CRect R = CRect(0,0,0,0);
GetWindowRect(&R);
ScreenToClient(&R);
LONG right = R.right - MinSize.right;// СRect MinSize заполняется в OnInitDialog и содержит размеры главного окна при старте программы
LONG top = R.top - MinSize.top;
int nCount = ResData.size();
for(int i=0;i<nCount;i++)
{
GetDlgItem(ResData[i].nID)->MoveWindow(ResData[i].aRect.left+right,
ResData[i].aRect.top+top,
ResData[i].aRect.Width(),
ResData[i].aRect.Height());
}
}
}

ResData это вектор, содержащий структуры вида
Код:


Код:
struct ResizeStruct
{
CRect aRect;//прямоугольник для кнопки
UINT nID;//идентификатор кнопки
};

заполнение структуры происходит при вызове функции
Код:


Код:
void CMobileTISDlg::SetResData(UINT nID)
{
ResizeStruct Res;
Res.aRect = CRect(0,0,0,0);
GetDlgItem(nID)->GetClientRect(&Res.aRect);
Res.nID = nID;
ResData.push_back(Res);
}

Проблема в том, что почему то при тестировании программы кнопки вместо того, чтобы вести себя, как описано выше, сбиваются в одну кучу в левом краю программы. В чем моя ошибка?
 
Посмотрите в отладке:
1 - какие значения устанавливаются в вектор ResData.
2 - какие именно значения передаются в MoveWindow
 
Разобрался, надо чаще в msdn нюансы функций мне освежать, а то забываю некоторые моменты, потом мучаюсь))тему можно закрывать
 
Ну так расскажите в чем проблема была, чтобы другие не повторяли ваши ошибки
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab