Суперклассирование и static

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

  1. dsoft

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Код (Text):
    1. .data
    2.   StaticClassProc WNDPROC   0
    3.   szStatic           BYTE   'STATIC', 0
    4.  
    5. NewStaticWndProc proc Win, uMsg, wParam, lParam : DWORD
    6.   invoke CallWindowProc, StaticClassProc, Win, uMsg, wParam, lParam
    7.   ret
    8. NewStaticWndProc endp
    9.  
    10. ...
    11.   LOCAL wc : WNDCLASSEX
    12. ...
    13.     case WM_INITDIALOG
    14.       .if !StaticClassProc
    15.         mov    wc.cbSize,        sizeof WNDCLASSEX
    16.         invoke GetClassInfoEx, 0, ADDR szStatic, ADDR wc
    17.         mrm    StaticClassProc,  wc.lpfnWndProc
    18.         mrm    wc.lpfnWndProc,   offset NewStaticWndProc
    19.         mrm    wc.hInstance,     hInstance
    20.         mov    wc.lpszClassName, offset szStatic
    21.         mov    eax,              wc.style
    22.         and    eax,              not CS_GLOBALCLASS
    23.         mov    wc.style,         eax
    24.         invoke RegisterClassEx, ADDR wc
    25.       .endif
    Пытаюсь сабклассировать статик контролы, перерыл весь интернет, но ничего путнего не нашёл. Прведённый код нормально отрабатывает, регистрация проходит успешно, но сообщения в новый обработчик не приходят. Подскажите, где я не так делаю? Не хочется делать отдельное сабклассирование на каждый контрол.

    Уточнение: используется MASM
     
  2. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Может я что то не допонял, но наверно надо так:
    Код (Text):
    1.     invoke SetWindowLong,hStatic,GWL_WNDPROC,offset NewStaticWndProc
    2.     mov StaticClassProc,eax
    3.  
    4.  
    5. NewStaticWndProc proc Win, uMsg, wParam, lParam : DWORD
    6.  
    7.     pop eax
    8.     push StaticClassProc
    9.     push eax
    10.     jmp CallWindowProc
    11. NewStaticWndProc endp
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
  4. dsoft

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Это сабклассирование - каждый контрол отдельно, а мне нужно суперклассирование - все контролы одного типа разом.

    Прежде, чем задавать вопрос здесь, я хорошенько порылся по интернету и эту ссылку посещал - общие слова и никакого толка.