MessageBoxIndirect в потоке

Тема в разделе "WASM.BEGINNERS", создана пользователем niakris, 20 апр 2011.

  1. niakris

    niakris Дмитрий

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    45
    В своей программе сообщаю пользователю об ошибке с помощью вот такой вот функции
    Код (Text):
    1. mbpx    MSGBOXPARAMS    <SIZEOF MSGBOXPARAMS,0,0,0,offset ThisProgram,MB_USERICON or MB_TOPMOST,10,0,0,0>
    2.     align 4
    3. error_msg proc uses esi edi lpmsg : dword
    4. local mbp   : MSGBOXPARAMS
    5.  
    6.     cmp cfg___isshowerrormsg, 0
    7.     jz  short error_msg___f_retn
    8.     lea esi, mbpx
    9.     lea edi, mbp
    10.     cld
    11.     mov ecx, sizeof MSGBOXPARAMS
    12.     rep movsb
    13.     or  mbp.dwStyle, MB_TASKMODAL
    14.     mov ebx, 20
    15.     mov mbp.lpszIcon, ebx
    16.     push    lpmsg
    17.     call    @F
    18.     db  "/error/ : %s.",0
    19. @@:
    20.     push    offset BuffeR
    21.     call    wsprintf
    22.     add esp, 3*4
    23.     mov mbp.lpszText, offset BuffeR
    24.     invoke MessageBoxIndirect,addr mbp
    25. error_msg___f_retn:
    26.     ret
    27. error_msg endp
    Всё работает нормально, но теперь появилась необходимость продолжения выполнения программы при выводе сообщения об ошибке. Сделал так :
    Код (Text):
    1. error_msgp__thread proc uses esi edi ebx arg : dword
    2.  
    3.     invoke error_msg,arg
    4.     ret
    5. error_msgp__thread endp
    6.     align 4
    7. error_msgp proc uses esi edi ebx lpmsg : dword
    8. local local_threadid    : dword
    9.  
    10.     invoke CreateThread,0,0,offset error_msgp__thread,lpmsg,0,addr local_threadid
    11.     ret
    12. error_msgp endp
    В результате получаю сообщение без иконки и без стиля (см. аттач)
    В чем может быть проблема?