Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размеров диалога, ограничить 
:(
    Опции темы
Rickert
  Дата 27.9.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Надо сделать так, чтобы диалог не мог быть меньше 800х600.
В методе OnSize диалога пишу:
Код

void CSMSInformerTestDlg::OnSize(UINT ntype, int cx, int cy)
{
    if (cx < 800)
    {
        LPRECT r = new tagRECT;

        GetWindowRect(r);
        MoveWindow(r->left, r->top, 808, (r->bottom - r->top));
        delete r;
        return;
    }
    if (cy < 600)
    {
        LPRECT r = new tagRECT;

        GetWindowRect(r);
        MoveWindow(r->left, r->top, (r->right - r->left), 648);
        delete r;
        return;
    }
    if (m_Log)
    m_Log.MoveWindow(281, 536, cx - 284, cy - 557);
}

Маза в том, что если я изменяю размер диалога одной стороны(высоты, т.е делаю его меньше 600) или высоты и длинны одновременно, то в таком случае не resize'тся элемент m_Log. Почему? smile 
Разобраться никак не могу почему


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
zkv
Дата 27.9.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



а return'ы,  в строках 10 и 19 не причем?
PM MAIL   Вверх
Rickert
Дата 27.9.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



zkv, нет, ни при чём. Они правильно стоят. Ибо, при MoveWindow тоже вызывается OnSize


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
0x07L
Дата 27.9.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 10.6.2006
Где: Москва

Репутация: 1
Всего: 5



Rickert, тебе нужно обрабатывать WM_GETMINMAXINFO (или как-то так)
PM MAIL   Вверх
vinter
Дата 27.9.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



например вот так
Код

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{

 int cx = ::GetSystemMetrics(SM_CXSCREEN)/8;
 int cy = ::GetSystemMetrics(SM_CYSCREEN)/4;

 lpMMI->ptMinTrackSize.x = 6*cx;
 lpMMI->ptMinTrackSize.y = 2*cy;
 lpMMI->ptMaxTrackSize.x = 6*cx;
 lpMMI->ptMaxTrackSize.y = 2*cy;
 lpMMI->ptMaxPosition.x  = cx;
 lpMMI->ptMaxPosition.y  = cy;
 
 CFrameWnd::OnGetMinMaxInfo(lpMMI);
}



--------------------
Мой блог
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.