Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер клиентской области 
:(
    Опции темы
ZIFIR
Дата 8.12.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 8.3.2006

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



Необходимо установить размер клиентской области окна. Как это можно сделать?
Можно изменить размеры MainFrame в CREATESTRUCT, но это же получается подгон.
PM MAIL   Вверх
Earnest
Дата 9.12.2010, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Смотря что ты хочешь: можно изменить размер клиентской области за счет "нестандартной" рамки. Или, если рамка и прочие элементы стандартны, именно "подогнать" размер фрейма под клиентскую область. Удобнее всего это делать в PreCreateWindow и использовать функцию AdjustWindowRect.


--------------------
...
PM   Вверх
ZIFIR
Дата 9.12.2010, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 8.3.2006

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



Earnest,  спасибо, это я и хотел узнать.

Теперь еще вопрос.
Разбираюсь с системами координат и режимами отображения. 
Цитата: (Айвор Хортон VS 2005 Базовый курс)
"В режиме отображения MM_LOENGLISH ед. изм. в доль осей составляют 0,01 дюйма, так что точка (50,-100) находится на пол дюйма влево и 1 дюйм вниз. Объект всегда имеет один и тотже размер на экране, независимо от разрешения монитора"

Нарисовал линию в клиентской области, попробовал поменять разрешение экрана, линия изменила размер.

Растолкуйте.
PM MAIL   Вверх
Earnest
Дата 10.12.2010, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Может, перо не геометрическое? По-моему, косметическое перо в экранных пикселах рисуется.
Кроме того, автор наверняка под размером подразумевает нечто более существенное: например, размер прямоугольника или эллипса.


--------------------
...
PM   Вверх
ZIFIR
Дата 22.12.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 8.3.2006

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



В PreCreateWindow устанавливаю размер желаемой клиентской области окна
Код

              RECT WndRect;
    WndRect.top     = 100;
              WndRect.left    = 100;
    WndRect.bottom  = 400;
    WndRect.right   = 400;

    cs.style = WS_CAPTION|WS_SYSMENU;
    
    AdjustWindowRect(&WndRect,WS_CAPTION|WS_SYSMENU,0);

    cs.cx = WndRect.right;
    cs.cy = WndRect.bottom;
    cs.x  = WndRect.left;
    cs.y  = WndRect.top;


После AdjustWindowRect top=75, bottom=403, left=97, right=403. 

Когда вызываю GetClientRect top=0, bottom=351, left=0, right=393

Режим MM_TEXT

Как же сделать размер клиентской области 300х300?
PM MAIL   Вверх
ZIFIR
Дата 23.12.2010, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 8.3.2006

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



Решил проблему так:
Код

RECT WndRect;
    WndRect.top     = 0;
    WndRect.left    = 0;
    WndRect.bottom  = 300;
    WndRect.right   = 300;

    cs.style = WS_CAPTION|WS_SYSMENU;
    cs.lpszName = m_AppName;

    AdjustWindowRectEx(&WndRect,cs.style,TRUE,cs.dwExStyle);

    cs.x  = 100;
    cs.y  = 100;
    cs.cx = WndRect.right - WndRect.left;
    cs.cy = WndRect.bottom - WndRect.top;


top и left требуемого клиентского прямоугольника необходимо сделать равными 0.
И еще учесть расширенный стиль dwExStyle.

Только тогда получил требуемое окно
PM MAIL   Вверх
Earnest
Дата 24.12.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Earnest @  9.12.2010,  08:59 Найти цитируемый пост)
Удобнее всего это делать в PreCreateWindow и использовать функцию AdjustWindowRect.

А я тебе что рекомендовала?




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


 




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


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

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