-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathMemoryViewerControlBinding.hh
More file actions
81 lines (57 loc) · 2.25 KB
/
Copy pathMemoryViewerControlBinding.hh
File metadata and controls
81 lines (57 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef RA_UI_WIN32_MEMORYVIEWERCONTROLBINDING_H
#define RA_UI_WIN32_MEMORYVIEWERCONTROLBINDING_H
#pragma once
#include "ControlBinding.hh"
#include "ui/viewmodels/MemoryViewerViewModel.hh"
#include "ui\viewmodels\MessageBoxViewModel.hh"
namespace ra {
namespace ui {
namespace win32 {
namespace bindings {
class MemoryViewerControlBinding : public ControlBinding,
protected ra::ui::viewmodels::MemoryViewerViewModel::RepaintNotifyTarget
{
public:
explicit MemoryViewerControlBinding(ra::ui::viewmodels::MemoryViewerViewModel& vmViewModel) noexcept
: ControlBinding(vmViewModel), m_pViewModel(vmViewModel)
{
vmViewModel.AddRepaintNotifyTarget(*this);
}
~MemoryViewerControlBinding() noexcept
{
m_pViewModel.RemoveRepaintNotifyTarget(*this);
}
MemoryViewerControlBinding(const MemoryViewerControlBinding&) noexcept = delete;
MemoryViewerControlBinding& operator=(const MemoryViewerControlBinding&) noexcept = delete;
MemoryViewerControlBinding(MemoryViewerControlBinding&&) noexcept = delete;
MemoryViewerControlBinding& operator=(MemoryViewerControlBinding&&) noexcept = delete;
static void RegisterControlClass() noexcept;
void RenderMemViewer();
void ScrollUp();
void ScrollDown();
void OnClick(POINT point);
bool OnKeyDown(UINT nChar);
bool OnEditInput(UINT c);
void OnGotFocus() override;
void OnLostFocus() override;
void OnCopy();
bool OnPaste(bool bShiftHeld);
void Invalidate();
void SetHWND(DialogBase& pDialog, HWND hControl) override;
protected:
void OnViewModelIntValueChanged(const IntModelProperty::ChangeArgs& args) noexcept override;
// MemoryViewerViewModel::RepaintNotifyTarget
void OnRepaintMemoryViewer() override { Invalidate(); }
void OnSizeChanged(const ra::ui::Size& pNewSize) override;
INT_PTR CALLBACK WndProc(HWND hControl, UINT uMsg, WPARAM wParam, LPARAM lParam) override;
private:
bool HandleNavigation(UINT nChar);
bool HandleShortcut(UINT nChar);
bool m_bSuppressMemoryViewerInvalidate = false;
ra::ui::viewmodels::MemoryViewerViewModel& m_pViewModel;
};
} // namespace bindings
} // namespace win32
} // namespace ui
} // namespace ra
#endif // !RA_UI_WIN32_MEMORYVIEWERCONTROLBINDING_H