#include "stdafx.h" #include "Icon.h" #include "Path.h" #include "Environment.h" #include namespace Drawing { Icon::Icon() : _IconHandleSm(nullptr) ,_IconHandleLg(nullptr) { } Icon::Icon(HICON Icon) : _IconHandleSm(Icon), _IconHandleLg(Icon) { } Icon::~Icon() { if (_IconHandleSm != nullptr) DestroyIcon(_IconHandleSm); if (_IconHandleLg != nullptr) DestroyIcon(_IconHandleLg); _IconHandleLg = nullptr; _IconHandleLg = nullptr; } HICON Icon::LargeHandle() { return this->_IconHandleLg; } HICON Icon::SmallHandle() { return this->_IconHandleSm; } std::unique_ptr Icon::FromFile(const String& File) { auto Result = std::make_unique(); Result->_IconHandleLg = (HICON)LoadImageA(NULL, (char*)File, IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), LR_LOADFROMFILE); Result->_IconHandleSm = (HICON)LoadImageA(NULL, (char*)File, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_LOADFROMFILE); return Result; } std::unique_ptr Icon::FromResource(const int32_t ID) { auto Result = std::make_unique(); Result->_IconHandleLg = (HICON)LoadImageA(GetModuleHandle(NULL), MAKEINTRESOURCEA(ID), IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), NULL); Result->_IconHandleSm = (HICON)LoadImageA(GetModuleHandle(NULL), MAKEINTRESOURCEA(ID), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), NULL); return Result; } std::unique_ptr Icon::ApplicationIcon() { auto Result = std::make_unique(); auto Exe = System::Environment::GetApplication(); ExtractIconExA(Exe, 0, &Result->_IconHandleLg, &Result->_IconHandleSm, 1); return Result; } }