📄 lsgrip.c
字号:
POINT temppt;
switch (iMessage)
{
case WM_SETTEXT:
break;
case WM_MDIACTIVATE:
// if (lParam == (LPARAM)hwnd)
// SendMessage(hwndSourceTab,WM_SETACTIVETAB,0,(LPARAM)hwnd) ;
break;
case WM_NCHITTEST:
rv = DefMDIChildProc(hwnd, iMessage, wParam, lParam);
if (rv == HTCAPTION)
return HTCLIENT;
return rv;
case WM_SYSCOMMAND:
if (wParam == SC_CLOSE)
{
PostMessage(hwnd, WM_CLOSE, 0, 0);
}
break;
case WM_LBUTTONDOWN:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
temppt.x = (long)(short)LOWORD(lParam);
temppt.y = (long)(short)HIWORD(lParam);
if (temppt.y < GetSystemMetrics(SM_CYCAPTION))
{
// ScreenToClient(hwnd,&temppt) ;
// SendMessage(hwndClient,WM_MDIACTIVATE,(WPARAM)hwnd,0) ;
// temppt.y += GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYFRAME);
// temppt.x += GetSystemMetrics(SM_CXFRAME) ;
// lParam = MAKELRESULT(temppt.x,temppt.y) ;
ptr1 = (CCW_params*)GetWindowLong(ptr->u.gp.child, 0);
if (ptr1->type == LSTOOLBAR)
dmgrStartMoveGrip(ptr, lParam);
else
dmgrStartMoveClient(ptr1, lParam);
oldCursor = SetCursor(mcurs);
SetCapture(hwnd);
dragging = TRUE;
return 0;
}
break;
case WM_LBUTTONUP:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
// if (wParam == HTCAPTION) {
if (dragging)
{
SetCursor(oldCursor);
oldCursor = 0;
}
if (dragging)
ReleaseCapture();
dragging = FALSE;
sizing = FALSE;
ptr1 = (CCW_params*)GetWindowLong(ptr->u.gp.child, 0);
if (ptr1->type == LSTOOLBAR)
dmgrEndMoveGrip(ptr);
else
dmgrEndMoveSizeClient(ptr1);
return 0;
// }
break;
case WM_MOUSEMOVE:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
if (dragging)
{
ptr1 = (CCW_params*)GetWindowLong(ptr->u.gp.child, 0);
if (ptr1->type == LSTOOLBAR)
dmgrMoveGrip(ptr, lParam);
else
dmgrMoveClient(ptr1, lParam);
}
break;
case WM_NOTIFY:
h = (NMHDR*)lParam;
break;
case WM_CREATE:
ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof
(CCW_params));
SetWindowLong(hwnd, 0, (DWORD)ptr);
// *ptr = *(CCW_params *)(((LPMDICREATESTRUCT)lParam)->lParam) ;
ptr->self = hwnd;
ptr->type = LSTBCONT;
dmgrAddContainer(ptr);
return 0;
case WM_PAINT:
dc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &r);
EndPaint(hwnd, &ps);
break;
case WM_COMMAND:
break;
case WM_DESTROY:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
HeapFree(GetProcessHeap(), 0, ptr);
break;
case WM_SIZE:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
GetClientRect(hwnd, &r);
MoveWindow(ptr->u.gp.directchild, 0, 0, r.right, r.bottom, TRUE);
return 0;
case WM_CLOSE:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
ptr = (CCW_params*)GetWindowLong(ptr->u.gp.child, 0);
dmgrHideWindow(ptr->id, TRUE);
return 0;
case WM_MOVE:
break;
}
return DefMDIChildProc(hwnd, iMessage, wParam, lParam);
}
//-------------------------------------------------------------------------
static LRESULT CALLBACK _export BlankWindowWndProc(HWND hwnd, UINT iMessage,
WPARAM wParam, LPARAM lParam)
{
RECT r, *pr;
PAINTSTRUCT ps;
HDC dc;
CCW_params *ptr;
static int skip;
static int dragging, oncursor, sizing;
static RECT moverect;
static HCURSOR oldCursor;
POINT temppt, movept;
int temp;
switch (iMessage)
{
case WM_NOTIFY:
SendMessage(GetParent(hwnd), iMessage, wParam, lParam);
break;
case WM_COMMAND:
SendMessage(GetParent(hwnd), iMessage, wParam, lParam);
break;
case WM_PAINT:
ptr = (CFW_params*)GetWindowLong(hwnd, 0);
dc = BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
break;
case WM_CREATE:
ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof
(CCW_params));
SetWindowLong(hwnd, 0, (DWORD)ptr);
*ptr = *(CCW_params*)(((LPCREATESTRUCT)lParam)->lpCreateParams);
ptr->self = hwnd;
ptr->type = LSBLANK;
dmgrAddBlank(ptr);
return 0;
case WM_DESTROY:
ptr = (CCW_params*)GetWindowLong(hwnd, 0);
HeapFree(GetProcessHeap(), 0, ptr);
break;
case WM_CLOSE:
return 0;
case WM_SIZE:
break;
case WM_MOVE:
break;
}
return DefWindowProc(hwnd, iMessage, wParam, lParam);
}
//-------------------------------------------------------------------------
void RegisterGripWindow(HINSTANCE hInstance)
{
WNDCLASS wc;
memset(&wc, 0, sizeof(wc));
wc.style = CS_PARENTDC;
wc.lpfnWndProc = &GripWindWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = sizeof(LPVOID);
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(0, IDI_APPLICATION);
wc.hCursor = LoadCursor(0, IDC_ARROW);
wc.hbrBackground = CreateSolidBrush(GetSysColor(COLOR_INACTIVEBORDER));
wc.lpszMenuName = 0;
wc.lpszClassName = szGripWindClassName;
RegisterClass(&wc);
memset(&wc, 0, sizeof(wc));
wc.style = 0;
wc.lpfnWndProc = &TBContainerProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 4;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(0, IDI_APPLICATION);
wc.hCursor = LoadCursor(0, IDC_ARROW);
wc.hbrBackground = CreateSolidBrush(GetSysColor(COLOR_INACTIVEBORDER));
wc.lpszMenuName = 0;
wc.lpszClassName = szTBContainerClassName;
RegisterClass(&wc);
memset(&wc, 0, sizeof(wc));
wc.style = CS_PARENTDC;
wc.lpfnWndProc = &BlankWindowWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = sizeof(LPVOID);
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(0, IDI_APPLICATION);
wc.hCursor = NULL;
wc.hbrBackground = CreateSolidBrush(GetSysColor(COLOR_MENU));
wc.lpszMenuName = 0;
wc.lpszClassName = szBlankWindowClassName;
RegisterClass(&wc);
mcurs = LoadCursor(hInstance, "ID_MOVECUR");
}
//-------------------------------------------------------------------------
HWND CreateContainerWindow(HWND parent, RECT *r)
{
CCW_params p;
HWND hwnd;
hwnd = CreateMDIWindow(szTBContainerClassName, "", WS_CLIPCHILDREN |
WS_CLIPSIBLINGS | WS_CHILD | WS_OVERLAPPEDWINDOW - WS_MINIMIZEBOX -
WS_MAXIMIZEBOX, r->left, r->top, r->right - r->left, r->bottom - r->top,
parent, (HINSTANCE)GetWindowLong(parent, GWL_HINSTANCE), (LPARAM) &p);
return hwnd;
}
//-------------------------------------------------------------------------
HWND CreateBlankWindow(HWND parent, RECT *r)
{
CCW_params p;
HWND hwnd;
hwnd = CreateWindow(szBlankWindowClassName, "", WS_CLIPCHILDREN | WS_CHILD,
r->left, r->top, r->right - r->left, r->bottom - r->top, parent, (HMENU)
0, (HINSTANCE)GetWindowLong(parent, GWL_HINSTANCE), &p);
return hwnd;
}
//-------------------------------------------------------------------------
HWND CreateGripWindow(HWND parent, RECT *r, int vertical)
{
CCW_params p;
HWND hwnd;
RECT r1, r2;
p.vertical = vertical;
hwnd = CreateWindow(szGripWindClassName, "", WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | WS_CHILD | WS_BORDER, r->left, r->top, r->right - r
->left, r->bottom - r->top, parent, (HMENU)0, (HINSTANCE)GetWindowLong
(parent, GWL_HINSTANCE), &p);
return hwnd;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -