📄 drawer.cpp
字号:
case 10:
width = 0;
break;
case IDM_TWO:
case 11:
width = 3;
break;
case IDM_THREE:
case 12:
width = 6;
break;
case IDM_MAGNIFY:
case 13:
FD = TRUE;
InvalidateRect(hwnd,NULL,true);
count++;
if(count>3)
{
MessageBox(hwnd,TEXT("大哥,别点了!"),TEXT("求你了"),MB_APPLMODAL);
count = 0;
}
break;
case IDM_REDUCE:
case 14:
SX = TRUE;
InvalidateRect(hwnd,NULL,true);
count++;
if(count>3)
{
MessageBox(hwnd,TEXT("大哥,别点了!"),TEXT("求你了"),MB_APPLMODAL);
count = 0;
}
break;
case IDM_LINE:
case 15:
flag = 0;
break;
case IDM_RECTHOLLOW:
case 16:
flag = 1;
break;
case IDM_RECTSOLID:
case 17:
flag = 2;
break;
case IDM_CIRCLEHOLLOW:
case 18:
flag = 3;
break;
case IDM_CIRCLESOLID:
case 19:
flag = 4;
break;
case IDM_ABOUT:
case 20:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hwnd, (DLGPROC)About);
break;
case IDM_EXIT:
if(SAVED == FALSE)
{
iReturn = MessageBox(hwnd,TEXT("文件没有保存,要保存吗?"),
TEXT("询问"),MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON3);
if(iReturn == IDYES)
{
SendMessage (hwnd, WM_COMMAND, 2, 0);
return 0;
}
if(iReturn == IDNO)
{
DestroyWindow(hwnd);
return 0;
}
if(iReturn == IDCANCEL)
return 0;
}
break;
case IDM_HELP:
MessageBox(hwnd,TEXT("嘿嘿,没有帮助,自己摸索吧!"),TEXT("不好意思!"),0);
return 0;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
//////////////////////////// case WM_LBUTTONDOWN: //////////////////////////////////
case WM_LBUTTONDOWN:
if(choose == TRUE)
{
pchoose.x = LOWORD(lParam);
pchoose.y = HIWORD(lParam);
static POINT line1,line2;
for(i = 0; i < shapes.size();i+=2)
{
if(shapes[i].Kind == 0)
{
line1.x = shapes[i].begin.x;
line1.y = shapes[i].begin.y;
line2.x = shapes[i].end.x;
line2.y = shapes[i].end.y;
dis = Distance(pchoose,line1,line2);
}
else
{
if(pchoose.x>shapes[i].begin.x && pchoose.x < shapes[i+1].end.x )
if(pchoose.y>shapes[i].begin.y && pchoose.y < shapes[i+1].end.y )
{
line1.x = shapes[i].begin.x;
line1.y = shapes[i].begin.y;
line2.x = shapes[i].end.x;
line2.y = shapes[i].begin.y;
dis = Distance(pchoose,line1,line2);
line1.x = shapes[i].begin.x;
line1.y = shapes[i].begin.y;
line2.x = shapes[i].begin.x;
line2.y = shapes[i].end.y;
if(dis > Distance(pchoose,line1,line2))
dis = Distance(pchoose,line1,line2);
line1.x = shapes[i].begin.x;
line1.y = shapes[i].end.y;
line2.x = shapes[i].end.x;
line2.y = shapes[i].end.y;
if(dis > Distance(pchoose,line1,line2))
dis = Distance(pchoose,line1,line2);
line1.x = shapes[i].begin.x;
line1.y = shapes[i].end.y;
line2.x = shapes[i].end.x;
line2.y = shapes[i].end.y;
if(dis > Distance(pchoose,line1,line2))
dis = Distance(pchoose,line1,line2);
}
}
if (dis <0.001)
{
j = i;
shapes[i].psstyle = PS_DASHDOT;
choose = FALSE;
break;
}
}
}
if(choose == FALSE)
{
begin.x = LOWORD(lParam);
begin.y = HIWORD(lParam);
pb.begin.x = begin.x;
pb.begin.y = begin.y;
pb.width = width;
pb.Kind = flag;
pb.psstyle = psstyle;
curf = TRUE;
}
return 0;
////////////////////////// case WM_MOUSEMOVE: ///////////////////////////////////
case WM_MOUSEMOVE:
if (curf == TRUE)
SetCursor (LoadCursor (NULL, IDC_CROSS)) ;
return 0;
////////////////////////// case WM_LBUTTONUP: //////////////////////////////////
case WM_LBUTTONUP:
if(choose == FALSE)
{
SAVED = FALSE;
end.x = LOWORD(lParam);
end.y = HIWORD(lParam);
switch (flag)
{
case 0:
SetRect(&rect,0,28,rect.right,rect.bottom);
InvalidateRect(hwnd,&rect,TRUE);
pb.end.x = end.x;
pb.end.y = end.y;
shapes.push_back(pb);
hdc = GetDC(hwnd);
MoveToEx(hdc,begin.x,begin.y,NULL);
LineTo(hdc,end.x,end.y);
ReleaseDC(hwnd,hdc);
break;
case 1:
SetRect(&rect,0,28,650,440);
InvalidateRect(hwnd,&rect,TRUE);
pb.end.x = end.x;
pb.end.y = end.y;
shapes.push_back(pb);
hdc = GetDC(hwnd);
SelectObject(hdc,hPen[bPress]) ;
MoveToEx(hdc,begin.x,begin.y,NULL);
LineTo(hdc,end.x,begin.y);
MoveToEx(hdc,begin.x,begin.y,NULL);
LineTo(hdc,begin.x,end.y);
MoveToEx(hdc,begin.x,end.y,NULL);
LineTo(hdc,end.x,end.y);
MoveToEx(hdc,end.x,begin.y,NULL);
LineTo(hdc,end.x,end.y);
ReleaseDC(hwnd,hdc);
break;
case 2:
SetRect(&rect,0,28,650,440);
InvalidateRect(hwnd,&rect,TRUE);
pb.end.x = end.x;
pb.end.y = end.y;
shapes.push_back(pb);
hdc = GetDC(hwnd);
Rectangle(hdc,begin.x,begin.y,end.x,end.y);
ReleaseDC(hwnd,hdc);
DeleteObject(hbrush);
break;
case 3:
SetRect(&rect,0,28,650,440);
InvalidateRect(hwnd,&rect,TRUE);
pb.end.x = end.x;
pb.end.y = end.y;
shapes.push_back(pb);
hdc = GetDC(hwnd);
Arc(hdc,begin.x,begin.y,end.x,end.y,(begin.x+end.x)/2,begin.y,
(begin.x+end.x)/2,begin.y);
ReleaseDC(hwnd,hdc);
break;
case 4:
SetRect(&rect,0,28,650,440);
InvalidateRect(hwnd,&rect,TRUE);
pb.end.x = end.x;
pb.end.y = end.y;
shapes.push_back(pb);
hdc = GetDC(hwnd);
Ellipse(hdc,begin.x,begin.y,end.x,end.y);
ReleaseDC(hwnd,hdc);
DeleteObject(hbrush);
break;
}
curf = false;
}
return 0;
/////////////////////////// case WM_PAINT: ///////////////////////////////////
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
if (FD == TRUE)
for(i = 0;i<shapes.size();i++)
{
shapes[i].begin.x = (3*shapes[i].begin.x)/2 - shapes[i].end.x/2;
shapes[i].begin.y = (3*shapes[i].begin.y)/2 - shapes[i].end.y/2;
shapes[i].end.x = (3*shapes[i].end.x)/2 - shapes[i].begin.x/2;
shapes[i].end.y = (3*shapes[i].end.y)/2 - shapes[i].begin.y/2;
}
if (SX == TRUE)
for(i = 0;i<shapes.size();i++)
{
shapes[i].begin.x = (3*shapes[i].begin.x)/4 + shapes[i].end.x/4;
shapes[i].begin.y = (3*shapes[i].begin.y)/4 + shapes[i].end.y/4;
shapes[i].end.x = (3*shapes[i].end.x)/4 + shapes[i].begin.x/4;
shapes[i].end.y = (3*shapes[i].end.y)/4 + shapes[i].begin.y/4;
}
FD = FALSE;
SX = FALSE;
for(i=0;i<shapes.size();i++)
{
if(shapes[i].Kind == 0)
{
hpen = CreatePen(shapes[i].psstyle,shapes[i].width,shapes[i].color);
SelectObject(hdc,hpen);
MoveToEx(hdc,shapes[i].begin.x,shapes[i].begin.y,NULL);
LineTo(hdc,shapes[i].end.x,shapes[i].end.y);
DeleteObject(hpen);
}
if(shapes[i].Kind == 1)
{
hpen = CreatePen(shapes[i].psstyle,shapes[i].width,shapes[i].color);
SelectObject(hdc,hpen);
MoveToEx(hdc,shapes[i].begin.x,shapes[i].begin.y,NULL);
LineTo(hdc,shapes[i].end.x,shapes[i].begin.y);
MoveToEx(hdc,shapes[i].begin.x,shapes[i].begin.y,NULL);
LineTo(hdc,shapes[i].begin.x,shapes[i].end.y);
MoveToEx(hdc,shapes[i].begin.x,shapes[i].end.y,NULL);
LineTo(hdc,shapes[i].end.x,shapes[i].end.y);
MoveToEx(hdc,shapes[i].end.x,shapes[i].begin.y,NULL);
LineTo(hdc,shapes[i].end.x,shapes[i].end.y);
}
if(shapes[i].Kind == 2)
{
hpen = CreatePen(PS_SOLID,shapes[i].width,shapes[i].color);
SelectObject(hdc,hpen);
hBr = CreateSolidBrush(shapes[i].color);
SelectObject (hdc,hBr);
Rectangle(hdc,shapes[i].begin.x,shapes[i].begin.y,
shapes[i].end.x,shapes[i].end.y);
}
if(shapes[i].Kind == 3)
{
hpen = CreatePen(shapes[i].psstyle,shapes[i].width,shapes[i].color);
SelectObject(hdc,hpen);
Arc(hdc,shapes[i].begin.x,shapes[i].begin.y,shapes[i].end.x,shapes[i].end.y,(shapes[i].begin.x+shapes[i].end.x)/2,shapes[i].begin.y,
(shapes[i].begin.x+shapes[i].end.x)/2,shapes[i].begin.y);
}
if(shapes[i].Kind == 4)
{
hpen = CreatePen(PS_SOLID,shapes[i].width,shapes[i].color);
SelectObject(hdc,hpen);
hBr = CreateSolidBrush(shapes[i].color);
SelectObject (hdc,hBr);
Ellipse(hdc,shapes[i].begin.x,shapes[i].begin.y,
shapes[i].end.x,shapes[i].end.y);
}
}
EndPaint(hwnd,&ps);
return 0;
case WM_CLOSE:
if(SAVED == FALSE)
{
iReturn = MessageBox(hwnd,TEXT("文件没有保存,要保存吗?"),
TEXT("询问"),MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON3);
if(iReturn == IDYES)
{
SendMessage (hwnd, WM_COMMAND, 2, 0);
return 0;
}
if(iReturn == IDNO)
{
DestroyWindow(hwnd);
return 0;
}
if(iReturn == IDCANCEL)
return 0;
}
else
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd,message,wParam,lParam);
}
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -