Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OnSize() проблема в коде для ресайза элементов диалога

52K
25 августа 2009 года
zhenek91
1 / / 25.08.2009
Вопрос таков: перегружаю функцию 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.nID)->MoveWindow(ResData.aRect.left+right,
                ResData.aRect.top+top,
                ResData.aRect.Width(),
                ResData.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);
}


Проблема в том, что почему то при тестировании программы кнопки вместо того, чтобы вести себя, как описано выше, сбиваются в одну кучу в левом краю программы. В чем моя ошибка?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог