人机交互实验报告_第1页
人机交互实验报告_第2页
人机交互实验报告_第3页
人机交互实验报告_第4页
人机交互实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字媒体学院上机实验报告I课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:01实验成绩:一、实验名称:测试创建函数二、实验目的及要求熟悉Windows程序设计掌握VS的使用了解程序窗口的设计三、实验环境:VS2012四、实验内容编制一个程序,设计一个程序窗口,测试创建函数的风格参数,简单总结窗口有哪些风格。五、算法描述及实验步骤创建一个基于对话框的项目给对话框加入相应的操作按钮给按钮加上代码,设置属性为实现操作添加必要函数六、调试过程及实验结果我就只是在源代码里面更改了几次风格参数的代码,看了下效果,并将风格参数总结成了一份word文档。七、总结本次实验,我掌握了一些具体函数的定义和调用方法。在操作的过程中深刻地体会到函数调用的便捷。通过vs使用,我亲自感受并实践了程序设计的思想,同时对vs程序设计也有了总体的认识。此外,编写程序的严谨思想也令我深深地感受一丝不苟地工作的重要性。八、附录LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMIParam){hdcrectHDChdcrectPAINTSTRUCTRECTswitch(message){caseWM_CREATE:PlaySound(TEXT("123.wav"),NULL,SND_FILENAME|SND_ASYNC)return0;caseWM_PAINT:hdc=BeginPaint(hwnd,&ps);GetClientRect(hwnd,&rect);DrawText(hdc,TEXT("Hello,Windows7!”),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER)EndPaint(EndPaint(hwnd&ps)return0caseWMDESTROY:PostQuitMessagecaseWMDESTROY:PostQuitMessage(0)return0returnDefWindowProc(hwnd,message,wParam,lParamreturnDefWindowProc运行结果截图:■3TheHelloProgramHello,Windows7!上机实验报告II课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:02实验成绩:一、实验名称:绘制小船二、实验目的及要求掌握VS的使用了解程序窗口的设计熟悉图形设备接口、绘图和文字三、实验环境:VS2012四、实验内容绘制一艘小船,有颜色的帆船,标注船长,有坐标系。五、算法描述及实验步骤创建一个基于对话框的项目确定船的各点之间的坐标关系利用函数将船的坐标关系绘制出来填充颜色六、调试过程及实验结果起初画船身的时候,坐标没算好,船是奇形怪状的,后来经过研究确定了坐标,确定每个坐标点比较繁琐,花了比较多的时间,而且中间因为计算错误更改了很多次。各个图形建的顺序不清楚,也很奇怪,后来解决了。后来颜色也不会填,通过问别人和百度解决了。七、总结这次实验是图形的绘制,本次实验内容很多,既要打开文件读取数据,又要绘制坐标,轴,坐标刻度,还要对坐标进行转化,比较麻烦,将它们完美地融合在一起却不简单。这已经是第二个实验了,也学了编程的知识,虽然有的函数,代码我知道它是什么功能,我会用,但却不是很理解,将所学进行改编融合这方面我还是很欠缺的。这个程序虽然是写完了,结果也运行出来了,但我知道它是写的很糟糕的,类只是函数的堆砌,完全算不上真正的类,运行也存在很大的问题。刚开始编译时还有好多错误,多编译几次竟然就通过了,但是通过之后有时是弹出两个或多个打开文件的对话框,有时是一个,往往还伴随着黑屏。我想应该是数据读取的函数调用有问题,具体是什么原因还不是很清楚,明天上午再去请教同学吧。八、附录LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMIParam){staticTCHARszBuffer[8]=TEXT("船有20米长。”);TEXTMETRICtm;staticintcxChar,cyChar;staticPOINTBoatFigure[4]staticintcxClient,cyClient;HDChdc;inti,j;PAINTSTRUCTps;POINTBoat[4];staticintCloudFigure[12][4];intCloud[12][4];staticPOINTPoleFigure[4];POINTPole[4];staticPOINTFlagFigure[3];POINTFlag[3];staticintBubbleFigure[3][4]intBubble[3][4];staticPOINTArrowFigure[4][3];POINTArrow[4][3];HBRUSHhOrangeBrush,hBlueBrush,hBrownBrush,hRedBrush;switch(message){caseWM_SIZE:cxClient=LOWORD(lParam);cyClient=HIWORD(lParam);return0;//////////////////////////////////////////caseWM_PAINT:hdc=BeginPaint(hwnd,&ps);GetTextMetrics(hdc,&tm);cxChar=tm.tmAveCharWidth;cyChar=tm.tmHeight+tm.tmExternalLeading;SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,cxClient/2,cyClient/2,NULL);SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);for(i=0;i<4;i++){Boat[i].x=cxClient*BoatFigure[i].x/70;Boat[i].y=cyClient*BoatFigure[i].y/40;Pole[i].x=cxClient*PoleFigure[i].x/140;Pole[i].y=cyClient*PoleFigure[i].y/40;}for(i=0;i<3;i++){Flag[i].x=cxClient*FlagFigure[i].x/70;Flag[i].y=cyClient*FlagFigure[i].y/40;}for(i=0;i<3;i++){Bubble[i][0]=cxClient*BubbleFigure[i][0]/70;Bubble[i][1]=cyClient*BubbleFigure[i][1]/40;Bubble[i][2]=cxClient*BubbleFigure[i][2]/70;Bubble[i][3]=cyClient*BubbleFigure[i][3]/40;}for(i=0;i<12;i++){Cloud[i][0]=cxClient*CloudFigure[i][0]/70;Cloud[i][1]=cyClient*CloudFigure[i][1]/40;Cloud[i][2]=cxClient*CloudFigure[i][2]/70;Cloud[i][3]=cyClient*CloudFigure[i][3]/40;}for(i=0;i<4;i++)for(j=0;j<3;j++){Arrow[i][j].x=cxClient*ArrowFigure[i][j].x/140;Arrow[i][j].y=cyClient*ArrowFigure[i][j].y/80;}SelectObject(hdc,hBlueBrush);SetPolyFillMode(hdc,ALTERNATE);for(i=0;i<11;i++)Ellipse(hdc,Cloud[i][0],Cloud[i][1],Cloud[i][2],Cloud[i][3]);for(i=0;i<3;i++)Ellipse(hdc,Bubble[i][0],Bubble[i][1],Bubble[i][2],Bubble[i][3]);SelectObject(hdc,GetStockObject(NULL_PEN));Ellipse(hdc,Cloud[11][0],Cloud[11][1],Cloud[11][2],Cloud[11][3]);DeleteObject(hBlueBrush);SelectObject(hdc,hOrangeBrush);Polygon(hdc,Boat,4);DeleteObject(hOrangeBrush);SelectObject(hdc,hBrownBrush);Polygon(hdc,Pole,4);DeleteObject(hBrownBrush);SelectObject(hdc,hRedBrush);Polygon(hdc,Flag,3);DeleteObject(hRedBrush);SelectObject(hdc,GetStockObject(BLACK_BRUSH));for(i=0;i<4;i++)Polygon(hdc,Arrow[i],3);SelectObject(hdc,GetStockObject(BLACK_PEN));MoveToEx(hdc,cxClient*(-29)/70,0,NULL);LineTo(hdc,cxClient*24/70,0);MoveToEx(hdc,0,cyClient*18/40,NULL);LineTo(hdc,0,cyClient*(-16)/40);MoveToEx(hdc,cxClient*(-14)/70,cyClient*(-3)/40,NULL);LineTo(hdc,cxClient*(-14)/70,cyClient*(-19)/40);MoveToEx(hdc,cxClient*18/70,cyClient*(-3)/40,NULL);LineTo(hdc,cxClient*18/70,cyClient*(-19)/40);MoveToEx(hdc,cxClient*(-14)/70,cyClient*(-18)/40,NULL);LineTo(hdc,cxClient*18/70,cyClient*(-18)/40);SetTextColor(hdc,RGB(255,66,67));TextOut(hdc,-3*cxChar,cyClient*(-18)/40+cyChar,szBuffer,lstrlen(szBuffer));EndPaint(hwnd,&ps);return0;////////////////////////////caseWM_DESTROY:PostQuitMessage(0);return0;}returnDefWindowProc(hwnd,message,wParam,lParam);}运行结果截图:课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:03实验成绩:一、实验名称:重现基本文本编辑器二、实验目的及要求掌握VS的使用了解程序窗口的设计掌握本编辑器的基本函数调用三、实验环境:VS2012四、实验内容创建一个简单的程序窗口,并创建编辑类的子窗口,捕获光标位置后可以此输入文字——基本文本编辑框五、算法描述及实验步骤创建一个Win32的项目—给头文件添加一个新建项—定义主函数—在主函数中为实现操作添加必要函数(Loadicon;LoadCursor;GetStockObject;MessageBox;CreateWindow;CreateFont;GetTextMetrics;max;SendMessage等)六、调试过程及实验结果在写编辑类子窗口的代码时没有遇到太大的困难,不过在捕获鼠标的位置时花了比较多的时间,对照了书上的代码,借鉴了一个书配套光盘的已经写好的基本文本编辑器的代码,才把程序写好。七、总结小小一个鼠标捕获看似我们用得已经没有知觉的操作也是相当复杂的,这是我最深的感受。程序使用了等宽字体,如果使用变宽的话,太难了。八、附录LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMIParam){staticDWORDdwCharSet=DEFAULT_CHARSET;staticintcxChar,cyChar,cxClient,cyClient,cxBuffer,cyBuffer,xCaret,yCaret;staticTCHAR*pBuffer=NULL;TOC\o"1-5"\h\zHDChdc;intx,y,i;PAINTSTRUCTps;TEXTMETRICtm;switch(message){caseWM_INPUTLANGCHANGE:dwCharSet=wParam;//fallthroughcaseWM_CREATE:hdc=GetDC(hwnd);SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,dwCharSet,0,0,0,FIXED_PITCH,NULL));GetTextMetrics(hdc,&tm);cxChar=tm.tmAveCharWidth;cyChar=tm.tmHeight;DeleteObject(SelectObject(hdc,GetStockObject(SYSTEM_FONT)));ReleaseDC(hwnd,hdc);//fallthroughcaseWM_SIZE://obtainwindowsizeinpixelsif(.essage==WM_SIZE){cxClient=LOWORD(lParam);cyClient=HIWORD(lParam);}//calculatewindowsizeincharacterscxBuffer=max(1,cxClient/cxChar);cyBuffer=max(1,cyClient/cyChar);//allocatememoryforbufferandclearitif(pBuffer!=NULL)free(pBuffer);pBuffer=(TCHAR*)malloc(cxBuffer*cyBuffer*sizeof(TCHAR));for(y=0;y<cyBuffer;y++)for(x=0;x<cxBuffer;x++)BUFFER(x,y)='';//setcarettoupperleftcornerxCaret=0;yCaret=0;if(hwnd==GetFocus())SetCaretPos(xCaret*cxChar,yCaret*cyChar);InvalidateRect(hwnd,NULL,TRUE);return0;caseWM_SETFOCUS://createandshowthecaretCreateCaret(hwnd,NULL,cxChar,cyChar);SetCaretPos(xCaret*cxChar,yCaret*cyChar);ShowCaret(hwnd);return0;caseWM_KILLFOCUS://hideanddestroythecaretHideCaret(hwnd);DestroyCaret();return0;caseWM_KEYDOWN:switch(wParam){caseVK_HOME:xCaret=0;break;caseVK_END:xCaret=cxBuffer-1;break;caseVK_PRIOR:yCaret=0;break;caseVK_NEXT:yCaret=cyBuffer-1;break;caseVK_LEFT:xCaret=max(xCaret-1,0);break;caseVK_RIGHT:xCaret=min(xCaret+1,cxBuffer-1);break;caseVK_UP:yCaret=max(yCaret-1,0);break;caseVKDOWN:

yCaret=min(yCaret+1,cyBuffer-1);break;caseVK_DELETE:for(x=xCaret;x<cxBuffer-1;x++)BUFFER(x,yCaret)=BUFFER(x+1,yCaret);BUFFER(cxBuffer-1,yCaret)='';HideCaret(hwnd);hdc=GetDC(hwnd);SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,dwCharSet,0,0,0,FIXED_PITCH,NULL));TextOut(hdc,xCaret*cxChar,yCaret*cyChar,&BUFFER(xCaret,yCaret),cxBuffer-xCaret);DeleteObject(SelectObject(hdc,GetStockObject(SYSTEM_FONT)))ReleaseDC(hwnd,hdc);ShowCaret(hwnd);break;}SetCaretPos(xCaret*cxChar,yCaret*cyChar);return0;caseWMCHAR:(lParam);i++)for(i=0;i<(int)LOWORDswitch(wParam)xCaret=0;case'\b':if(xCaret>0)//backspacexCaret--SendMessage(hwndWM_KEYDOWN,VK_DELETE,1)breakcase'\t'://tabdoSendMessage(hwndWM_CHAR,'',1)casewhile(xCaret%8!=0)break'\n':if(++yCaret==cyBuffer)//linefeedyCaret=0breakcase'\r'://carriagereturnif(++yCaret==cyBuffer)yCaret=0;break;case'\x1B'://escapefor(y=0;y<cyBuffer;y++)for(x=0;x<cxBuffer;x++)BUFFER(x,y)='';xCaret=0;yCaret=0;InvalidateRect(hwnd,NULL,FALSE);break;default://charactercodesBUFFER(xCaret,yCaret)=(TCHAR)wParam;HideCaret(hwnd);(lParam);i++)case'\b':if(xCaret>0)//backspacexCaret--SendMessage(hwndWM_KEYDOWN,VK_DELETE,1)breakcase'\t'://tabdoSendMessage(hwndWM_CHAR,'',1)casewhile(xCaret%8!=0)break'\n':if(++yCaret==cyBuffer)//linefeedyCaret=0breakcase'\r'://carriagereturnSelectObject(hdc,GetStockObject(SYSTEM_FONT)))ReleaseDC(hwnd,hdc);ShowCaret(hwnd);if(++xCaret==cxBuffer){xCaret=0;if(++yCaret==cyBuffer)yCaret=0;}break;}}SetCaretPos(xCaret*cxChar,yCaret*cyChar);return0;caseWM_PAINT:hdc=BeginPaint(hwnd,&ps);SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,dwCharSet,0,0,0,FIXED_PITCH,NULL))for(y=0;y<cyBuffer;y++)TextOut(hdc,0,y*cyChar,&BUFFER(0,y),cxBuffer);DeleteObject(SelectObject(hdc,GetStockObject(SYSTEM_FONT)))EndPaint(hwnd,&ps);

上机实验报告IV课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:04实验成绩:一、实验名称:重现基本调色板二、实验目的及要求掌握VS的使用了解程序窗口的设计了解系统颜色设置函数使用三、实验环境:VS2012四、实验内容创建一个简单的程序窗口,上面具有调色板功能的各种按扭(可适当简单化)五、算法描述及实验步骤(1)移动滚动条模块主要是可以通过移动滚动条改变RGB的值来实现想要得到的颜色。⑵输入比例值模块主要是可以通过输入比例值改变RGB的值来实现想要得到的颜色。(3)选取图片模块主要是可以选取图片,点击图片的某个位置会返回点击图片位置的颜色和RGB值。(4)记录刚才调制好的颜色六、调试过程及实验结果。刚开始对整体的设计没有想法,后来由于自己能力有限,所以设置个拖动条的用来改变颜色,虽然对Windows程序还是不理解,但是勉强接受了它的想法。拖动条运动时对于颜色的调整有问题,不知道怎么实现,后来进过复杂的过程,成功地运行了七、总结通过这次程序设计让我对vs有了进一步的了解。通过慢慢学习,查阅课本,不断的练习操作,让我进一步掌握所学过的知识。通过这次设计让我得到了很多锻炼,比如:如何去查阅自己所需要的资料,如何去解决所遇到的问题。让我的能力得到了进一步的提升。八、附录LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMIParam)staticCOLORREFcrPrim[3]=(RGB(255,0,0),RGB(0,255,0),RGB(0,0,255)};staticHBRUSHhBrush[3],hBrushStaticstaticHWNDhwndScroll[3],hwndLabel[3],hwndValue[3],hwndRect;staticintcolor[3],cyChar;staticRECTrcColor;staticTCHAR*szColorLabel[]=(TEXT("Red"),TEXT("Green"),TEXT("Blue")};HINSTANCEhInstance;inti,cxClient,cyClient;TCHARszBuffer[10];switch(message){caseWM_CREATE:hInstance=(HINSTANCE)GetWindowLong(hwn(,GWL_HINSTANCE);hwndRect=CreateWindow(TEXT("static"),NULLWS_CHILD|WS_VISIBLE|SS_WHITERECT,0,0,0,0,hwnd,(HMENU)9,hInstance,NULL);for(i=0;i<3;i++){hwndScroll[i]=CreateWindow(TEXT("scrollbar"),NULLWS_CHILD|WS_VISIBLE|WS_TABSTOP|SBS_VERT,0,0,0,0,hwnd,(HMENU)i,hInstance,NULL)SetScrollRange(hwndScroll[i],SB_CTL,0,255,FALSE);SetScrollPos(hwndScroll[i],SB_CTL,0,FALSE);hwndLabel[i]=CreateWindow(TEXT("static"),szColorLabel[i],WS_CHILD|WS_VISIBLE|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+3),hInstance,NULL);hwndValue[i]=CreateWindow(TEXT("static"),TEXT("0"),WS_CHILD|WS_VISIBLE|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+6),hInstance,NULL);OldScroll[i]=(WNDPROC)SetWindowLong(hwndScroll[i],GWLWNDPROC,(LONG)ScrollProc);hBrush[i]=CreateSolidBrush(crPrim[i]);}hBrushStatic=CreateSolidBrush(GetSysColor(COLOR_BTNHIGHLIGHT));cyChar=HIWORD(GetDialogBaseUnits());return0;caseWM_SIZE:cxClient=LOWORD(lParam);cyClient=HIWORD(lParam);SetRect(&rcColor,cxClient/2,0,cxClient,cyClient);MoveWindow(hwndRect,0,0,cxClient/2,cyClient,TRUE);for(i=0;i<3;i++){MoveWindow(hwndScroll[i],(2*i+1)*cxClient/14,2*cyChar,cxClient/14,cyClient-4*cyChar,TRUE)MoveWindow(hwndLabel[i],(4*i+1)*cxClient/28,cyChar/2,cxClient/7,cyChar,TRUE);MoveWindow(hwndValue[i],(4*i+1)*cxClient/28,cyClient-3*cyChar/2,cxClient/7,cyChar,TRUE);}SetFocus(hwnd);return0;caseWM_SETFOCUS:SetFocus(hwndScroll[idFocus]);return0;caseWM_VSCROLL:i=GetWindowLong((HWND)lParam,GWL_ID);switch(LOWORD(wParam)){caseSB_PAGEDOWN:color[i]+=15;caseSB_LINEDOWN:color[i]=min(255,color[i]+1);break;caseSB_PAGEUP:color[i]-=15;caseSB_LINEUP:color[i]=max(0,color[i]-1);break;caseSBTOP:color[i]=0;break;caseSB_BOTTOM:color[i]=255;break;caseSB_THUMBPOSITION:caseSB_THUMBTRACK:color[i]=HIWORD(wParam);break;default:break;}SetScrollPos(hwndScroll[i],SB_CTL,color[i],TRUE);wsprintf(szBuffer,TEXT("%i"),color[i]);SetWindowText(hwndValue[i],szBuffer);DeleteObject((HBRUSH)SetClassLong(iwnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(RGB(color[0],color[1],color[2]))));InvalidateRect(hwnd,&rcColor,TRUE);return0;caseWM_CTLCOLORSCROLLBAR:i=GetWindowLong((HWND)lParam,GWL_ID);return(LRESULT)hBrush[i];caseWM_CTLCOLORSTATIC:i=GetWindowLong((HWND)lParam,GWL_ID);if(i>=3&&i<=8)//statictextcontrols{SetTextColor((HDC)wParam,crPrim[i%3]);SetBkColor((HDC)wParai,GetSysColor(COLOR_BTNHIGHLIGHT));return(LRESULT)hBrushStatic;}break;caseWM_SYSCOLORCHANGE:DeleteObject(hBrushStatic);hBrushStatic=CreateSolidBrush(GetSysColor(COLOR_BTNHIGHLIGHT))return0;caseWM_DESTROY:DeleteObject((HBRUSH)SetClassLong(iwnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(WHITE_BRUSH)));for(i=0;i<3;i++)DeleteObject(hBrush[i]);DeleteObject(hBrushStatic);PostQuitMessage(0);return0;returnDefWindowProc(hwnd,message,wParam,IParam);LRESULTCALLBACKScrollProc(HWNDhwnd,UINTmessageWPARAMwParam,LPARAMlParam)intid=GetWindowLong(hwn,GWL_ID);switch(message)caseWM_KEYDOWN:if(Param==VK_TAB)SetFocus(GetDlgItem(GetParent(hwnd),(id+(GetKeyState(VK_SHIFT)<0?2:1))%3));break;caseWM_SETFOCUS:idFocus=id;break;}returnCallWindowProc(OldScroll[id],hwnd,message,wParam,lParam);运行结果截图:上机实验报告V课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:05实验成绩:一、实验名称:实现简单屏幕截取二、实验目的及要求掌握VS的使用了解程序窗口的设计掌握关于截取的相关函数调用三、实验环境:VS2012四、实验内容实现简单屏幕截取程序1.能截取桌面背景五、算法描述及实验步骤创建一个基于对话框的项目用代码实现getdc把窗口的dc得到然后画出来六、调试过程及实验结果在别人的指点下才解决七、总结对代码编写还不够熟悉,导致程序运行经常出错,还需要努力。通过本次实验,我掌握了完成一些特定的功能,为今后的学习奠定了基础。八、附录intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstancePSTRszCmdLine,intiCmdShow){HWNDhwnd;MSGmsg;WNDCLASSwndclass;HMENUhMenu;hMenu=LoadMenu(lInstanc,MAKEINTRESOURCE(IDR_MENU1));wndclass.style=CS_HREDRAW|CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName=szAppName;wndclass.lpszClassName=szAppName;if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT("ThisprogramrequiresWindowsNT!”),szAppName,MB_ICONERROR);return0;}hwnd=CreateWindow(szAppName,TEXT("Desktop"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,hMenu,hInstance,NULL);/*hMenu=CreateMenu();hMenuPopup=CreateMenu();AppendMenu(hMenuPopup,MF_STRING,IDM_SHOW_NORMAL,TEXT("NORMAL"));AppendMenu(hMenuPopup,MF_STRING,IDM_SHOW_REVERSE,TEXT("REVERSE"));AppendMenu(hMenu,MF_POPUP,(UINT_PTR)hMenuPopup,TEXT("SHOW"));*/ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}returnmsg.wParam;}LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMIParam){staticintcxClient,cyClient,cxSource,cySource;HDChdcClient,hdcWindow;PAINTSTRUCTps;HMENUhMenu;staticBOOLstretched=TRUE,iscxClientlong=TRUE;staticintiSelection=ID_40001,iSelection2=ID_40007;switch(message){caseWM_COMMAND:hMenu=GetMenu(hwnd);switch(LOWORD(wParam)){caseID_40001:CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);iSelection=LOWORD(wParam);CheckMenuItem(hMenu,iSelection,MF_CHECKED);iCurrent=0;InvalidateRect(hwnd,NULL,TRUE);return0;caseID_40002:CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);iSelection=LOWORD(wParam);CheckMenuItem(hMenu,iSelection,MF_CHECKED);iCurrent=1;InvalidateRect(hwnd,NULL,TRUE);return0;caseID_40003:CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);iSelection=LOWORD(wParam);CheckMenuItem(hMenu,iSelection,MF_CHECKED);iCurrent=2;InvalidateRect(hwnd,NULL,TRUE);return0;caseID_40004:CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);iSelection=LOWORD(wParam);CheckMenuItem(hMenu,iSelection,MF_CHECKED);iCurrent=3;InvalidateRect(hwnd,NULL,TRUE);return0;caseID_40007:CheckMenuItem(hMenu,iSelection2,MF_UNCHECKED);iSelection2=LOWORD(wParam);CheckMenuItem(hMenu,iSelection2,MF_CHECKED);stretched=TRUE;InvalidateRect(hwnd,NULL,TRUE);return0;caseID_40008:CheckMenuItem(hMenu,iS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论