mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
#include "stdafx.h"
|
|
#include "Icon.h"
|
|
#include "Path.h"
|
|
#include "Environment.h"
|
|
#include <shellapi.h>
|
|
|
|
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> Icon::FromFile(const String& File)
|
|
{
|
|
auto Result = std::make_unique<Icon>();
|
|
|
|
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> Icon::FromResource(const int32_t ID)
|
|
{
|
|
auto Result = std::make_unique<Icon>();
|
|
|
|
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> Icon::ApplicationIcon()
|
|
{
|
|
auto Result = std::make_unique<Icon>();
|
|
auto Exe = System::Environment::GetApplication();
|
|
|
|
ExtractIconExA(Exe, 0, &Result->_IconHandleLg, &Result->_IconHandleSm, 1);
|
|
|
|
return Result;
|
|
}
|
|
}
|