· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› SetTimer не выпоняет вызов процедуры

Посл.отвђт Сообщенiе


Дата: Окт 8, 2004 14:02:01

По непонятной причине не работает код:
include '%fasminc%/win32ax.inc'
.data
TID dd 0
.code
start:

invoke SetTimer,NULL,NULL,1000,TimerProc
mov [TID],eax

jmp $
invoke  ExitProcess,0

proc TimerProc, hwnd, uMsg, idEvent, dwTime
 int3
 invoke  KillTimer,0,[TID]
 invoke MessageBox, HWND_DESKTOP,'!','!', MB_OK
 return
endp
.end start                 

Управление TimerProc почему-то не передаётся...


Дата: Окт 8, 2004 14:22:12 · Поправил: bogrus

Конечно , а где MSG , где GetMessage(WM_TIMER)-DispatchMessage ?
см. пример http://wasm.ru/forum/index.php?action=vthread&forum=4&topic=5265&page=1#7
з.ы. если будут проблемы с MessageBox , читать тут http://wasm.ru/forum/index.php?action=vthread&forum=4&topic=7041


Дата: Окт 9, 2004 09:19:58

>invoke SetTimer,NULL,NULL,1000,TimerProc
А OFFSET TimerProc где?


Дата: Окт 9, 2004 13:01:33

Если не заметно, то компилятор FASM


Дата: Окт 9, 2004 19:09:14

Не буду вникать, но однажды была похожая проблема, возможно поможет первый ручной вызов функции таймера.


Дата: Окт 10, 2004 11:50:27

bogrus прав. Если этот код без изменений вставить в программу, создающую окно, то все работает.
А в этом варианте, мне кажется, если бы процедура и вызывалась, то через 1000 мс, а к тому времени процесс бы уже завершился.


Дата: Окт 10, 2004 18:58:41

Не завершится.
...
jmp $
invoke ExitProcess,0
...


Дата: Окт 11, 2004 04:12:08

ProgramMan
„Не завершится.
...
jmp $
invoke ExitProcess,0
...“

Так прога просто зависает в бесконечном цикле и не может получить отправленное сообщение WM_TIMER, как мне кажется.


Дата: Окт 11, 2004 07:55:32

В продолжение bogrus.
MSDN.COM:
When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063