1. C++ / Говнокод #3412

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    void foo()
    {
     if (!wxFile::Exists(defDir + resourcePath)) return false;
     HBITMAP *bmp = new HBITMAP;
     wxString path = defDir + resourcePath;
     (*bmp) = (HBITMAP)LoadImage(0, path.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
     if (bmp != NULL) (*pMap)[resourceName] = bmp; else return false;
     return true;
    }
    
    bool SXXXXBitmapStorage::releaseItem(wxString resourceName)
    {
     ScrollBitmapHash::iterator iterator = pMap->find(resourceName);
     if (iterator == pMap->end()) return false;
     if (iterator->second != NULL) delete (HBITMAP*)iterator->second;
     pMap->erase(resourceName);
     return true;
    }
    
    HDC* SXXXXBitmapStorage::adjustToDC(wxString resourceName)//we must delete this object
    {
     HBITMAP *bmp = this->getItem(resourceName);
     if (bmp == NULL) return NULL;
     HDC *pDC = new HDC();
     (*pDC) = CreateCompatibleDC(0);
     SelectObject(*pDC, *bmp);
     return pDC;
    }

    И вы не поверите, этот код работал! Правда, конечно же, была утечка ресурсов

    Запостил: Hsilgos, 07 Июня 2010

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

    • Жуть:
      - форматирование;
      - название класса;
      - и, может быть, копирование ( (*bmp) = (HBITMAP)LoadImage(... ) );
      - комментарий тоже хороший.
      Ответить
      • > - форматирование;
        И так пол проекта было
        > - название класса;
        тут автор не виноват, это я изменил, дабы не копроментировать проект. Тем более, что он на 110% переписан
        > - и, может быть, копирование ( (*bmp) = (HBITMAP)LoadImage(... ) );
        А ничё, что HBITMAP - это УЖЕ указатель? Автор просто напросто не знал основы работы WinAPI и родил чудесный говнокод, который, к тому же, плодил утечку ресурсов
        Ответить
        • > копроментировать проект
          Хорошо сказал ;)))
          Ответить
          • ага, сложные и длинные слова мне не удаются (:
            Ответить
            • В данном случае всё нормально. Копрокод удался.
              Ответить
    • показать все, что скрытоПоне?
      Ответить
    • показать все, что скрытоhttp://www.0chan.ru/fur/src/12576799471552.jpg
      Ответить
    • Ничего не поделаешь, winAPI
      Ответить
      • Ну не соглашусь. Меня от винапи тошнит, но представленный экземпляр стократ омерзительнее.
        Ответить
      • причем тут winapi? оно какбы сишное, и к уродским названиями типа foo() отношения не имеет.
        Вы что, тролль из детского сада, в маечке "виндуссакс"?
        Ответить
      • а я думал, говнокод в том, что с++...
        Ответить
    • >>>XXXBitmapStorage
      круто
      Ответить
    • А разве оно скомпилится? Функция типа void возвращает значение.
      Ответить

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