1、实验分析与设计(可加页)一、 实验内容描述(问题域描述)要求:设计一个键盘程序,当按CTRL键时,表明要画椭圆;当按下Shift键时,表明要画矩形。然后单击向w键,椭圆或矩形的长度向上加10;单击s时,椭圆或矩形的高度向下加10;单击a键时,椭圆或矩形的长度向左加10;单击d时,椭圆或矩形的高度向右加10;单击键时,整个圆形或矩形向左移动,单击键时,整个圆形或矩形向右移动;单击键时,整个圆形或矩形向上移动;单击建时,矩形or圆形向下移动。二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#include stdlib.hstring.hlong W
2、INAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam); BOOL InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);HWND hWndMain; RECT rect1;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MSG Message; if(!I
3、nitWindowsClass(hInstance) return FALSE;InitWindows(hInstance,nCmdShow) while(GetMessage(&Message,0,0,0) TranslateMessage(&Message); DispatchMessage(& return Message.wParam;long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam) HDC hDC; static BOOL bCircle=FALSE,bRect=FALSE; PAINTST
4、RUCT ps;switch(iMessage) case WM_KEYDOWN: if(wParam = VK_CONTROL) bCircle = TRUE; bRect = FALSE; rect1.left = 0; rect1.right = 0; rect1.top = 0; rect1.bottom = 0; else if(wParam = VK_SHIFT) bRect = TRUE; bCircle = FALSE; rect1.right = 0; else if(wParam = VK_RIGHT) rect1.right +=10; if(bRect = TRUE |
5、 bCircle = TRUE) InvalidateRect(hWnd,NULL,TRUE); else if(wParam = VK_DOWN) rect1.bottom +=10; else if(wParam = VK_PRIOR) rect1.top -=10; rect1.bottom -=10; else if(wParam = VK_NEXT) rect1.top +=10; else if(wParam = VK_HOME) rect1.left -=10; rect1.right -=10; else if(wParam = VK_END) rect1.left +=10;
6、 break; case WM_PAINT: hDC = BeginPaint(hWnd,&ps); if(bCircle = TRUE) Ellipse(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom); if(bRect = TRUE) Rectangle(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom); EndPaint(hWnd,& case WM_DESTROY: PostQuitMessage(0); return 0; default: return(DefWindowPro
7、c(hWnd,iMessage,wParam,lParam); return 0;BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)HWND hWnd; hWnd=CreateWindow(6_4, 鼠标显示实例程序, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, NULL, hInstance, NULL); hWnd) return FALSE; hWndMain=hWnd; ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); return TRUE;BOOL In
8、itWindowsClass(HINSTANCE hInstance) WNDCLASS WndClass;WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName=; WndClass.lpszMenuName=N
9、ULL; return RegisterClass(&WndClass);三.主要仪器设备及耗材电脑VC+6.0软件第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)最开头掉了#include导致程序错误,加上后,运行良好。二、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)结果如图:计算器设计用MFC的向导创建编辑框,在编辑框中实现算术加、减、乘和除的运算。用class wizard对各按钮以及编辑框进行添加变量然后在jisuanDlg.cpp文件开头定义变量最后在下方添加下列代码void
10、CJisuanDlg:OnButton1() / TODO: Add your control notification handler code here UpdateData(TRUE); char *p1 = m_e1.GetBuffer(m_e1.GetLength(); char *p2 = m_e2.GetBuffer(m_e2.GetLength();float a1;a1=atof(p1);float a2;a2=atof(p2);a3=a1+a2;m_e3.Format(%f,a3); UpdateData(FALSE);OnButton2() a3=a1-a2;OnButt
11、on3() a3=a1*a2;OnButton4() a3=a1/a2;OnButton9() UpdateData(TRUE); m_e1 = _T(); m_e2 = _T( m_e3 = _T(三、主要仪器设备及耗材电脑 VC+一开始没有加入UpdateData(TRUE) UpdateData(FALSE)等代码,导致计算结果无法刷新与显示。这段代码是由其他同学在程序中找到的,灰体字,一开始没怎么注意,后来才发现可以执行清零功能三、 实验小结、建议及体会 通过这次上机实验,初步掌握了mfc编写对话框的基本方法,通过编写一个简单的小程序使自己对vc+有了更多的认识,对mfc编程有了更深的
12、体会,熟悉了使用class wizard添加函数以及变量的方法,认识到了mfc与api相比的方便之处。菜单设计MFC编程菜单应用实验内容:编写一个单文档应用程序在主菜单中增加【曲线】、【线宽】和【颜色】三个菜单项,【曲线】菜单中包含【正弦】和【余弦】两个菜单项;【线宽】菜单中包含【线宽2】和【线宽3】两个菜单项;【颜色】菜单中包含【红色】和【蓝色】两个菜单项二、基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)void CMainFrame:OnMenuitem32771() Add your command handler code here jp=0;C
13、ClientDC dc(this);CRect cr;GetClientRect(&cr); dc.FillSolidRect(cr,RGB(255,255,255); dc.SelectStockObject(BLACK_PEN);for(int j=0;j100;j+) /生成正弦曲线的点坐标 lpSinj.x=(long)(j*2*Pi/100*90); lpSinj.y=(long)(dfRange*sin(j*2*Pi/100)+100;dc.Polyline(lpSin,100);OnMenuitem32772() jp=1; lpSinj.y=(long)(dfRange*cos
14、(j*2*Pi/100)+100;OnMenuitem32773() CClientDC dc(this); HPEN hp; hp=CreatePen(PS_INSIDEFRAME,6,RGB(0,0,0); dc.SelectObject(hp); if(jp=1) for(int j=0; else for(int j=0;OnMenuitem32775() hp=CreatePen(PS_INSIDEFRAME,6,RGB(0,0,255);lpSinj.x=(long)(j*2*Pi/100*90);OnMenuitem32776() hp=CreatePen(PS_INSIDEFRAME,6,RGB(255,0,0);电脑VC +6.0 由于菜单的认识还不是很了解 只能初步设计下菜单按键的响应函数。在执行画笔时,每一次都要重新写一遍函数。希望以后有待加强通过这次试验体会菜单的制作以及画笔的使用方法,也初步掌握了菜单的修改和一些按钮的设置。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1