Страница: 1 | 2 |
Вопрос: CreateWindowEx
Добавлено: 30.01.05 21:41
Автор вопроса: CyRax | Web-сайт:
Нужно создать всплывающее окно без заголовка и невидимое в панели задач. Какие флаги использовать?
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 30.01.05 23:24
см. тот пример AutoListBox что я тебе присылал для PBEditor'a... Там как раз я помнится создавал окно без видимости в панели и без заголовка...
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 31.01.05 11:41
Хм, я сейчас уже не пишу его, но исходники есть. Не под рукой правда. Ты не помнишь, там есть разница при создании окна класса списка и окна класса, созданного с помощью RegisterClassEx? Ведь по идее ListBox и так не подразумевает заголовка в окне.
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 31.01.05 14:48
Чтобы не было в панели задач, сначала делается окно (любое), которое будет родителем того окна, что показывается на экране. Своего рода "свадебный генерал". Оно не показывается на экране. Просто создается и всё. Его назначение - быть владельцем иконки, кнопки в панели задач и быть родителем для отображаемого на экране. Т.к. оно невидимо, то и в панели задач его нет. Окно, которое на экране, не имеет кнопки в панели также, но уже по другой причине: оно дочернее и ему не положено иметь свою кнопку. В msdn так и рекомендуется создавать окна, не имеющие отображения в панели задач.
А без заголовка окно со стилями:
ws_popup or ws_visible
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #4
Добавлено: 31.01.05 14:56
Мда, оказывается я забыл родителя ему поставить. А десктопный родитель не годится. Все, спасибо.
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 01.02.05 18:16
Ещё вопрос. В этом окне я рисую текст с помощью DrawText. Рисует он чёрным по белому. Как установить цвета текста и фона для этой функции. Не важно для чего, главное чтобы она по ним отрисовывала.
Номер ответа: 6
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #6
Добавлено: 01.02.05 19:04
Цвет текста - SetTextColor.
Цвет фона будет брать из hDC.
Номер ответа: 7
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #7
Добавлено: 01.02.05 19:14
SetBKMode,hDC,TRANSPARENT - чтобы белого фона под надписью не было.
Номер ответа: 8
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #8
Добавлено: 01.02.05 20:09
А белого фона, вроде, и так не будет: ведь DrawText использует в качестве фонового цвета текста фоновый цвет hDC, по которому работает. Или нет?
Номер ответа: 9
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #9
Добавлено: 02.02.05 00:52
Нет, DrawText рисует на белом, если бэкграунд у hDC тоже белый, проблем нет, а если какого-то другого цвета, то на фоне, к примеру, синего hDC, будет белый прямоугольник и в него вписан текст
Номер ответа: 10
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #10
Добавлено: 02.02.05 00:56
Странно... залил VB-форму розовым, сделал SetTextColor на vbBlue, и затем - DrawText: получились синие буквы на розовым фоне.
Наверное, просто у VB-шной формы "SetBKMode,hDC,TRANSPARENT" уже "кем-то" сделано )
Номер ответа: 11
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #11
Добавлено: 02.02.05 01:34
Не кем-то, а msvbvm. Попробуй такое сделать с окном, созданным непосредственно CReateWindowEx, а не с формой.
Номер ответа: 12
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #12
Добавлено: 02.02.05 10:41
Мда, оказывается я просто забыл получить системный цвет, а вместо этого подставлял прямо константу.
Было:
SetBkColor hDC&, %COLOR_INFOBK
А нужно:
SetBkColor hDC&, GetSysColor(%COLOR_INFOBK)
Простая невнимательность, а к чему привела
Номер ответа: 13
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #13
Добавлено: 02.02.05 10:45
TRANSPARENT - это ж вроде прозрачность. Во всяком случае на PB+API так. Если выставлен этот режим фона, то фон окна вообще не заливается.
Номер ответа: 14
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #14
Добавлено: 02.02.05 15:25
Ну что-то одно точно надо делать: либо закрасить при помощи SetBkColor белый Rect печати, либо сделать его при помощи SetBKMode прозрачным, чтобы проглядывался цвет нижнего поля.
А про фон окна вообще не заливается
- не совсем понял, о чем речь? FillRect не заливает или что?
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 02.02.05 15:58
Автоматически не заливается. Да мне вроде прозрачность и не нужна. Может Comanche нужна?