blob: 5fc9f66268055e332281425c2c88648f09fb27fa (
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
|
#include "MagneticWindowsCore.h"
HANDLE hSnapToListService;
int SnapToList(WPARAM wParam, LPARAM Align) {
HWND hWnd, hWndList;
RECT WndRect, ListRect;
RECT AlignRect;
RECT ResultRect;
hWnd = (HWND)wParam;
hWndList = (HWND)CallService(MS_CLUI_GETHWND,0,0);
GetWindowRect(hWnd, &WndRect);
GetWindowRect(hWndList, &ListRect);
AlignRect = ListRect;
if ((!(MS_MW_STL_List_Left & Align)) && (MS_MW_STL_List_Right & Align)) {
AlignRect.left = AlignRect.right;
} else
if ((MS_MW_STL_List_Left & Align) && (!(MS_MW_STL_List_Right & Align))) {
AlignRect.right = AlignRect.left;
}
if ((!(MS_MW_STL_List_Top & Align)) && (MS_MW_STL_List_Bottom & Align)) {
AlignRect.top = AlignRect.bottom;
} else
if ((MS_MW_STL_List_Top & Align) && (!(MS_MW_STL_List_Bottom & Align))) {
AlignRect.bottom = AlignRect.top;
}
ResultRect = WndRect;
if ((MS_MW_STL_Wnd_Left & Align) && (MS_MW_STL_Wnd_Right & Align)) {
ResultRect.left = AlignRect.left;
ResultRect.right = AlignRect.right;
} else
if ((!(MS_MW_STL_Wnd_Left & Align)) && (MS_MW_STL_Wnd_Right & Align)) {
ResultRect.left = AlignRect.right - (WndRect.right - WndRect.left);
ResultRect.right = AlignRect.right;
} else
if ((MS_MW_STL_Wnd_Left & Align) && (!(MS_MW_STL_Wnd_Right & Align))) {
ResultRect.left = AlignRect.left;
ResultRect.right = AlignRect.left + (WndRect.right - WndRect.left);
}
if ((MS_MW_STL_Wnd_Top & Align) && (MS_MW_STL_Wnd_Bottom & Align)) {
ResultRect.top = AlignRect.top;
ResultRect.bottom = AlignRect.bottom;
} else
if ((!(MS_MW_STL_Wnd_Top & Align)) && (MS_MW_STL_Wnd_Bottom & Align)) {
ResultRect.top = AlignRect.bottom - (WndRect.bottom - WndRect.top);
ResultRect.bottom = AlignRect.bottom;
} else
if ((MS_MW_STL_Wnd_Top & Align) && (!(MS_MW_STL_Wnd_Bottom & Align))) {
ResultRect.top = AlignRect.top;
ResultRect.bottom = AlignRect.top + (WndRect.bottom - WndRect.top);
}
MoveWindow(hWnd, ResultRect.left, ResultRect.top, ResultRect.right-ResultRect.left, ResultRect.bottom-ResultRect.top, true);
return 0;
}
|