|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||||||
Как правильно создать окно только для сообщений, используя CreateWindowEx?02.08.2023, 20:37. Показов 3194. Ответов 63
Метки нет (Все метки)
Итак, например мне захотелось использовать окно только для сообщений, и я не знаю с чего мне начать и как это сделать правильно, я ещё новичок. Но я понял, что можно создать окно только для сообщений двумя путями:
1) Сначала зарегистрировать свой собственный класс окна (а это геморно и долго), а потом уже создать окно только для сообщений 2) Использовать любой класс окна, хоть например BUTTON, а потом создать окно только для сообщений 3) Использовать системный класс "Message" при создании окна только для сообщений И вот я ломаю голову как же поступить правильнее. Сразу скажу, что самое простое это использовать системный класс "Message" но так ли это правильно, а регистрировать свой собственный класс ой как не хочется (ну зачем же столько много лишнего кода!!!) Посоветуйте, пожалуйста, либо помогите мне, пожалуйста, готовым кодом на VB6 для создания окон только для сообщений. Я ищу самый простой вариант. Вот моя идея такова, код:
0
|
||||||
| 02.08.2023, 20:37 | |
|
Ответы с готовыми решениями:
63
Как правильно активировать окно и переключить фокус клавиатуры на него в чужом потоке с использованием оконных сообщений
|
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||||||||||||||||
| 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
|
|
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|||||||||||
| 09.08.2023, 15:24 [ТС] | |||||||||||
|
Добавлено через 2 минуты Добавлено через 1 минуту Добавлено через 52 секунды Добавлено через 5 минут Без формы по началу, чтобы экономить оперативную память))) В большинстве случаев программа будет висеть в трее и форма вызываться вообще не будет. Поэтому загружать форму, а потом скрывать её через Form1.Hide это слишком накладно. Ибо жрёт ресурсы. Поэтому я решил загружать программу сначала вообще без формы полностью, чтобы экономить память. Я это делаю впервые и столкнулся с многими трудностями тут, как видишь. Основная трудность - клавиатура. Добавлено через 21 минуту Искал исходный код функции DoEvents, нашёл вот тут: https://stackoverflow.com/ques... lent-for-c
0
|
|||||||||||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|
| 10.08.2023, 14:56 [ТС] | |
|
Видимо я всем надоел)))
0
|
|
| 10.08.2023, 14:56 | |
|
Используя иерархию и наследование, создать классы окно, окно с заголовком и окно с кнопкой Как создать контрол WinForms через CreateWindowEx? CreateWindowEx() не создает окно Как правильно создать окно MCI? Как правильно создать второе окно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|