powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6: Выполнение кода во время работы MsgBox. Как победить?
5 сообщений из 5, страница 1 из 1
VB6: Выполнение кода во время работы MsgBox. Как победить?
    #36302326
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При работе под IDE при появлении MsgBox выполнение кода полностью останавливается, эвенты собираются в очередь.
При работе в скомпилированном проекте код может выполняться при открытом MsgBox и тогда, если этот код затронет отображение на экране, проект вываливается с различными ошибками типа
"Can't show non-modal form when modal form is displayed"

Как бы так либо заставить код не выполняться, либо сделать MsgBox немодальным (как вариант, можно сделать собственный немодальный MsgBox, с блэкджеком и шлюхами, но как тогда останавливать выполнение хотя бы того кода, который его вызвал)?
...
Рейтинг: 0 / 0
VB6: Выполнение кода во время работы MsgBox. Как победить?
    #36302641
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПри работе в скомпилированном проекте код может выполняться при открытом MsgBoxЭто нужно было постараться так сделать. :) Насчет примера - Msgbox блокирует стандартный таймер, так что Can't show non-modal form тут не получишь.

Shocker.Pro как тогда останавливать выполнение хотя бы того кода, который его вызвал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
MyMsgbox.Show

frmMyMsgbox:

Public Sub Show()
    Me.Show 'можно еще ShowWindow с параметром HWND_TOPMOST, чтобы за другими формами не прятался
    While Me.Visible
        DoEvents
    Wend
    Unload Me
End Sub

Private Sub Command1_Click()
    Me.Hide
End Sub

Jah loves you.
...
Рейтинг: 0 / 0
VB6: Выполнение кода во время работы MsgBox. Как победить?
    #36302674
Shocker.Proкак вариант, можно сделать собственный немодальный MsgBox, с блэкджеком и шлюхами, но как тогда останавливать выполнение хотя бы того кода, который его вызвал?Мысли событийно. Вызывающая процедура (метод класса) сохраняет контекст своего выполнения, создаёт экземпляр (не)модального MsgBox-а, передаёт в него параметры, показывает, и... завершает свою работу. (Не)модальный MsgBox генерирует события, типа "юзер нажал OK", "юзер нажал Cancel". Обработчики этих событий на основе сохранённого контекста продолжают обработку.
...
Рейтинг: 0 / 0
VB6: Выполнение кода во время работы MsgBox. Как победить?
    #36302748
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й кварталShocker.Proкак вариант, можно сделать собственный немодальный MsgBox, с блэкджеком и шлюхами, но как тогда останавливать выполнение хотя бы того кода, который его вызвал?Мысли событийно. Вызывающая процедура (метод класса) сохраняет контекст своего выполнения, создаёт экземпляр (не)модального MsgBox-а, передаёт в него параметры, показывает, и... завершает свою работу. (Не)модальный MsgBox генерирует события, типа "юзер нажал OK", "юзер нажал Cancel". Обработчики этих событий на основе сохранённого контекста продолжают обработку.

Зачем сначала цитировать мой вопрос, а потом отвечать НЕ на него , рассказывая очевидные вещи поучительным тоном? Я довольно ясно выразил свой вопрос. У меня проект, в котором количество вызовов MsgBox измеряется сотнями - проще убиться апстену, чем переписать все вызовы таким образом (которые не были изначально на это расчитаны). Вот Antonariy мысль понял, кажется предложил логичное решение - буду пробовать.

AntonariyЭто нужно было постараться так сделать. :) Насчет примера - Msgbox блокирует стандартный таймер, так что Can't show non-modal form тут не получишь.

Как это, как это не получишь? Я же приложил проект. Ничего он не блокирует, таймер работает. Комментаришь [ой, а давай на ты] в проекте вызов второго MsgBox, раскомментируешь вызов второй формы, запускаешь exe-шник - и пожалуйста:
...
Рейтинг: 0 / 0
VB6: Выполнение кода во время работы MsgBox. Как победить?
    #36302946
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять не попробовал сразу скомпилировать. :)

Jah loves you.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6: Выполнение кода во время работы MsgBox. Как победить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]