· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Про Потоки

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


Дата: Окт 9, 2003 05:03:01

В моей программе есть основной поток с GetMessage. Для show я запускаю новый поток с PeekMessage. И таймер отдельным потоком. Но show поток получает одно сообщение и со вторым выходит из цикла


Дата: Окт 9, 2003 05:08:21

SolidCode
А зачем такой изврат, если не секрет? Задержку появления окна делаем? Суть проблемы не совсем ясна. Кусок кода помог бы, наверное...


Дата: Окт 9, 2003 05:34:54

Как PeekMessage выглядит?

DoEvents proc
@@peek: xor eax, eax
invoke PeekMessage, ADDR msg, eax, eax, eax, PM_REMOVE
test eax, eax
jz @@done
mov eax, OFFSET msg
push eax
invoke TranslateMessage, eax
call DispatchMessage
jmp @@peek
@@done: ret
DoEvents endp


Дата: Окт 15, 2003 04:23:27

Я переделал прогу нынче так, чтобы она работала в режиме (в окне) Едит (с GetMessage) или в Show (с PeekMessage), так как они не нужны одновременно.
Эту тему, пожалуй, можно закрыть.

А вообще PeekMessage выглядит так:
align 16
@StartLoop:
    invoke  PeekMessage,addr msg,0,0,0,PM_REMOVE
    test    eax,eax
    jnz     @onNotIdle
;.....................
        push    hShowWnd
        push    @StartLoop
        jmp     UpdateWindow

align 16
@onNotIdle:
        lea     eax,msg
        cmp     (MSG ptr [eax]).message,WM_QUIT
        je      @ExitLoop
        push    eax
            invoke  TranslateMessage,eax
        push    @StartLoop
        jmp     DispatchMessage
;with this trick in DispatchMessage upon RET instruction execution will go
;straight to @StartLoop without having to make an extra jump
@ExitLoop:


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