add window close callback
This commit is contained in:
parent
64d1c2ab2e
commit
9e8b4414d1
|
@ -272,6 +272,17 @@ namespace SHADE
|
|||
windowResizeCallbacks.erase(callbackid);
|
||||
}
|
||||
|
||||
SHWindow::CALLBACKID SHWindow::RegisterWindowCloseCallback(WindowResizeCallbackFn windowCloseCallback)
|
||||
{
|
||||
windowCloseCallbacks.try_emplace(windowResizeCallbackCount, windowCloseCallback);
|
||||
return windowCloseCallbackCount++;
|
||||
}
|
||||
|
||||
void SHWindow::UnregisterWindowCloseCallback(CALLBACKID const& callbackid)
|
||||
{
|
||||
windowCloseCallbacks.erase(callbackid);
|
||||
}
|
||||
|
||||
LRESULT SHWindow::WndProcStatic(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
auto window = windowMap.GetWindow(hwnd);
|
||||
|
@ -307,6 +318,8 @@ namespace SHADE
|
|||
case WM_CREATE:
|
||||
OnCreate(hwnd, reinterpret_cast<LPCREATESTRUCT>(wparam));
|
||||
break;
|
||||
case WM_CLOSE:
|
||||
|
||||
case WM_DESTROY:
|
||||
OnDestroy();
|
||||
return 0;
|
||||
|
@ -365,6 +378,14 @@ namespace SHADE
|
|||
|
||||
}
|
||||
|
||||
void SHADE::SHWindow::OnClose()
|
||||
{
|
||||
for (const auto& callbackFn : windowCloseCallbacks | std::views::values)
|
||||
{
|
||||
callbackFn();
|
||||
}
|
||||
}
|
||||
|
||||
void SHWindow::OnDestroy()
|
||||
{
|
||||
this->Destroy();
|
||||
|
|
|
@ -75,6 +75,7 @@ namespace SHADE
|
|||
public:
|
||||
using SHVec2 = std::pair<uint32_t, uint32_t>;
|
||||
typedef std::function<void(uint32_t width, uint32_t height)> WindowResizeCallbackFn;
|
||||
typedef std::function<void(void)> WindowCloseCallbackFn;
|
||||
typedef uint16_t CALLBACKID;
|
||||
SHWindow();
|
||||
|
||||
|
@ -125,6 +126,8 @@ namespace SHADE
|
|||
|
||||
CALLBACKID RegisterWindowSizeCallback(WindowResizeCallbackFn);
|
||||
void UnregisterWindowSizeCallback(CALLBACKID const& callbackid);
|
||||
CALLBACKID RegisterWindowCloseCallback(WindowResizeCallbackFn);
|
||||
void UnregisterWindowCloseCallback(CALLBACKID const& callbackid);
|
||||
bool IsMinimized() const { return wndData.isMinimised; }
|
||||
|
||||
protected:
|
||||
|
@ -157,10 +160,13 @@ namespace SHADE
|
|||
HFONT font;
|
||||
|
||||
std::unordered_map<CALLBACKID, WindowResizeCallbackFn> windowResizeCallbacks;
|
||||
std::unordered_map<CALLBACKID, WindowCloseCallbackFn> windowCloseCallbacks;
|
||||
CALLBACKID windowResizeCallbackCount{};
|
||||
CALLBACKID windowCloseCallbackCount{};
|
||||
//TODO: Shift to events abstraction
|
||||
|
||||
void OnCreate(HWND hwnd, LPCREATESTRUCT create_struct);
|
||||
void OnClose();
|
||||
void OnDestroy();
|
||||
//void OnFileDrop(HDROP drop);
|
||||
void OnSize(UINT msg, UINT type, SIZE size);
|
||||
|
|
Loading…
Reference in New Issue