Кресты / Говнокод #10228 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
map<HANDLE,VRwnd*> windows;
LRESULT WndProc(HANDLE h,UINT ui,WPARAM w,LPARAM m)try{
         return windows.at(h)->Process(ui,w,l);
}catch(...){ return 0;}
class VRwnd{
    HANDLE h;
protected:
    map<UINT,function<LPRESULT(WPARAM,LPARAM)> handlers;// заполняется в конструкторе
    map<int,VRwnd*> idChilds;
    map<HANDLE,VRwnd*> Childs;
public:

     virtual ~VRwnd();
     LRESULT Process(UINT ui,WPARAM w,LPARAM m)try{
                PreProcess(w,l);// сами решайте, давать фильтру на что-то влиять, или нет.
                if(ui==WM_NOTIFY) return WmNotify(w,m) ;
                if(ui==WM_NOTIFY) return WmCommand(w,m) ;
               return handlers.at(ui).second(w,l);
     }
      catch(...){return 0;}
      LPRESULT WmNotify(WPARAM w,LPARAM m){...}
      LPRESULT WmCommand(WPARAM w,LPARAM m){...}
      virtual LPRESULT PreProcess(WPARAM w,LPARAM m){return 0;}
};

Запостил: HaskellGovno HaskellGovno, (Updated )

Комментарии (9) RSS

    • Форматирование. Из-за него не хочется разбираться, что оно делает.
      Ответить
      • Да вполне читабельное форматирование.

        >if(ui==WM_NOTIFY) return WmNotify(w,m) ;
        >if(ui==WM_NOTIFY) return WmCommand(w,m) ;
        Вот этого я не понял.

        >WPARAM w,LPARAM m
        >PreProcess(w,l); //по идее l - LPARAM
        но l нигде не объявлен.
        Либо код нерабочий, либо слишком порезан, в любом случае телепаты не читают раздел С++.
        Ответить
        • Кстати не знал, что можно опускать фигурные скобки у функции, если она состоит только из try..catch.
          Ответить
          • Серьёзное хакерство. Это же сколько можно скобочек сэкономить в масштабах страны.. [Задумывается]
            Ответить
          • А в Аде даже первый try не нужен. Если в конце блока есть catch (в Аде - слово exception), то автоматом подразумевается, что в начале идёт try.
            Ответить
  • > map<HANDLE,VRwnd*> windows;

    Уже в этом месте становится забавно. Кто писал свои обёртки над ВинАПИ - поймёт.
    Кстати, как выгоднее хранить доп.указатель и получать его по дескриптору - через карту, или через специальное поле, предоставляемое ОС?
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8