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

Ваш аккаунт

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

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

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

преобразование пикселей в диалоговые единицы

333
04 октября 2006 года
GHopper
200 / / 28.12.2004
Здравствуйте!
Есть MDIChild-окно, на котором я размещаю некоторый диалог. Нужно, чтобы размер окна подстравался под размер диалога (и наоборот при изменении размера окна).
Получаю высоту заголовка и ширину рамок после чего изменяю размер MDIChild:

CRect rect;
int captionHeight = GetSystemMetrics(SM_CYCAPTION);
int borderHeight = GetSystemMetrics(SM_CXBORDER);

m_MultyDlg->GetWindowRect(rect);
ScreenToClient(&rect);
SetWindowPos(NULL, NULL, NULL,
rect.Width()+borderHeight*2,
rect.Height()+captionHeight+borderHeight,
SWP_NOMOVE|SWP_NOZORDER);

Как перевести captionHeight и borderHeight в диалоговые единицы? И еще вот вопросец - вышеописанное окно имеет неприятные бордеры. Тоесть как у блокнота, только вместо текста у меня диалог. Как решить эту проблему?
И вообще правильно-ли я делаю - использую диалоговые окна со своими классами, потом их вставляю в дочерние окна (CMDIChildWnd) и только после этого получаю приложение с MDI-интерфейсом. Хотелось-бы, чтобы диалоговые окна имели преимущетва MDI и в тоже время рисовать все ручками на CMDIChildWnd тоже не хочется...
398
04 октября 2006 года
Alexandoros
630 / / 21.10.2005
Чито такое диалоговые еденицы?

Рисуй на CView субклассированых окнах.
309
05 октября 2006 года
el scorpio
1.1K / / 19.09.2006
Вообще-то, для вывода на экран, и при разработке, и при выполнении, используются именно пиксели - и ничего иного.
Правда, есть ещё "точки на дюйм". Но это используется при выводе изображения в "реальных" единицах - см. мм. Для вывода на экран традиционно используется 96 "точек на дюйм".
333
05 октября 2006 года
GHopper
200 / / 28.12.2004
Одна единица длины в координатной системе, используемой при описании ширины элементов шаблонов диалоговых панелей, составляет четверть средней ширины символов системного шрифта, а при описании высоты (или вертикальных размеров) - восьмую часть высоты символов системного шрифта. Так как высота символов системного шрифта примерно в два раза больше средней ширины этих символов, единица длины в этой системе координат имеет одинаковый размер по вертикали и горизонтали. Эта единица называется диалоговая единица (dialog unit).

Размер единицы измерения dialog unit можно получить при помощи функции GetDialogBaseUnits:
DWORD WINAPI GetDialogBaseUnits(void);

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