面向对象编程技术实验报告
BrushColor=WHITE_BRUSH; break;
case IDM_BRUSH_LTGRAY: BrushColor=LTGRAY_BRUSH; break;
case IDM_BRUSH_COLORSOLID: //创建并选择彩色实体画刷 hNewBrush = (HBRUSH)CreateSolidBrush (RGB (0, 255, 255)); break;
case IDM_BRUSH_CROSS: //创建并选择绿色十字影线画刷 hNewBrush = CreateHatchBrush (HS_CROSS, RGB (0, 255, 0)); break; }
if(Line) { SaveLine[i].penStyle = hNewPenStyle; SaveLine[i].penWidth = hNewPenWidth; SaveLine[i].color = hNewPenColor; }
if(Rectangle) { SaveRectangle[m].penStyle = hNewPenStyle; SaveRectangle[m].penWidth = hNewPenWidth; SaveRectangle[m].color = hNewPenColor; SaveRectangle[m].brushColor =BrushColor; SaveRectangle[m].hNewBrush = hNewBrush ; }
if(Ellipse) { SaveEllipse[n].penStyle = hNewPenStyle; SaveEllipse[n].penWidth = hNewPenWidth; SaveEllipse[n].color = hNewPenColor; SaveEllipse[n].brushColor =BrushColor; SaveEllipse[n].hNewBrush = hNewBrush ; }
//清除原绘图轨迹
SetROP2 (hdc, R2_WHITE);
switch (pDrawData->iSelectionFunc) {
case IDM_FUNC_LINETO:
19
面向对象编程技术实验报告
DrawMyLine( hdc); break;
case IDM_FUNC_RECTANGLE: DrawMyRectangle(hdc ); break;
case IDM_FUNC_ELLIPSE: DrawMyEllipse(hdc ); break; }
if(Line) { SaveLine[i].ptE.x =(short) LOWORD (lParam) ; SaveLine[i].ptE.y =(short) HIWORD (lParam) ; }
if(Rectangle) { SaveRectangle[m].ptE.x =(short) LOWORD (lParam) ; SaveRectangle[m].ptE.y =(short) HIWORD (lParam) ; }
if(Ellipse) { SaveEllipse[n].ptE.x =(short) LOWORD (lParam) ; SaveEllipse[n].ptE.y =(short) HIWORD (lParam) ; }
//绘图新轨迹
SetROP2 (hdc, R2_COPYPEN); switch (pDrawData->iSelectionFunc) {
case IDM_FUNC_LINETO: DrawMyLine( hdc); break; case IDM_FUNC_RECTANGLE: DrawMyRectangle(hdc ); break;
case IDM_FUNC_ELLIPSE: DrawMyEllipse(hdc ); break; }
20
面向对象编程技术实验报告
ReleaseDC (hWnd, hdc) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hWnd, &ps); GetClientRect (hWnd, &rect); if (hFont) SelectObject (hdc, hFont); SetTextColor (hdc, crText);
TextOut(hdc,240,125,\右键改变字体大小,左键更改文本颜色\ DrawText (hdc, a,-1, &rect, DT_RIGHT );//显示鼠标坐标 if(Text) DrawText (hdc, TEXT(\请在空白处单击鼠标左键输入文本\&rect,DT_LEFT); DrawMyText(hdc); DrawMyLine( hdc ); DrawMyRectangle(hdc ); DrawMyEllipse(hdc ); EndPaint (hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); pDrawData = (DRAWDATA*)GetWindowLong(hWnd, 0); if (pDrawData) delete pDrawData; return 0; } //调用缺省消息处理过程 return DefWindowProc (hWnd, message, wParam, lParam);
} //函数 WinProc 结束
21
面向对象编程技术实验报告
二、附CPP
/******************************************************************* 程序:funcstruct 文件:funcstruct.cpp
功能:定义了所有的函数
********************************************************************/ #include \
extern TCHAR szAppName[] = TEXT (\ extern struct MySaveLine SaveLine[MAX];
extern struct MySaveRectangle SaveRectangle[MAX]; extern struct MySaveEllipse SaveEllipse[MAX]; extern struct MySaveText SaveText[MAX]; extern int lineCount;
extern int rectangleCount; extern int ellipseCount; extern int textCount;
extern HACCEL hAccel; extern HDC hdc; extern int i,m,n,p; extern int q;
extern DRAWDATA* pDrawData ;
void DrawMyLine(HDC hdc) // 绘制直线 { HPEN hPen; HPEN hPenOld; int j; for(j=0;j void DrawMyRectangle(HDC hdc) // 绘制矩形 { 22 面向对象编程技术实验报告 int j; HBRUSH hOldBrush; HPEN hPen; HPEN hPenOld; for(j=0;j void DrawMyEllipse(HDC hdc) // 绘制椭圆 { int j; HBRUSH hOldBrush; HPEN hPen; HPEN hPenOld; for(j=0;j 23