Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.07.2008, 23:40
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
Восклицание Построение окна с нужным стилем (WinApi)

Проблема такая: необходимо создать форму (БЕЗ рамки и ее заголовка) на WinApi. Пишу так:

Код:
hMainWnd := CreateWindowEx(WS_EX_TOPMOST,
 'WinClass',
 'Window',
 WS_VISIBLE or WS_CLIPCHILDREN,
 640, 228, 100, 100,
 HWND(nil),
 HMENU(nil),
 GetModuleHandle(nil),
 nil);

Но все равно выводит с рамкой. Посмотрил классы этого окна после компиляции:
WS_BORDER
WS_CAPTION
WS_VISIBLE
WS_DLGFRAME
WS_CLIPCHILDREN

после насильного убирания (через старонню утилиту) WS_BORDER рамка и заголовок пропадают...

Кто сможет помогите плиз!!!
Ответить с цитированием
  #2  
Старый 18.07.2008, 01:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

SetWindowLong не пробовал?
А вообще, для WinAPI бери Петзольда и штудируй.
Ответить с цитированием
  #3  
Старый 18.07.2008, 13:53
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

A WS_POPUP?
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #4  
Старый 19.07.2008, 22:21
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Спасибо WS_POPUP работает! А за Петцольда огромный респект, обязательно почитаю!
Ответить с цитированием
  #5  
Старый 20.07.2008, 02:18
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

И еще два вопросика:
1) Сделал таймер (внутри него расчитываю время каждые 500 мс). Как в нем теперь вывести строку на экран? Пробовал вызывать функцию окна с параметром WS_PAINT, причем выводимая строка - глобальная: не отрисовывает (выводит то, что было при создании формы). Аналогичный результат получил вывод напрямик из таймера (((
Строку рисую так:
BeginPaint(hWnd, PS);

SetTextColor(PS.hdc, $00FF00);
SetBkColor(PS.hdc, $000000);

DrawText(PS.hdc,
PAnsiChar(strTime),
Length(strTime),
TextRect,
DT_NOCLIP);
EndPaint(hWnd, PS);

где:
hWnd - Handle окна
PS - PAINTSTRUCT
strTime - строка типа String

2) Как выбрать шрифт для вывода?

Админ удали пожалуйся этот мессаг у меня инет глюканул ((((

Последний раз редактировалось Drozh, 20.07.2008 в 02:24.
Ответить с цитированием
  #6  
Старый 20.07.2008, 02:19
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

И еще два вопросика:
1) Сделал таймер (внутри него расчитываю время каждые 500 мс). Как в нем теперь вывести строку на экран? Пробовал вызывать функцию окна с параметром WS_PAINT, причем выводимая строка - глобальная: не отрисовывает (выводит то, что было при создании формы). Аналогичный результат получил вывод напрямик из таймера (((
Код:
Строку рисую так:
 BeginPaint(hWnd, PS);

 SetTextColor(PS.hdc, $00FF00);
 SetBkColor(PS.hdc, $000000);

 DrawText(PS.hdc,
              PAnsiChar(strTime),
              Length(strTime),
              TextRect,
              DT_NOCLIP);
 EndPaint(hWnd, PS);

где:
 hWnd - Handle окна
 PS - PAINTSTRUCT
 strTime - строка типа String

2) Как выбрать шрифт для вывода?

Заранее спасибо )))
Ответить с цитированием
  #7  
Старый 21.07.2008, 16:22
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Никто не знает?
Ответить с цитированием
  #8  
Старый 21.07.2008, 18:39
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

1. Посмотри правильно ли ты вызываешь WM_PAINT и не забыл-ли поставить вызов дефолтного WM_PAINT-а.
2. Заведи переменную типа HFont; CreateFont(параметры); Потом к канве формы подключай этот фонт и отрисовывай DrawText-ом
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter