класс - обработчик оконных сообщений

Тема в разделе "WASM.WIN32", создана пользователем maksim_, 29 июл 2009.

  1. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    не понял. то есть писать на mfc или чём-нибудь ещё вместо АПИ?
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    скорее это вы не занимались. что сложного найти в куче своего же дока отдельный участок. попробуйте как нибудь я не знаю MessageBox вывести и найти использование в коде той самой уникальной строки из него. ну или просто эту строку расположите в непосредственной близости к своему коду. методов много, но вы видать не один не знаете, а единственный отладчик который видели тот что прилагается к студии. тогда понятно почему вы не знаете как в куче кода найти нужный участок, тем более если его сами и пишите. а вот с Clerk'ом я согласен. надо просто выбирать метод достаточно гибкий для конкретного случая, а не ограничивать себя "злыми рамками" (
    ). я тоже могу сказать. винда зло. пишите под чистое железо и только на асме!!!
     
  3. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    свой кусок кода? в том-то и дело, что когда работаешь один - примерно ориентируешься во всём коде. да даже и это не означает что для себя самого можно лепить всё что попало - через год возьмёшь сорцы, заблудишься. я уж молчу про командные проекты. угу. наставишь там мессагбоксов :)))))))))))
     
  4. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    для них придумали svn
    просто это не надо оставлять. это временная мера.
     
  5. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    maksim_
    жесть какая-то, с такими ограничениями нормальное что-то никто не пишет
    куски ... какие-то может быть, типа окошечек
     
  6. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    maksim_
    ...Тем временем: ультимативный способ, на который сделал намёк Velheart – динамическая генерация wndproc-министабов, лайк:
    Код (Text):
    1. mov ecx, ObjectPtr
    2. jmp MyClass_WndProc
    Т.е. необходимость сгенерировать этот стаб во время выполнения и использовать его в качестве оконной процедуры.
     
  7. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Это называется преждевременная оптимизация. Если хорошо подумать (а лучше померить) - то сколько раз вызывается процедура окна - ну скажем в одну секунду? GetWindowLong/SetWindowLong вполне подходит по скорости. Даже если есть, скажем 25 окон в одной программе. Надо оптимизировать например код выполняемый по WM_MOUSEMOVE. Это будет полезно.
     
  8. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    то есть что-то типа,

    Код (Text):
    1. char p_handler[] = "\xB9\x00\x00\x00\x00\xE9\x00\x00\x00\x00";
    2. ...
    3.  
    4. // constructor
    5. *(CAny**)(p + 1) = this;
    6. *(WNDPROC*)(p+6) = this->on_window_message;
    7.  
    8. ...
    Ну, вообще говоря, вариант. только опять-же секция в которой будет p_handler должна обладать PAGE_EXECUTE_READWRITE. то есть, если всё правильно делать, нужно сначала VirtualProtect с PAGE_READWRITE, затем с PAGE_EXECUTE_READ.