Исчезает картинка.

Тема в разделе "WASM.WIN32", создана пользователем pas, 23 окт 2004.

  1. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Процедура диалогового окна при инициализации субклассирует дочерний элемент типа Static.

    .init:

    invoke LoadImage,0,szFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE

    mov [hBmp],eax

    invoke GetDlgItem,[hwnd],208

    mov [hStat],eax

    invoke SetWindowLong,[hStat],GWL_WNDPROC,CallBack

    mov [oldHWND],eax

    jmp .ext

    В новой процедуре Static-а реакция только на сообщение WM_PAINT

    proc CallBack,hwnd,wmsg,wparam,lparam

    enter

    push ebx esi edi

    invoke CallWindowProc,[oldHWND],[wmsg],[wparam],[lparam]

    cmp [wmsg],WM_PAINT

    je .paint

    jmp .ext

    .paint:

    invoke BeginPaint,[hwnd],ps

    invoke CreateCompatibleDC,[ps.hdc]

    mov [cmDC],eax

    invoke SelectObject,[cmDC],[hBmp]

    invoke BitBlt,[ps.hdc],1,1,200,200,[cmDC],1,1,SRCCOPY

    invoke EndPaint,[hwnd],ps

    jmp .ext

    .ext:

    ;xor eax,eax

    pop edi esi ebx

    return

    Рисунок вначале отрисовывается, но через некоторое время пропадает, например после активации



    другого окна. Подскажите почему?
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Попробуй ещё обрабатывать WM_ERASEBKGND, оно приходит в том числе и при деактивации твоего окна
     
  3. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Всем спасибо. Если интересно ошибка была в том, что я не удалял созданный совместимый контекст.