Перейти к содержимому


- - - - -

Как создать нестандартное окно?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 pahan

pahan

    Живёт на форуме

  • Validating
  • PipPipPipPipPipPipPip
  • 1 061 сообщений
  • Пол:Мужчина
  • Город:Из Дикого Леса...

Отправлено 13 Июнь 2009 - 12:24

Итак, требуется создать окно:
1. Прозрачное
2. Без заголовка
3. Но при этом с границей
4. Чтобы передавало весь ввод от клавиатуры и мыши нижележащему окну (кроме одной клавиатурной комбинации для закрытия и нажатия мыши+какая-нибудь кнопка для таскания окна)
5. Чтоб таскалось при нажатии в любой токе окна.
Реально ли это сделать в C++ Builder 6 используя его стандартные компоненты или надо писать все целиком на WinAPI?
Собственно у меня получается реализовать только 1й и 3й пункты. Даже если я использую SetWindowLong чтобы убрать заголовок, стиль окна изменяется  (GetWindowLong возвращает другое значение), но заголовок все равно остается.
ОС Win2k, XP

#2 RoMaN

RoMaN

    Хранитель форума

  • Members
  • PipPipPipPipPipPipPipPip
  • 2 776 сообщений
  • Пол:Мужчина

Отправлено 13 Июнь 2009 - 12:27

А размер (высота) заголовка меняется? может ее нулевой сделать?  :)

#3 pahan

pahan

    Живёт на форуме

  • Validating
  • PipPipPipPipPipPipPip
  • 1 061 сообщений
  • Пол:Мужчина
  • Город:Из Дикого Леса...

Отправлено 14 Июнь 2009 - 13:04

Задавать можно только высоту клиентской области окна, а заголовок - неклиентская область и размер у него фиксирован.

#4 Pyromaniac

Pyromaniac

    Новичок

  • Members
  • Pip
  • 4 сообщений

Отправлено 18 Июнь 2009 - 16:51

Просмотр сообщенияpahan (13.06.2009, 13:24) писал:

Итак, требуется создать окно:
1. Прозрачное
2. Без заголовка
3. Но при этом с границей
4. Чтобы передавало весь ввод от клавиатуры и мыши нижележащему окну (кроме одной клавиатурной комбинации для закрытия и нажатия мыши+какая-нибудь кнопка для таскания окна)
5. Чтоб таскалось при нажатии в любой токе окна.
Реально ли это сделать в C++ Builder 6 используя его стандартные компоненты или надо писать все целиком на WinAPI?
Собственно у меня получается реализовать только 1й и 3й пункты. Даже если я использую SetWindowLong чтобы убрать заголовок, стиль окна изменяется  (GetWindowLong возвращает другое значение), но заголовок все равно остается.
ОС Win2k, XP

Стандартными компонентами шестого билдера - однозначно нет. Все целиком на винапи - необязательно, проще совместить.
1. Вообще никаких проблем
2. Аналогично
3. Сложнее, скорее всего придется самому с нуля реализовать бордюр
4. Тоже достаточно сложно
5. Вообще не вопрос

В общем итог такой - можно, если постараться. Другой вопрос - а ты уверен, что оно тебе надо? Может проще банально вывести содержимое этого окна на нижележащее?




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных