C++面向对象简易图形编辑器(3)

2018-12-23 23:24

面向对象编程技术实验报告

HDC hdc; int i,m,n,p,q;

BOOL InitWindow (HINSTANCE hInstance, int nCmdShow);

LRESULT CALLBACK WinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

/******************************************************************* 函数:WinMain ()

功能:Win32 应用程序入口函数。创建主窗口,处理消息循环

********************************************************************/ int WINAPI WinMain (HINSTANCE hInstance, //当前实例句柄 HINSTANCE hPrevInstance, //前一个实例句柄 PSTR szCmdLine, //命令行字符 int iCmdShow) //窗口显示方式 { MSG msg; char *p; //创建主窗口 if (!InitWindow (hInstance, iCmdShow)) return FALSE; p=0; //进入消息循环:从该应用程序的消息队列中检取消息, //送到消息处理过程,当检取到WM_QUIT消息时,退出消息循环。 while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; }

/****************************************************************** 函数:InitWindow () 功能:创建窗口。

*******************************************************************/ static BOOL InitWindow (HINSTANCE hInstance, int iCmdShow) { HWND hwnd; //窗口句柄

9

面向对象编程技术实验报告

WNDCLASS wcMainWnd; //窗口类结构 ATOM a; //填充窗口类结构 wcMainWnd.style = CS_VREDRAW | CS_HREDRAW; wcMainWnd.lpfnWndProc = WinProc; wcMainWnd.cbClsExtra = 0; wcMainWnd.cbWndExtra = 0; wcMainWnd.hInstance = hInstance; wcMainWnd.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICON1)); wcMainWnd.hCursor = LoadCursor (NULL, IDC_ARROW); wcMainWnd.hbrBackground = (struct HBRUSH__ *)GetStockObject (WHITE_BRUSH); wcMainWnd.lpszMenuName = (LPSTR)IDR_MENU1;; wcMainWnd.lpszClassName = szAppName; LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1)); hAccel= LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1)); //注册窗口类 a = RegisterClass (&wcMainWnd); if (!a) { MessageBox (NULL, TEXT (\注册窗口类失败!\ MB_ICONERROR); return 0; } //创建主窗口 hwnd = CreateWindow (szAppName, //窗口类名称 TEXT (\简易的图形编辑器 作者:娄通\ //窗口标题 WS_OVERLAPPEDWINDOW, //窗口风格 200, //窗口位置的x坐标 200, //窗口位置的y坐标 800, //窗口的宽度 450, //窗口的高度 NULL, //父窗口句柄 NULL, //菜单句柄 hInstance, //应用程序实例句柄 NULL); //窗口创建数据指针 if( !hwnd ) return FALSE; //显示并更新窗口 ShowWindow( hwnd, iCmdShow );

10

面向对象编程技术实验报告

UpdateWindow( hwnd ); return TRUE; }

/****************************************************************** 函数:WinProc ()

功能:处理主窗口消息

*******************************************************************/

LRESULT CALLBACK WinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; RECT rect; HMENU hMenu; static BOOL bDrawing=FALSE,Line=FALSE, Rectangle=FALSE ,Ellipse=FALSE ,Text=FALSE; static HMENU hPopMenu; POINT pt; int hNewPenStyle,hNewPenWidth; int BrushColor; COLORREF hNewPenColor; static int x,y; static char a[100]; HBRUSH hNewBrush; static int k=1; static HWND hWndEdit; static LOGFONT logfont; static CHOOSEFONT cf; static HFONT hFont; static CHOOSECOLOR cc; static COLORREF crCustomColors[16]; static COLORREF crText = RGB (0, 0, 0); static HANDLE hFile; switch (message) { case WM_CREATE: //创建消息 pDrawData = new DRAWDATA; pDrawData->iSelectionFunc = IDM_FUNC_LINETO ; pDrawData->iSelectionPenColor = IDM_PEN_BLACK ; pDrawData->iSelectionPenStyle = IDM_PEN_SOLID ;

11

面向对象编程技术实验报告

pDrawData->iSelectionPenWidth = IDM_PEN_WIDTH1 ; if (pDrawData) { SetWindowLong(hWnd, 0, (LONG)pDrawData); } //初始化结构 cf GetObject (GetStockObject (SYSTEM_FONT), sizeof (LOGFONT), (PTSTR) &logfont); //初始化结构 logfont cf.lStructSize = sizeof (CHOOSEFONT); cf.hwndOwner = hWnd; cf.hDC = NULL; cf.lpLogFont = &logfont; cf.iPointSize = 0; cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_EFFECTS; cf.rgbColors = 0; cf.lCustData = 0; cf.lpfnHook = NULL; cf.lpTemplateName = NULL; cf.hInstance = NULL; cf.lpszStyle = NULL; cf.nFontType = 0; cf.nSizeMin = 0; cf.nSizeMax = 0; //初始化结构 cc cc.lStructSize = sizeof (CHOOSECOLOR); cc.hwndOwner = hWnd; cc.hInstance = NULL; cc.rgbResult = RGB (0, 0, 0); cc.lpCustColors = crCustomColors; cc.Flags = CC_RGBINIT | CC_FULLOPEN; cc.lCustData = 0; cc.lpfnHook = NULL; cc.lpTemplateName = NULL; //显示窗口标题 hPopMenu=LoadMenu(((LPCREATESTRUCT)lParam)->hInstance,MAKEINTRESOURCE(IDR_MENU1)); hPopMenu=GetSubMenu(hPopMenu,2);

12

面向对象编程技术实验报告

return 0; case WM_COMMAND: hMenu = GetMenu (hWnd) ; switch (LOWORD (wParam)) { case IDM_FILE_EXIT: SendMessage (hWnd, WM_CLOSE, 0, 0) ; return 0 ; case IDM_FILE_SAVE: SaveMyData(SaveLine,lineCount,SaveRectangle,rectangleCount,SaveEllipse,ellipseCount,SaveText,textCount); InvalidateRect (hWnd, NULL, TRUE) ; return 0; case IDM_FILE_OPEN: LoadMyData(SaveLine,lineCount,SaveRectangle,rectangleCount,SaveEllipse,ellipseCount,SaveText,textCount); InvalidateRect (hWnd, NULL, TRUE) ; return 0; case IDM_FUNC_ELLIPSE: CheckMenuItem (hMenu, pDrawData->iSelectionFunc, MF_UNCHECKED) ; pDrawData->iSelectionFunc = LOWORD (wParam) ; CheckMenuItem (hMenu, pDrawData->iSelectionFunc, MF_CHECKED) ; Line=FALSE; Rectangle=FALSE; Ellipse=TRUE; Text=FALSE; return 0 ; case IDM_FUNC_RECTANGLE: CheckMenuItem (hMenu, pDrawData->iSelectionFunc, MF_UNCHECKED) ; pDrawData->iSelectionFunc = LOWORD (wParam) ; CheckMenuItem (hMenu, pDrawData->iSelectionFunc, MF_CHECKED) ; Line=FALSE; Rectangle=TRUE; Ellipse=FALSE; Text=FALSE; return 0 ; case IDM_FUNC_LINETO: CheckMenuItem (hMenu, pDrawData->iSelectionFunc, MF_UNCHECKED) ; pDrawData->iSelectionFunc = LOWORD (wParam) ; CheckMenuItem (hMenu, pDrawData->iSelectionFunc, MF_CHECKED) ; Line=TRUE; Rectangle=FALSE; Ellipse=FALSE; Text=FALSE;

13


C++面向对象简易图形编辑器(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:计算机基础

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: