forked from bruderstein/nppPluginManager
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWindow.h
More file actions
138 lines (110 loc) · 3.2 KB
/
Window.h
File metadata and controls
138 lines (110 loc) · 3.2 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// This file is part of Notepad++ project
// Copyright (C)2003 Don HO <don.h@free.fr>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// Note that the GPL places important restrictions on "derived works", yet
// it does not provide a detailed definition of that term. To avoid
// misunderstandings, we consider an application to constitute a
// "derivative work" for the purpose of this license if it does any of the
// following:
// 1. Integrates source code from Notepad++.
// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable
// installer, such as those produced by InstallShield.
// 3. Links to a library or executes a program that does any of the above.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#pragma once
#include <windows.h>
class Window
{
public:
//! \name Constructors & Destructor
//@{
Window() = default;
Window(const Window&) = delete;
virtual ~Window() = default;
//@}
virtual void init(HINSTANCE hInst, HWND parent)
{
_hInst = hInst;
_hParent = parent;
}
virtual void destroy() = 0;
virtual void display(bool toShow = true) const
{
::ShowWindow(_hSelf, toShow ? SW_SHOW : SW_HIDE);
}
virtual void reSizeTo(RECT & rc) // should NEVER be const !!!
{
::MoveWindow(_hSelf, rc.left, rc.top, rc.right, rc.bottom, TRUE);
redraw();
}
virtual void reSizeToWH(RECT& rc) // should NEVER be const !!!
{
::MoveWindow(_hSelf, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE);
redraw();
}
virtual void redraw(bool forceUpdate = false) const
{
::InvalidateRect(_hSelf, nullptr, TRUE);
if (forceUpdate)
::UpdateWindow(_hSelf);
}
virtual void getClientRect(RECT & rc) const
{
::GetClientRect(_hSelf, &rc);
}
virtual void getWindowRect(RECT & rc) const
{
::GetWindowRect(_hSelf, &rc);
}
virtual int getWidth() const
{
RECT rc;
::GetClientRect(_hSelf, &rc);
return (rc.right - rc.left);
}
virtual int getHeight() const
{
RECT rc;
::GetClientRect(_hSelf, &rc);
if (::IsWindowVisible(_hSelf) == TRUE)
return (rc.bottom - rc.top);
return 0;
}
virtual bool isVisible() const
{
return (::IsWindowVisible(_hSelf)?true:false);
}
HWND getHSelf() const
{
return _hSelf;
}
HWND getHParent() const {
return _hParent;
}
void getFocus() const {
::SetFocus(_hSelf);
}
HINSTANCE getHinst() const
{
//assert(_hInst != 0);
return _hInst;
}
Window& operator = (const Window&) = delete;
protected:
HINSTANCE _hInst = NULL;
HWND _hParent = NULL;
HWND _hSelf = NULL;
};