⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawer.cpp

📁 Windows下的简易小画板
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -