#pragma once #include <cstdint> #include <memory> #include "StringBase.h" #include "DrawingBase.h" namespace Drawing { // Represents a drawable windows icon. class Icon { public: Icon(); Icon(HICON Icon); ~Icon(); // Gets a handle to the large rendition of this icon. HICON LargeHandle(); // Gets a handle to the small rendition of this icon. HICON SmallHandle(); // Loads an icon resouce from a file. static std::unique_ptr<Icon> FromFile(const String& File); // Loads an icon resource from a resource. static std::unique_ptr<Icon> FromResource(const int32_t ID); // Loads the application defined icon. static std::unique_ptr<Icon> ApplicationIcon(); private: // The internal icon handles HICON _IconHandleSm; HICON _IconHandleLg; }; }