SetTimer trouble

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

SetTimer trouble

Сообщение MAXIS » 10.11.2006 (Пт) 3:59

Вопрос следующего плана. Существует функция-обработчик таймера, находящаяся в коде модуля. С помощью конструкции в модуле формы:
Код: Выделить всё
SetTimer Me.hWnd, 0, 0, AddressOf func_timer

Таймер запускается в модуле. Код:
Код: Выделить всё
Sub func_timer(byVal hWnd as long)
           .......
End Sub

Необходимо обратиться из этого кода к переменной, находящейся в модуле формы типа Form1.perem зная в модуле только контекст окна. КАК? Неохота перечислять все контексты окон и сравнивать с переданым в модуль значением, так как это отдельный ресурс.

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

Сообщение BV » 10.11.2006 (Пт) 4:29

Во-первых, у цикла таймера аргументов поболее будет.
Во-вторых, а что, собственно, не нравится в перечислении окон проекта?
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;

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

Сообщение EUGY » 10.11.2006 (Пт) 4:49

пишу по памяти

Call Setprop(Me.hwnd, "myobjptr", Objptr(Me))
SetTimer Me.hWnd, 0, 0, AddressOf func_timer

Таймер запускается в модуле. Код:
Код:
Sub func_timer(byVal hWnd as long)

dim f As Form
call copymemory(f, Getprop(hwnd, "myobjptr"), 4)
debug.print f.caption
// очистка
call copymemory(f, 0&, 4)
.......
End Sub

MAXIS
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 10.11.2006 (Пт) 3:31

Сообщение MAXIS » 10.11.2006 (Пт) 4:54

Я знаю, что
ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long
Просто писать поленился...

Не нравиться сохранять указатели на формы. Если их порядка 100, то это большой ресурс памяти. Плюс время на перечисление. Это важнее всего.

MAXIS
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 10.11.2006 (Пт) 3:31

Сообщение MAXIS » 10.11.2006 (Пт) 4:59

EUGY

Спасибо, сча буду пытаться. А после SetProp нужно освобождать память на укакзатель?

Хм, нашел только что RemoveProp. :)

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

Сообщение EUGY » 10.11.2006 (Пт) 5:10

RemoveProp для стиля обязателен, но не сразу после SetProp, у тебя же таймер,а во время выгрузки формы. Вообще конечно BV прав, безопаснее перечисление. Basic не любит пользователей, работаюших с памятью, чуть что не так, сразу валит.


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

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

Сейчас этот форум просматривают: Google-бот и гости: 117

    TopList