|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
|
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Решил написать свой вариант ShowMessage, но добавив некоторые украшательства
Создал модуль, в который поместил код создания API окна. 1. Какой стиль нужно указать, чтобы окно было дочерним и желательно без заголовка. 2. Как закрыть именно это окошко при нажатии на кнопку (расположенную на этом окне). Сейчас я использую WS_POPUP и закрытие Halt (закрывается все приложение). В CreateWindowEx есть параметр(WndParent), который отвечает за отношение к главному окну, как его использовать? |
|||
|
||||
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Разобрался, как вызвать окно, как дочернее. Но как сделать, чтобы родительское окно в это время стало недоступным, т.е. вызвать окно, как модальное.
И еще как правильно использовать DestroyWindow. |
|||
|
||||
RideX |
|
|||
Шустрый Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 2 Всего: 7 |
Нет такой API функции, это всё происки Delphi. Используйте MessageBoxA/MessageBoxW, MessageBoxTimeoutA/MessageBoxTimeoutW, там есть и стандартные значки ошибки, предупреждения, вопроса, информации и кнопки какие хочешь в разном сочетании. Извините, но то что Вы задумали выглядит просто как-то несерьёзно, ИМХО |
|||
|
||||
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
RideX, А если я хочу добавить возможность изменить цвет формы, цвет текста, прозрачность и форму окна - как мне поможет MessageBox?
Я использую DestroyWindow для созданного окна, но после этого мне нужно ДВАЖДЫ нажать на кнопку закрытия для главного окна, чтобы приложение завершилось!!!! И что это значит??? Это сообщение отредактировал(а) mspuz - 3.2.2007, 22:23 |
|||
|
||||
RideX |
|
|||
Шустрый Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 2 Всего: 7 |
В таком случае конечно MessageBox не поможет.. Зачем всё это информационному сообщению? Программа, конечно, должна выглядеть стильно и выдержанно, а разукрашенные в разные цвета и нестандартные формы и шрифты выглядят по клоунски и больше самхивают на поделки какого-нибудь пятиклассника вызывают только раздражение. Всё это, конечно, только моё ИМХО.
Parameters hWnd [in] Handle to the window to be destroyed. Return Value If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. |
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
BusinessSkinForm рулит. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
RideX |
|
||||||
Шустрый Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 2 Всего: 7 |
Вообще, конечно непонятно, зачем Вы это делаете? Посылайте сообщение
и
После WinMain не забудьте про ExitProcess
|
||||||
|
|||||||
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
RideX, Мне нужно что бы закрылось только лишь дочернее окно. Если использовать ExitProcess(0), то завершается всё приложение.
Использую SendMessage(hMainWnd, WM_CLOSE, 0, 0) - окно исчезает, но сам процесс видимо остаётся, потому что для закрытия основного окна требуется выполнить комманду Close дважды!!! Это сообщение отредактировал(а) mspuz - 3.2.2007, 23:40 |
|||
|
||||
VladBD |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
Посмотри Dialogs.pas - может имеет смысл сделать также как там, только со своими цветами и примочками. Вот как рисуется InputQuery.
|
|||
|
||||
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
А как сделать, чтобы родительское окно стало недоступным? Нашел в справке:
wm_Activate Уведомляет окно, что оно становится активным или неактивным. Паpаметpы: wParam: Если wParam=0, окно активно. Если wParam=1, окно активизиpуется чем то дpугим, а не щелчком мыши. Если wParam=2, окно активизиpуется щелчком мыши. Посылаю сообщение с wParam=1, но окно становится активным при щелчке мыши! Кстати, чтобы закрыть дочернее окно помогло: PostQuitMessage(0); DestroyWindow(DHwn); Это сообщение отредактировал(а) mspuz - 4.2.2007, 12:14 |
|||
|
||||
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
При регистрации класса окна задаётся параметр hbrBackground, определяющий фон окна. Можно ли использовать любой цвет(и как его конвертировать, например $00FF000000), или только системные константы COLOR_?
|
|||
|
||||
VladBD |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
При создании формы сообщения там указан ShowModal - это скорей всего и есть то, что указывает на недоступность главной формы пока не закрыто это окно.
А при создании формы - есть canvas на котором можно рисовать и заливать цветом. |
|||
|
||||
Damarus |
|
|||
Опытный Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
CreateSolidBrush |
|||
|
||||
mspuz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Damarus, Т.е. hbrBackground := CreateSolidBrush($00FFFFFF)? Не помогает!!!
|
|||
|
||||
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |