|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
Как правильно создать окно только для сообщений, используя CreateWindowEx?02.08.2023, 20:37. Показов 3028. Ответов 63
Метки нет (Все метки)
Итак, например мне захотелось использовать окно только для сообщений, и я не знаю с чего мне начать и как это сделать правильно, я ещё новичок. Но я понял, что можно создать окно только для сообщений двумя путями:
1) Сначала зарегистрировать свой собственный класс окна (а это геморно и долго), а потом уже создать окно только для сообщений 2) Использовать любой класс окна, хоть например BUTTON, а потом создать окно только для сообщений 3) Использовать системный класс "Message" при создании окна только для сообщений И вот я ломаю голову как же поступить правильнее. Сразу скажу, что самое простое это использовать системный класс "Message" но так ли это правильно, а регистрировать свой собственный класс ой как не хочется (ну зачем же столько много лишнего кода!!!) Посоветуйте, пожалуйста, либо помогите мне, пожалуйста, готовым кодом на VB6 для создания окон только для сообщений. Я ищу самый простой вариант. Вот моя идея такова, код:
0
|
||||||
| 02.08.2023, 20:37 | |
|
Ответы с готовыми решениями:
63
Как правильно активировать окно и переключить фокус клавиатуры на него в чужом потоке с использованием оконных сообщений
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||||||||||||
| 09.08.2023, 14:39 [ТС] | ||||||||||||||||
|
Смысл мне тогда пользоваться очередью The Tricka если Tab вырубает
Добавлено через 8 минут Я предполагаю что функция GetMessage основной очереди отрубает какие-то клавиатурные сообщения и они не доходят до формы вообще Добавлено через 13 минут В итоге моя очередь работает лучше (работают кнопки Tab, Enter на форме):
Интересную вещь прочитал в MSDN: Обратите внимание, что приложение отвечает за получение и отправку входных сообщений в диалоговое окно. Большинство приложений используют для этого основной цикл обработки сообщений. Однако, чтобы позволить пользователю перемещаться и выбирать элементы управления с помощью клавиатуры, приложение должно вызвать IsDialogMessage . Дополнительные сведения см. в разделе Интерфейс клавиатуры диалогового окна . Добавлено через 1 минуту Что я заметил: клавиатура так же не работает на MsgBox ни клавиша Esc, ни клавиша Enter Добавлено через 5 минут " Однако, чтобы позволить пользователю перемещаться и выбирать элементы управления с помощью клавиатуры, приложение должно вызвать IsDialogMessage ." Что это значит вообще!? Добавлено через 1 минуту Самое смешное в моей очереди
Добавлено через 1 минуту Но если MsgBox был вызван из формы то клавиатура работает. Как только MsgBox вызывается из потока а не из формы то клавиатура уже не работает на msgbpx Добавлено через 8 минут Нихрена не понял конечно, как IsDialogMessage может включить мне клавиатуру и кнопку Tab.. Добавлено через 11 минут Ещё бы знать как пользоваться этой функцией IsDialogMessage примеров кода ноль, особенно с очередью сообщений Добавлено через 3 минуты Это слишком сложно получается Добавлено через 2 минуты В сто раз проще использовать мою очередь:
Добавлено через 5 минут Я не вижу никаких причин для того чтобы использовать код очереди по технологии The Trick'а - кода гораздо больше, сложнее, ещё и клавиатура вырубается. DoEvents наверное уже сам обрабатывает клавиатуру как надо. Мой код проще в 100 раз.
0
|
||||||||||||||||
|
Модератор
|
|
| 09.08.2023, 14:42 | |
|
Ты сначала говоришь об одном (что у тебя приложение без форм), а теперь приплел обработку сообщений. Скажу тебе по секрету что в вб и так есть обработчик сообщений и твой код вообще не нужен.
Добавлено через 1 минуту Не по теме: И завязывай спамить своим потоком сознания у меня вся почта из-за тебя завалена уведомлениями.
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||||||
| 09.08.2023, 15:24 [ТС] | |||||||||||
|
Добавлено через 2 минуты Добавлено через 1 минуту Добавлено через 52 секунды Добавлено через 5 минут Без формы по началу, чтобы экономить оперативную память))) В большинстве случаев программа будет висеть в трее и форма вызываться вообще не будет. Поэтому загружать форму, а потом скрывать её через Form1.Hide это слишком накладно. Ибо жрёт ресурсы. Поэтому я решил загружать программу сначала вообще без формы полностью, чтобы экономить память. Я это делаю впервые и столкнулся с многими трудностями тут, как видишь. Основная трудность - клавиатура. Добавлено через 21 минуту Искал исходный код функции DoEvents, нашёл вот тут: https://stackoverflow.com/ques... lent-for-c
0
|
|||||||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 10.08.2023, 14:56 [ТС] | |
|
Видимо я всем надоел)))
0
|
|
| 10.08.2023, 14:56 | |
|
Используя иерархию и наследование, создать классы окно, окно с заголовком и окно с кнопкой Как создать контрол WinForms через CreateWindowEx? CreateWindowEx() не создает окно Как правильно создать окно MCI? Как правильно создать второе окно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|