blob: 351d9b96733c632ff1400ffb8de5f307660fd26d (
plain)
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
|
/*
Copyright (C) 2009 Red Hat, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _H_RED_WINDOW_P
#define _H_RED_WINDOW_P
#include <map>
#include <red_drawable.h>
class RedWindow;
class Menu;
struct PixelsSource_p;
typedef HWND Window;
class CommandInfo {
public:
CommandInfo() : menu (0), command (0) {}
CommandInfo(Menu* in_menu, int in_command) : menu (in_menu), command (in_command) {}
Menu* menu;
int command;
};
typedef std::map<int, CommandInfo> CommandMap;
class RedWindow_p {
public:
RedWindow_p();
void create(RedWindow& red_window, PixelsSource_p& pixels_source);
void destroy(PixelsSource_p& pixels_source);
void release_menu(Menu* menu);
void on_minimized();
void on_restored();
void on_pos_changing(RedWindow& red_window);
bool prossec_menu_commands(int cmd);
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
protected:
HWND _win;
RedDrawable::Format _format;
uint32_t _modal_refs;
HMODULE _no_taskmgr_dll;
HHOOK _no_taskmgr_hook;
bool _focused;
bool _pointer_in_window;
bool _minimized;
bool _valid_pos;
int _x;
int _y;
CommandMap _commands_map;
HMENU _sys_menu;
};
#endif
|