aboutsummaryrefslogtreecommitdiff
path: root/CruUI/ui/events/ui_event.h
diff options
context:
space:
mode:
authorYuqian Yang <crupest@outlook.com>2018-09-23 13:03:18 +0000
committerYuqian Yang <crupest@outlook.com>2018-09-23 13:03:18 +0000
commit796ba6e1e816ec87a106f2f7b501e38c99f059e1 (patch)
tree6db4f99f3dc2f85fba3f8339da53849d04a5cfee /CruUI/ui/events/ui_event.h
parentad8ea7fc26b3e0807d11965d93c26a6ff51db226 (diff)
parent82f42a4103c168abd3605acad8ee4b9b4f00d79d (diff)
downloadcru-796ba6e1e816ec87a106f2f7b501e38c99f059e1.tar.gz
cru-796ba6e1e816ec87a106f2f7b501e38c99f059e1.tar.bz2
cru-796ba6e1e816ec87a106f2f7b501e38c99f059e1.zip
Merge branch 'native_message_handler' into 'master'
Window native message event. See merge request crupest/CruUI!1
Diffstat (limited to 'CruUI/ui/events/ui_event.h')
-rw-r--r--CruUI/ui/events/ui_event.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/CruUI/ui/events/ui_event.h b/CruUI/ui/events/ui_event.h
index 4915d63d..a17067c7 100644
--- a/CruUI/ui/events/ui_event.h
+++ b/CruUI/ui/events/ui_event.h
@@ -215,6 +215,47 @@ namespace cru
bool new_state_;
};
+ struct WindowNativeMessage
+ {
+ HWND hwnd;
+ int msg;
+ WPARAM w_param;
+ LPARAM l_param;
+ };
+
+ class WindowNativeMessageEventArgs : public UiEventArgs
+ {
+ public:
+ WindowNativeMessageEventArgs(Object* sender, Object* original_sender, const WindowNativeMessage& message)
+ : UiEventArgs(sender, original_sender), message_(message), result_(std::nullopt)
+ {
+
+ }
+ WindowNativeMessageEventArgs(const WindowNativeMessageEventArgs& other) = default;
+ WindowNativeMessageEventArgs(WindowNativeMessageEventArgs&& other) = default;
+ WindowNativeMessageEventArgs& operator=(const WindowNativeMessageEventArgs& other) = default;
+ WindowNativeMessageEventArgs& operator=(WindowNativeMessageEventArgs&& other) = default;
+ ~WindowNativeMessageEventArgs() override = default;
+
+ WindowNativeMessage GetWindowMessage() const
+ {
+ return message_;
+ }
+
+ std::optional<LRESULT> GetResult() const
+ {
+ return result_;
+ }
+
+ void SetResult(const std::optional<LRESULT> result)
+ {
+ result_ = result;
+ }
+
+ private:
+ WindowNativeMessage message_;
+ std::optional<LRESULT> result_;
+ };
using UiEvent = Event<UiEventArgs>;
using MouseEvent = Event<MouseEventArgs>;
@@ -224,6 +265,7 @@ namespace cru
using SizeChangedEvent = Event<SizeChangedEventArgs>;
using FocusChangeEvent = Event<FocusChangeEventArgs>;
using ToggleEvent = Event<ToggleEventArgs>;
+ using WindowNativeMessageEvent = Event<WindowNativeMessageEventArgs>;
}
}
} \ No newline at end of file