как закрыть msgbox через некоторое время автоматически?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

как закрыть msgbox через некоторое время автоматически?

Сообщение Cramac » 02.03.2007 (Пт) 17:49

Всем привет. Есть большой цикл, в нутри него выпадает msgbox с сообщением. Как это окошко можно закрыть через какое то время ?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 02.03.2007 (Пт) 17:58

SendMessage WM_CLOSE или DestroyWindow.
Salus populi suprema lex

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 02.03.2007 (Пт) 18:18

الفيجوال بيسك الرابح

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 02.03.2007 (Пт) 18:47

смысл вообще такой. цикл очень большой и долго думает (около 20 минут) в цикле идет прогресбар, но через какой то период программка как бы подвисает (не отвечает ни на что) пока не закончит или пока не закрыть самому...
что бы этого избежать нашел выход выдав msgbox
но сидеть и тыркать в него мышей тож не прельщает :(

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 02.03.2007 (Пт) 18:58

скажем, при каждой десятой итерации DoEvents ?

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 02.03.2007 (Пт) 19:03

да только при каждой.
за 1 ход цикла, идет перебор 300 000 значений массива...и что бы окно не подвисало, хочется сделать паузу на момент и перейти к следующему ходу цикла

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 02.03.2007 (Пт) 19:11

Cramac писал(а):за 1 ход цикла, идет перебор 300 000 значений


Логика программы такое требует? Может как-то упростить?

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 02.03.2007 (Пт) 22:33

логика требует. упростить некуда

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 02.03.2007 (Пт) 22:51

напиши ActiveX EXE, пусть в другом процессе вычисляется.

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 02.03.2007 (Пт) 22:58

если бы я умел, написал бы, я за ВБ четвертый день :)
нужно простое решение задачи. нашел в msgbox :)
или ему подобную процедуру вставить для торможения процесса основного.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 03.03.2007 (Сб) 0:23

Не понимаю тебя, причем здесь MsgBox.
У тебя долгий цикл и ты хочешь чтобы форма не замораживалась.
В других языках для этого выделяют отдельный поток.
в VB это не прокатит. Насчет DoEvents Function - ты пропустил мимо?

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 03.03.2007 (Сб) 0:50

DoEvents Function по подробнее если можно, а если есть примерчик.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 03.03.2007 (Сб) 0:58

Private Sub Command1_Click()
Dim x As Integer
Dim s As String
For x = 0 To 10000
DoEvents
s = s & "OBHSS"
Debug.Print s
Next
End Sub

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 03.03.2007 (Сб) 10:33

спасибо. помогло.

А еще такой вопрос. Из за чего может перебор 1 и того же массива через несколько повторений начинает медленнее перебиратся? (сравнивал по прогресбару)

система такая:

есть цыкл
фор и=1 то 100
....
тут перебор двухмерного массива
....
некст и

все начинается с секундного перебора, а через несколько и основного цикла перебор сильно замедляется :(

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 03.03.2007 (Сб) 11:58

Либо показывай код, либо жди Хакера (это местный телепат такой)...
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 03.03.2007 (Сб) 12:33

вот:


private Sub chek1_file(filename)

count_ch = 0
ready = 0

For i = 1 To 30
If arr_file(filename, i) = 0 Then
count_ch = count_ch + 1
End If
Next i

If count_ch = 30 Then
ready = 1

End If





Form2.Label6.Caption = Form2.Label6.Caption & ready & " "

If ready <> 0 Then
Form2.Label7.Caption = Form2.Label7.Caption & "(" & ready & ")"


ReDim tmp1(UBound(nomerwinb, 1), 2)
For o = 1 To UBound(nomerwinb, 1)
If nomerwinb(o, 1) <> 0 Then
tmp1(o, 1) = nomerwinb(o, 1)
tmp1(o, 2) = nomerwinb(o, 2)
End If
Next o

' переопределяем основной массив
ReDim nomerwinb(UBound(nomerwinb, 1) + 1, 2)

For o = 1 To UBound(nomerwinb, 1) - 1
nomerwinb(o, 1) = tmp1(o, 1)
nomerwinb(o, 2) = tmp1(o, 2)
Next o


nomerwinb(UBound(nomerwinb), 1) = filename
nomerwinb(UBound(nomerwinb), 2) = ready


tmp_n_w = 1
End If

End Sub





Private Sub Command1_Click()
for i=1 to 200

For p = 1 To kolvo_file
chek1_file (p)
Next p

next i
End Sub

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.03.2007 (Сб) 15:31

И тут пришёл Хакер. И единственное, что он может сказать (при всей своей телетической подготовке) это:
:?:




(это следует понимать как "А где остальные 99% этой программы")
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 03.03.2007 (Сб) 15:52

а больше ничего особого нет, в начале
Private Sub Command1_Click()
идет только загрузка массива и забивание его значениями.
arr_file(5000, 30)
все эти действа разовы, тормозить начинает в нутри цикла на том что сверху выложил.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 03.03.2007 (Сб) 17:45

Cramac писал(а):....
Form2.Label6.Caption = Form2.Label6.Caption & ready & " "
....


я тоже телепат :lol:

s = s & "OBHSS"

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 03.03.2007 (Сб) 19:19

ладно, буду сам искать...попробую найти на чем тормозить начинает


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList