Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать форму (окно) ? [D5]


Roxtady ©   (2002-08-21 17:28:00) 

Значит, создаю новый класс. Регистрирую. Создаю окно CreateWindowEx. Только создается оно невидимым. Как бы его показать на экране ?


Юрий Зотов   (2002-08-22 00:25:00) [1]

1. > и что дальше ?
А дальше - посмотреть справку, там все просто.
GetDeviceCaps(DC, HORZRES) - дает ширину.

2. Можно и через GetSystemMetrics. Но GetDeviceCaps дает больше возможностей (см. описание).


Roxtady   (2002-08-21 23:22:00) [2]

Юрий Зотов, спасибо. Только непонятен ваши пример про размеры экрана. GetDeviceCaps(...) - и что дальше ?

Как я разобрался, чтобы узнать размеры экрана:

Ширина GetSystemMetrics(SM_CXSCREEN)
Высота GetSystemMetrics(SM_CYSCREEN)


Юрий Зотов   (2002-08-21 23:04:00) [3]

> translatemessage
"translates virtual-key messages into character messages"
Транслирует сообщения WM_KEYxxx в WM_CHARxxx и снова помещает их в очередь сообщений.


> dispatchmessage
"dispatches a message to a window procedure."
Вызывает оконную функцию нужного окна и передает ей сообщение на обработку.


> размеры экрана
H := GetDesktopWindow;
DC := GetDC(H);
try
GetDeviceCaps(...);
...
finally
ReleaseDC(H, DC)
end;


Roxtady   (2002-08-21 21:40:00) [4]

И еще вопрос. Каким образом достигнуть свойства poScreenCenter ? Или просто хотя бы поместить форму по центру экрана. А то объекта Screen нету при uses windows, messages - а как по другому узнать размеры экрана - не знаю.


Roxtady   (2002-08-21 21:33:00) [5]

С кое какими вопросами разобрался. Видно, мне глазенки нужно протереть и внимательней читать SDK.

Ответы =) если кому нужно

1) Надо писать Windowclass.hbrBackground:=COLOR_BACKGROUND

2) Окно с заголовком WS_CAPTION
Диалогове окно WS_SYSMENU
С изменяемым размером WS_SYSMENU or WS_SIZEBOX
Кнопка свернуть WS_SYSMENU or WS_MINIMIZEBOX
Кнопка развернуть WS_SYSMENU or WS_MAXIMIZEBOX

3) Если указывать WS_SYSMENU, WS_MINIMIZEBOX, WS_MAXIMIZEBOX - то меню в панели задач появляется автоматом

А вот насчет четвертого пункта - не понял. Что все таки делают translatemessage и dispatchmessage ?


Roxtady   (2002-08-21 20:26:00) [6]

Спасибо !

Еще вопросы, если позволите.

1) Почему то окно белого цвета. Хотя я указал Windowclass.hbrBackground:=color_btnface; - по идее должно быть серым (под цвет кнопок)

2) Указываю стиль окна WS_POPUP. Но при этом естественно нет заголовка. Как создать окно с заголовком ? Какие параметры указывать, чтобы было как диалоговое окно в дельфовых формах ?Чтобы как с изменяемым размером ? Чтобы размеры нельзя изменить, но присутствуют кнопки свернуть, развернуть ?

3) В панели задач появляется окно с именем lpWindowName. Но по правому клику не возникает всплывающее меню со стандартными функциями свернуть, закрыть...

4) a) Что делает процедура translatemessage ?

б) Что делает процедура dispatchmessage ?


Юрий Зотов   (2002-08-21 18:29:00) [7]

Либо ShowWindow, либо создавать сразу со стилем "видимое".


Игорь Шевченко   (2002-08-21 17:48:00) [8]

ShowWindow ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо