-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCircleWindow.cpp
More file actions
95 lines (95 loc) · 2.6 KB
/
CircleWindow.cpp
File metadata and controls
95 lines (95 loc) · 2.6 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
#include <Windows.h>
#include "WM_USER_messages.h"
#include "CircleWindow.h"
#include "MHRepErr.h"
extern HINSTANCE MHInst;
HWND CircleWindow::CircleHwnd=0;
extern HPEN green_pen;
extern bool G_eytracker_is_working;
//=================================================================================
// Îêîííàÿ ïðîöåäóðà
//=================================================================================
LRESULT CALLBACK CircleTranspWndProc(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam)
{
switch (message)
{
case WM_CREATE:
// Ñîäðàíî èç èíòåðíåòà - òàê ìû äåëàåì îêíî ïðîçðà÷íûì â áåëûõ åãî ÷àñòÿõ
SetLayeredWindowAttributes(hwnd,RGB(255,255,255),NULL,LWA_COLORKEY);
break;
case WM_PAINT: // Ðèñóåì êðóæêè äëÿ ãëàç
PAINTSTRUCT ps;
HDC hdc;
hdc=BeginPaint(hwnd,&ps);
SelectObject(hdc,green_pen);
Ellipse(hdc,2,2,97,97);
EndPaint(hwnd,&ps);
break;
case WM_USER_MOVEWINDOW:
MoveWindow(hwnd,wparam,lparam,100,100,FALSE);
break;
case WM_CLOSE: // Çàêðûòèå îêíà èãíîðèðóåòñÿ
break;
default:
return DefWindowProc(hwnd,message,wparam,lparam);
}
return 0; // Îáðàáîòàëè, ñâàëèëèñü ñþäà ïî break
}
// Ñîçäàíèå îêíà
int CircleWindow::Init()
{
ATOM aresult; // Äëÿ âñÿêèõ êîäîâ âîçâðàòà
TCHAR *CircleWindowCName=L"MhookCircleWindow1.0";
// 1. Ðåãèñòðàöèÿ êëàññà îêíà
WNDCLASS wcl={CS_HREDRAW | CS_VREDRAW, CircleTranspWndProc, 0,
0,
MHInst,
LoadIcon( NULL, IDI_APPLICATION),
LoadCursor(NULL, IDC_ARROW),
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL,
CircleWindowCName
};
aresult=::RegisterClass(&wcl);
if (aresult==0)
{
#ifdef _DEBUG
MHReportError(__WIDEFILE__,L"RegisterClass (",__LINE__);
#endif
return 1;
}
// Ñîçäà¸ì îêíî
CircleHwnd=CreateWindowEx(
//WS_EX_LAYERED|WS_EX_TOPMOST|WS_EX_CLIENTEDGE,
WS_EX_LAYERED|WS_EX_TOPMOST,
CircleWindowCName,
NULL,
WS_POPUP,
100,100,
100,100,
0,0,
MHInst,
0 );
if(NULL==CircleHwnd)
{
#ifdef _DEBUG
MHReportError(__WIDEFILE__,L"CreateWindow",__LINE__);
#endif
return 1;
}
// Ïîêàçûâàåì îêíî (ïîòîì îòëîæèì ïîêàç äî âðåìåíè ïåðåõâàòà ìûøè)
//ShowWindow( CircleHwnd, SW_SHOWNORMAL);
//UpdateWindow( CircleHwnd );
return 0;
}
void CircleWindow::Show()
{
if(CircleHwnd&&G_eytracker_is_working) ShowWindow( CircleHwnd, SW_SHOWNORMAL);
}
void CircleWindow::Hide()
{
if(CircleHwnd) ShowWindow( CircleHwnd, SW_HIDE);
}