Windows程序设计_第1页
Windows程序设计_第2页
Windows程序设计_第3页
Windows程序设计_第4页
Windows程序设计_第5页
已阅读5页,还剩62页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

WINDOWS程序设计实验教学大纲实验学时32学时实验个数11实验学分1课程性质(必做)适用专业计算机科学与技术、软件工程、网络工程教材及参考书VISUALC面向对象与可视化程序设计教程(第三版)大纲执笔人冯朝胜大纲审定人郭涛一、实验课的性质与任务本课程实验大纲是面向计算机相关专业学生开设的WINDOWS程序设计(以VC为开发环境)实验课计划指导大纲,是依据WINDOWS程序设计课程教学计划指导大纲编制。本课程主要讲述了利用WINDOWSAPI函数和MFC进行简单的WINDOWS程序开发的基本流程,结合该课程教学计划大纲的相应内容,设计了10个单项实验和综合实验,力求提高学生的动手能力,做到理论和实践相结合。使学生在实验过程中掌握WINDOWS程序设计的思想、原理,能使用SDK和MFC实现基于窗口的程序设计。二、实验课程目的与要求1实验目的WINDOWS程序设计实验课的开设,是为了使学生更好地理解和掌握运用VC开发环境开发WINDOWS程序设计的基本理论、基本方法和基本技术,强化程序设计能力。2实验要求1在实验中,要求学生个人独立思考,设计算法流程,编写出程序,完成上机调试,最后给出实验报告。2本课程的学习过程是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,符合软件工程的规范;A3在实验中更好地理解和掌握VC程序设计这门课程中所学的基本理论和方法,强化程序设计能力。三、实验项目及内容提要WINDOWS程序设计实验课程(1106844037)实验类型序号实验项目编号实验名称学时必做选做学分数基本操作验证综合设计内容提要11VISUALC60开发环境实验2熟悉VISUALC60开发环境22WINDOWS应用程序基本框架实验2WINDOWS框架程序设计33WINDOWS绘图试验4GDI绘图44文本的输出方法与字体设置实验2GDI文字输出55键盘消息的响应实验2基本键盘消息响应66鼠标消息的响应实验2基本鼠标消息响应77资源在WINDOWS编程中的应用实验4资源编程88控件API编程4控件编程99在MFC中创建应用程序资源2利用MFC创建资源1010单文档与多文档2文档编程1111综合性实验6数据库编程四、实验内容安排实验一VISUALC60开发环境实验(验证性实验2学时)1、目的要求了解VISUALC60的特点,熟悉VISUALC60的开发环境。2、实验内容了解和熟悉开发环境,对各种菜单功能,工程文件管理和MSDN帮助功能有完整的了解。3、主要仪器设备及药品WINDOWS2000VC60MSDN实验二WINDOWS应用程序基本框架实验(验证性实验2学时)1、目的要求编写第一个WINDOWS程序,理解入口函数WINMAIN和窗口函数WINPROC,掌握消息驱动机制。2、实验内容使用WIN32APPLICATION模板建立一个WIN32工程,编写一个包含WINMAIN,WINPROC的基本WINDOWS程序,并编译、运行,观察结果。INCLUDE“STDAFXH“INCLUDE“RESOURCEH“DEFINEMAX_LOADSTRING100/GLOBALVARIABLESHINSTANCEHINST/CURRENTINSTANCETCHARSZTITLEMAX_LOADSTRING/THETITLEBARTEXTTCHARSZWINDOWCLASSMAX_LOADSTRING/THETITLEBARTEXT/FOWARDDECLARATIONSOFFUNCTIONSINCLUDEDINTHISCODEMODULEATOMMYREGISTERCLASSHINSTANCEHINSTANCEBOOLINITINSTANCEHINSTANCE,INTLRESULTCALLBACKWNDPROCHWND,UINT,WPARAM,LPARAMLRESULTCALLBACKABOUTHWND,UINT,WPARAM,LPARAMINTAPIENTRYWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINSTANCE,LPSTRLPCMDLINE,INTNCMDSHOW/TODOPLACECODEHEREMSGMSGHACCELHACCELTABLE/INITIALIZEGLOBALSTRINGSLOADSTRINGHINSTANCE,IDS_APP_TITLE,SZTITLE,MAX_LOADSTRINGLOADSTRINGHINSTANCE,IDC_SDK,SZWINDOWCLASS,MAX_LOADSTRINGMYREGISTERCLASSHINSTANCE/PERFORMAPPLICATIONINITIALIZATIONIFINITINSTANCEHINSTANCE,NCMDSHOWRETURNFALSEHACCELTABLELOADACCELERATORSHINSTANCE,LPCTSTRIDC_SDK/MAINMESSAGELOOPWHILEGETMESSAGEDISPATCHMESSAGERETURNMSGWPARAMATOMMYREGISTERCLASSHINSTANCEHINSTANCEWNDCLASSEXWCEXWCEXCBSIZESIZEOFWNDCLASSEXWCEXSTYLECS_HREDRAW|CS_VREDRAWWCEXLPFNWNDPROCWNDPROCWNDPROCWCEXCBCLSEXTRA0WCEXCBWNDEXTRA0WCEXHINSTANCEHINSTANCEWCEXHICONLOADICONHINSTANCE,LPCTSTRIDI_SDKWCEXHCURSORLOADCURSORNULL,IDC_ARROWWCEXHBRBACKGROUNDHBRUSHCOLOR_WINDOW1WCEXLPSZMENUNAMELPCSTRIDC_SDKWCEXLPSZCLASSNAMESZWINDOWCLASSWCEXHICONSMLOADICONWCEXHINSTANCE,LPCTSTRIDI_SMALLRETURNREGISTERCLASSEX/FUNCTIONINITINSTANCEHANDLE,INT/PURPOSESAVESINSTANCEHANDLEANDCREATESMAINWINDOW/COMMENTS/INTHISFUNCTION,WESAVETHEINSTANCEHANDLEINAGLOBALVARIABLEAND/CREATEANDDISPLAYTHEMAINPROGRAMWINDOW/BOOLINITINSTANCEHINSTANCEHINSTANCE,INTNCMDSHOWHWNDHWNDHINSTHINSTANCE/STOREINSTANCEHANDLEINOURGLOBALVARIABLEHWNDCREATEWINDOWSZWINDOWCLASS,SZTITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,HINSTANCE,NULLIFHWNDRETURNFALSESHOWWINDOWHWND,NCMDSHOWUPDATEWINDOWHWNDRETURNTRUELRESULTCALLBACKWNDPROCHWNDHWND,UINTMESSAGE,WPARAMWPARAM,LPARAMLPARAMINTWMID,WMEVENTPAINTSTRUCTPSHDCHDCTCHARSZHELLOMAX_LOADSTRINGLOADSTRINGHINST,IDS_HELLO,SZHELLO,MAX_LOADSTRINGSWITCHMESSAGECASEWM_COMMANDWMIDLOWORDWPARAMWMEVENTHIWORDWPARAM/PARSETHEMENUSELECTIONSSWITCHWMIDCASEIDM_ABOUTDIALOGBOXHINST,LPCTSTRIDD_ABOUTBOX,HWND,DLGPROCABOUTBREAKCASEIDM_EXITDESTROYWINDOWHWNDBREAKDEFAULTRETURNDEFWINDOWPROCHWND,MESSAGE,WPARAM,LPARAMBREAKCASEWM_PAINTHDCBEGINPAINTHWND,RECTRTGETCLIENTRECTHWND,DRAWTEXTHDC,“你好“,STRLEN“你好“,ENDPAINTHWND,BREAKCASEWM_DESTROYPOSTQUITMESSAGE0BREAKDEFAULTRETURNDEFWINDOWPROCHWND,MESSAGE,WPARAM,LPARAMRETURN0/MESAGEHANDLERFORABOUTBOXLRESULTCALLBACKABOUTHWNDHDLG,UINTMESSAGE,WPARAMWPARAM,LPARAMLPARAMSWITCHMESSAGECASEWM_INITDIALOGRETURNTRUECASEWM_COMMANDIFLOWORDWPARAMIDOK|LOWORDWPARAMIDCANCELENDDIALOGHDLG,LOWORDWPARAMRETURNTRUEBREAKRETURNFALSE3、主要仪器设备及药品WINDOWS2000VC60MSDN实验三WINDOWS绘图试验(验证性实验4学时)1、目的要求理解DC概念,掌握坐标映射的设置方法,熟悉WINDOWS绘图的基本方法和函数。2、实验内容运用WINDOWS提供的GDI函数,完成窗口图形输出功能。1)将窗口划分为5个区域,并用白色到黑色线性变化的颜色填充这5个区域,画一条斜线穿过这5个区域;INCLUDEINCLUDEINCLUDEINCLUDELRESULTCALLBACKWNDPROCHWND,UINT,WPARAM,LPARAMINTWINAPIWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINST,LPSTRLPSZCMDLINE,INTNCMDSHOWHWNDHWNDMSGMSGWNDCLASSWNDCLASSCHARLPSZCLASSNAME“QWER“CHARLPSZTITLE“MY_DRAWING“WNDCLASSSTYLE0WNDCLASSLPFNWNDPROCWNDPROCWNDCLASSCBCLSEXTRA0WNDCLASSCBWNDEXTRA0WNDCLASSHINSTANCEHINSTANCEWNDCLASSHICONLOADICONNULL,IDI_APPLICATIONWNDCLASSHCURSORLOADCURSORNULL,IDC_ARROWWNDCLASSHBRBACKGROUNDHBRUSHGETSTOCKOBJECTWHITE_BRUSHWNDCLASSLPSZMENUNAMENULLWNDCLASSLPSZCLASSNAMELPSZCLASSNAMEIFREGISTERCLASSRETURNFALSEHWNDCREATEWINDOWLPSZCLASSNAME,LPSZTITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,HINSTANCE,NULLSHOWWINDOWHWND,NCMDSHOWUPDATEWINDOWHWNDWHILEGETMESSAGEDISPATCHMESSAGERETURNMSGWPARAMLRESULTCALLBACKWNDPROCHWNDHWND,UINTMESSAGE,WPARAMWPARAM,LPARAMLPARAMHDCHDCPAINTSTRUCTPSHPENHPHBRUSHHBSWITCHMESSAGECASEWM_PAINTHDCBEGINPAINTHWND,SETMAPMODEHDC,MM_TEXTHBHBRUSHGETSTOCKOBJECTWHITE_BRUSHSELECTOBJECTHDC,HBRECTANGLEHDC,0,0,100,400HBHBRUSHGETSTOCKOBJECTLTGRAY_BRUSHSELECTOBJECTHDC,HBRECTANGLEHDC,100,0,200,400HBHBRUSHGETSTOCKOBJECTGRAY_BRUSHSELECTOBJECTHDC,HBRECTANGLEHDC,200,0,300,400HBHBRUSHGETSTOCKOBJECTDKGRAY_BRUSHSELECTOBJECTHDC,HBRECTANGLEHDC,300,0,400,400HBHBRUSHGETSTOCKOBJECTBLACK_BRUSHSELECTOBJECTHDC,HBRECTANGLEHDC,400,0,500,400HPCREATEPENPS_SOLID,50,RGB255,255,255SELECTOBJECTHDC,HPMOVETOEXHDC,450,300,NULLLINETOHDC,50,150ENDPAINTHWND,DELETEOBJECTHPDELETEOBJECTHBBREAKCASEWM_DESTROYPOSTQUITMESSAGE0BREAKDEFAULTRETURNDEFWINDOWPROCHWND,MESSAGE,WPARAM,LPARAMRETURN02)编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时,圆的半径在四分之一周期之内由正弦曲线幅值的02倍至06倍线性增长。INCLUDEINCLUDEINCLUDEINCLUDEDEFINEPI31415926LONGWINAPIWNDPROCHWNDHWND,UINTIMESSAGE,UINTWPARAM,LONGLPARAMDOUBLEDFTHETA0,DFRANGE1000LONGI0,J0LONGLCENTREX0,LCENTREY0,LRADIOUSLONG02DFRANGEPOINTLPSIN100INTWINAPIWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINST,LPSTRLPSZCMDLINE,INTNCMDSHOWHWNDHWNDMSGMESSAGEWNDCLASSWNDCLASSWNDCLASSCBCLSEXTRA0WNDCLASSCBWNDEXTRA0WNDCLASSHINSTANCEHINSTANCEWNDCLASSHCURSORLOADCURSORNULL,IDC_ARROWWNDCLASSLPSZMENUNAMENULL/WNDCLASSLPSZCLASSNAME“SIN“WNDCLASSHICONLOADICONNULL,IDI_APPLICATION/窗口的最小化图标为缺省图标WNDCLASSLPFNWNDPROCWNDPROC/定义窗口处理函数WNDCLASSSTYLE0IFREGISTERCLASS/显示窗口SHOWWINDOWHWND,NCMDSHOW/绘制用户区UPDATEWINDOWHWNDFORINTJ0JINCLUDEINCLUDEINCLUDEINTA0/函数提前声明BOOLINITWINDOWSCLASSHINSTANCEHINSTANCEBOOLINITWINDOWSHINSTANCEHINSTANCE,INTNCMDSHOWLONGWINAPIWNDPROCHWNDHWND,UINTIMESSAGE,UINTWPARAM,LONGLPARAMBOOLINITWINDOWSCLASSHINSTANCEHINSTANCE/初始化窗口类WNDCLASSWNDCLASSWNDCLASSCBCLSEXTRA0WNDCLASSCBWNDEXTRA0WNDCLASSHBRBACKGROUNDHBRUSHGETSTOCKOBJECTWHITE_BRUSHWNDCLASSHCURSORLOADCURSORNULL,IDC_ARROWWNDCLASSHICONLOADICONNULL,“END“WNDCLASSHINSTANCEHINSTANCEWNDCLASSLPSZCLASSNAME“WINFILL“WNDCLASSLPFNWNDPROCWNDPROCWNDCLASSLPSZMENUNAMENULLWNDCLASSSTYLECS_HREDRAW|CS_VREDRAWRETURNREGISTERCLASS/BOOLINITWINDOWSHINSTANCEHINSTANCE,INTNCMDSHOW/初始化窗口HWNDHWNDHWNDCREATEWINDOW“WINFILL“,“填充实例程序“,WS_OVERLAPPEDWINDOW,/窗口类型250,150,450,450,NULL,NULL,HINSTANCE,NULLIFHWNDRETURNFALSESHOWWINDOWHWND,NCMDSHOWUPDATEWINDOWHWNDRETURNTRUELONGWINAPIWNDPROCHWNDHWND,UINTIMESSAGE,UINTWPARAM,LONGLPARAMHDCHDC/设置环境句柄CHARSTR“ABCDEFGHIJKLMNOPQRSTUVWXYZ“INTI0STATICNPAINTSTRUCTPSTEXTMETRICTMINTLY50/初始坐标HFONTHF_BLACK,HF_BLUE/字体句柄SWITCHIMESSAGECASEWM_CREATESETTIMERHWND,1,300,NULLBREAKCASEWM_PAINTHDCBEGINPAINTHWND,GETTEXTMETRICSHDC,/获取默认句柄,写入TM结构中FORI0I键时,窗口中显示“YOUHADHITTEDTHESHIFTKEY”;单击键时,窗口中显示“YOUHADHITTEDTHECTRLKEY”;单击键时,窗口中显示“YOUHADHITTEDTHECTRLAKEY”;单击键时,窗口中显示“YOUHADHITTEDTHESHIFTBKEY”。LONGWINAPIWNDPROCHWNDHWND,UINTIMESSAGE,UINTWPARAM,LONGLPARAMHDCHDC/定义设备环境句柄PAINTSTRUCTPS/定义包含绘图信息的结构体变量HPENHPEN/定义画笔句柄。HBRUSHHBRUSH/定义画刷句柄/以下定义输出的字符串。STATICCHARCUP“YOUHADHITTEDTHEUPKEY“STATICCHARCCTRL“YOUHADHITTEDTHECTRLKEY“STATICCHARCSHIFT“YOUHADHITTEDTHESHIFTKEY“STATICCHARCCTRL_A“YOUHADHITTEDTHECTRLAKEY“STATICCHARCSHIFT_B“YOUHADHITTEDTHESHIFTBKEY“/下面定义并初始化按键标志变量。STATICBOOLNUPKEYDOWNFALSE,NSHIFTKEYDOWNFALSE,NCTRLKEYDOWNFALSE,NCTRLAKEYDOWNFALSE,NSHIFTBKEYDOWNFALSESWITCHIMESSAGECASEWM_KEYDOWNSWITCHWPARAMCASEVK_UP/当按上箭头键时,变量置为真。NUPKEYDOWNTRUEBREAKCASEVK_SHIFT/当按SHIFT键时,变量置为真。NSHIFTKEYDOWNTRUEBREAKCASEVK_CONTROL/当按CONTROL键时,变量置为真NCTRLKEYDOWNTRUEBREAKDEFAULTBREAKBREAKCASEWM_KEYUPINVALIDATERECTHWND,NULL,FALSEBREAKCASEWM_CHARIFWPARAM65NCTRLKEYDOWNFALSEELSEIFWPARAM98|WPARAM66/当按下B键时IFNSHIFTKEYDOWNTRUE/检查SHIFT键是否处于按下状态。NSHIFTBKEYDOWNTRUE/当SHIFT键按下时,变量置为真NSHIFTKEYDOWNFALSEBREAKCASEWM_PAINT/处理绘图消息HDCBEGINPAINTHWND,HBRUSHHBRUSHGETSTOCKOBJECTWHITE_BRUSH/创建白画刷。HPENHPENGETSTOCKOBJECTWHITE_PEN/创建白画笔。SELECTOBJECTHDC,HPEN/选入白画刷SELECTOBJECTHDC,HBRUSH/选入白画笔SETTEXTCOLORHDC,RGB255,0,0/设置字体颜色为红色。/输出信息。IFNUPKEYDOWNTRUERECTANGLEHDC,0,0,300,200TEXTOUTHDC,0,0,CUP,STRLENCUPNUPKEYDOWNFALSEELSEIFNCTRLAKEYDOWNTRUERECTANGLEHDC,0,0,300,200TEXTOUTHDC,0,100,CCTRL_A,STRLENCCTRL_ANCTRLAKEYDOWNFALSENCTRLKEYDOWNFALSEELSEIFNCTRLAKEYDOWNTRUEELSEIFNCTRLKEYDOWNTRUETEXTOUTHDC,0,60,CCTRL,STRLENCCTRLNCTRLKEYDOWNFALSEELSEIFNSHIFTBKEYDOWNTRUERECTANGLEHDC,0,0,300,200TEXTOUTHDC,0,0,CSHIFT_B,STRLENCSHIFT_BNSHIFTBKEYDOWNFALSENSHIFTKEYDOWNFALSEELSEIFNSHIFTBKEYDOWNFALSETEXTOUTHDC,0,0,CSHIFT,STRLENCSHIFTNSHIFTKEYDOWNFALSEELSE/删除画笔和画刷DELETEOBJECTHPENDELETEOBJECTHBRUSHENDPAINTHWND,BREAKCASEWM_DESTROYPOSTQUITMESSAGE0RETURN0DEFAULTRETURNDEFWINDOWPROCHWND,IMESSAGE,WPARAM,LPARAMRETURN02)编写一个键盘消息处理程序,单击一个按键后,在窗口依次显示出按键消息,参数WPARAM的值;若为字符消息还要显示相应得字符;重复计位数;OEM扫描码;扩展按键标志;ALT按下状态;按键的先前状态;转换状态。测试依次按下CTRL,SHIFT,ALT,A,B,“向上箭头键”,“向右箭头键”和CTRLINCLUDEINCLUDE/全局变量RECTRC/记录滚屏的矩形区域INTXCHAR,YCHAR/文本输入点坐标WNDCLASSEXWND/窗口类结构变量CHARSZAPPNAME“键盘消息监视程序“/窗口类名/函数声明LRESULTCALLBACKWNDPROCHWND,UINT,WPARAM,LPARAMBOOLMYREGISTERCLASSHINSTANCEHINSTANCEBOOLINITINSTANCEHINSTANCEHINSTANCE,INTICMDSHOW/函数WINMAIN/作用入口函数INTWINAPIWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINSTANCE,LPSTRSZCMDLINE,INTICMDSHOWMSGMSGIFMYREGISTERCLASSHINSTANCERETURNFALSEIFINITINSTANCEHINSTANCE,ICMDSHOWRETURNFALSEWHILEGETMESSAGEDISPATCHMESSAGERETURNMSGWPARAM/函数SHOWKEY/作用实现在窗口中显示按键信息VOIDSHOWKEYHWNDHWND,INTITYPE,CHARSZMESSAGE,WPARAMWPARAM,LPARAMLPARAMSTATICCHARSZFORMAT2“14S3DC6U4D5S5S6S6S“,“14S3DC6U4D5S5S6S6S“CHARSZBUFFER80HDCHDCSCROLLWINDOWEXHWND,0,YCHAR,HDCGETDCHWNDSELECTOBJECTHDC,GETSTOCKOBJECTSYSTEM_FIXED_FONTTEXTOUTHDC,XCHAR,RCBOTTOMYCHAR,SZBUFFER,WSPRINTFSZBUFFER,SZFORMATITYPE,SZMESSAGE,/消息WPARAM,/虚拟键代码BYTEITYPEWPARAM,/显示字符值LOWORDLPARAM,/重复次数HIWORDLPARAMRELEASEDCHWND,HDCVALIDATERECTHWND,NULL/函数WNDPROC/作用处理主窗口的消息LRESULTCALLBACKWNDPROCHWNDHWND,UINTIMSG,WPARAMWPARAM,LPARAMLPARAMSTATICCHARSZTOP“消息键字符重复数扫描码扩展码ALT前一状态转换状态“STATICCHARSZUND“_“/在窗口中输出文字作为信息标题HDCHDCPAINTSTRUCTPSTEXTMETRICTMSWITCHIMSGCASEWM_CREATE/处理窗口创建的消息HDCGETDCHWND/设定字体SELECTOBJECTHDC,GETSTOCKOBJECTSYSTEM_FIXED_FONT/检取当前字体的度量数据GETTEXTMETRICSHDC,XCHARTMTMAVECHARWIDTH/保存字体平均宽度YCHARTMTMHEIGHT/保存字体高度RELEASEDCHWND,HDCRCTOP3YCHAR/2RETURN0CASEWM_SIZE/处理窗口大小改变的消息/窗体改变后保存新的滚屏区域右下角坐标RCRIGHTLOWORDLPARAMRCBOTTOMHIWORDLPARAMUPDATEWINDOWHWNDRETURN0CASEWM_PAINT/处理窗口重绘消息INVALIDATERECTHWND,NULL,TRUEHDCBEGINPAINTHWND,SELECTOBJECTHDC,GETSTOCKOBJECTSYSTEM_FIXED_FONTSETBKMODEHDC,TRANSPARENTTEXTOUTHDC,XCHAR,YCHAR/2,SZTOP,SIZEOFSZTOP1TEXTOUTHDC,XCHAR,YCHAR/2,SZUND,SIZEOFSZUND1ENDPAINTHWND,RETURN0CASEWM_KEYDOWN/处理键盘上某一键按下的消息SHOWKEYHWND,0,“WM_KEYDOWN“,WPARAM,LPARAMRETURN0CASEWM_KEYUP/处理键盘上某一按下键被释放的消息SHOWKEYHWND,0,“WM_KEYUP“,WPARAM,LPARAMRETURN0CASEWM_CHAR/处理击键过程中产生的非系统键的可见字符消息HOWKEYHWND,1,“WM_CHAR“,WPARAM,LPARAMRETURN0CASEWM_DEADCHAR/处理击键过程中产生的非系统键“死字符“消息SHOWKEYHWND,1,“WM_DEADCHAR“,WPARAM,LPARAMRETURN0CASEWM_SYSKEYDOWN/处理系统键按下的消息SHOWKEYHWND,0,“WM_SYSKEYDOWN“,WPARAM,LPARAMBREAKCASEWM_SYSKEYUP/处理系统键抬起的消息SHOWKEYHWND,0,“WM_SYSKEYUP“,WPARAM,LPARAMBREAKCASEWM_SYSCHAR/处理系统键可见字符消息SHOWKEYHWND,1,“WM_SYSCHAR“,WPARAM,LPARAMBREAKCASEWM_SYSDEADCHAR/处理系统键“死字符“消息SHOWKEYHWND,1,“WM_SYSDEADCHAR“,WPARAM,LPARAMBREAKCASEWM_DESTROY/处理结束应用程序的消息POSTQUITMESSAGE0RETURN0RETURNDEFWINDOWPROCHWND,IMSG,WPARAM,LPARAM/函数MYREGISTERCLASS/作用注册窗口类BOOLMYREGISTERCLASSHINSTANCEHINSTANCEWNDCBSIZESIZEOFWNDWNDSTYLECS_HREDRAW|CS_VREDRAWWNDLPFNWNDPROCWNDPROCWNDCBCLSEXTRA0WNDCBWNDEXTRA0WNDHINSTANCEHINSTANCEWNDHICONLOADICONNULL,IDI_APPLICATIONWNDHCURSORLOADCURSORNULL,IDC_ARROWWNDHBRBACKGROUNDHBRUSHGETSTOCKOBJECTWHITE_BRUSHWNDLPSZMENUNAMENULLWNDLPSZCLASSNAMESZAPPNAMEWNDHICONSMLOADICONNULL,IDI_APPLICATIONRETURNREGISTERCLASSEX/函数INITINSTANCE/作用创建主窗口BOOLINITINSTANCEHINSTANCEHINSTANCE,INTICMDSHOWHWNDHWNDHWNDCREATEWINDOWSZAPPNAME,“键盘消息监视程序“,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,HINSTANCE,NULLIFHWNDRETURNFALSESHOWWINDOWHWND,ICMDSHOWUPDATEWINDOWHWNDRETURNTRUE3、主要仪器设备及药品WINDOWS2000VC60MSDN实验六鼠标消息的响应实验(验证性实验2学时)1、目的要求理解WINDOWS程序响应鼠标操作的原理,熟悉鼠标消息的响应编程。2、实验内容1)用户在窗口的不同区域移动鼠标时,光标将显示如下图所标识的不同箭头的形状。如右图;INCLUDE“STDAFXH“INCLUDE“RESOURCEH“INCLUDEDEFINEMAX_LOADSTRING100/GLOBALVARIABLESHINSTANCEHINST/CURRENTINSTANCETCHARSZTITLEMAX_LOADSTRING/THETITLEBARTEXTTCHARSZWINDOWCLASSMAX_LOADSTRING/THETITLEBARTEXTATOMMYREGISTERCLASSHINSTANCEHINSTANCEBOOLINITINSTANCEHINSTANCE,INTLRESULTCALLBACKWNDPROCHWND,UINT,WPARAM,LPARAMLRESULTCALLBACKABOUTHWND,UINT,WPARAM,LPARAMINTAPIENTRYWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINSTANCE,LPSTRLPCMDLINE,INTNCMDSHOW/TODOPLACECODEHEREMSGMSGHACCELHACCELTABLE/INITIALIZEGLOBALSTRINGSLOADSTRINGHINSTANCE,IDS_APP_TITLE,SZTITLE,MAX_LOADSTRINGLOADSTRINGHINSTANCE,IDC_MY,SZWINDOWCLASS,MAX_LOADSTRINGMYREGISTERCLASSHINSTANCE/PERFORMAPPLICATIONINITIALIZATIONIFINITINSTANCEHINSTANCE,NCMDSHOWRETURNFALSEHACCELTABLELOADACCELERATORSHINSTANCE,LPCTSTRIDC_MY/MAINMESSAGELOOPWHILEGETMESSAGEDISPATCHMESSAGERETURNMSGWPARAMATOMMYREGISTERCLASSHINSTANCEHINSTANCEWNDCLASSEXWCEXWCEXCBSIZESIZEOFWNDCLASSEXWCEXSTYLECS_HREDRAW|CS_VREDRAWWCEXLPFNWNDPROCWNDPROCWNDPROCWCEXCBCLSEXTRA0WCEXCBWNDEXTRA0WCEXHINSTANCEHINSTANCEWCEXHICONLOADICONHINSTANCE,LPCTSTRIDI_MYWCEXHCURSORLOADCURSORNULL,IDC_ARROWWCEXHBRBACKGROUNDHBRUSHCOLOR_WINDOW1WCEXLPSZMENUNAMELPCSTRIDC_MYWCEXLPSZCLASSNAMESZWINDOWCLASSWCEXHICONSMLOADICONWCEXHINSTANCE,LPCTSTRIDI_SMALLRETURNREGISTERCLASSEXBOOLINITINSTANCEHINSTANCEHINSTANCE,INTNCMDSHOWHWNDHWNDHINSTHINSTANCE/STOREINSTANCEHANDLEINOURGLOBALVARIABLEHWNDCREATEWINDOWSZWINDOWCLASS,SZTITLE,WS_OVERLAPPEDWINDOW,50,50,450,450,NULL,NULL,HINSTANCE,NULLIFHWNDRETURNFALSESHOWWINDOWHWND,NCMDSHOWUPDATEWINDOWHWNDRETURNTRUELRESULTCALLBACKWNDPROCHWNDHWND,UINTMESSAGE,WPARAMWPARAM,LPARAMLPARAMPAINTSTRUCTPSHDCHDCTEXTMETRICTMHBRUSHHBRUSHHPENHPENHCURSORHCURSORCHARSTR15STATICINTX,YSWITCHMESSAGECASEWM_MOUSEMOVEXLOWORDLPARAMYHIWORDLPARAMIFX50/消息处理函数声明BOOLINITWINDOWSCLASSHINSTANCEHINSTANCE/初始化窗口类声明BOOLINITWINDOWSHINSTANCEHINSTANCE,INTNCMDSHOW/初始化窗口声明HWNDHWNDMAIN/定义全局窗口句柄RECTRECT1/定义矩形结构体记录了图形的信息INTWINAPIWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINSTANCE,LPSTRLPCMDLINE,INTNCMDSHOW/主函数MSGMESSAGEIFINITWINDOWSCLASSHINSTANCE/初始化窗口类RETURNFALSEIFINITWINDOWSHINSTANCE,NCMDSHOW/初始化窗口RETURNFALSEWHILEGETMESSAGE/消息循环DISPATCHMESSAGERETURNMESSAGEWPARAMLONGWINAPIWNDPROCHWNDHWND,UINTIMESSAGE,UINTWPARAM,LONGLPARAM/消息处理函数HDCHDC/定义设备环境句柄WORDX,Y/定义鼠标的位置坐标STATICBOOLBCIRCLEFALSE,BRECTFALSE/设置绘制圆和矩形的标志变量PAINTSTRUCTPS/定义绘图结构体变量XLOWORDLPARAM/得到鼠标的位置YHIWORDLPARAMSWITCHIMESSAGECASEWM_LBUTTONDOWN/处理按下鼠标左键消息IFWPARAM/画圆BRECTFALSERECT1LEFTX/圆的左上角坐标为当前鼠标位置RECT1TOPYELSEIFWPARAM/画矩形BCIRCLEFALSERECT1LEFTX/矩形的左上角坐标为当前鼠标位置RECT1TOPYELSEBRECTFALSEBCIRCLEFALSEBREAKCASEWM_LBUTTONUP/当松开左键时绘图标志为FALSEBRECTFALSEBCIRCLEFALSEBREAKCASEWM_MOUSEMOVE/处理鼠标移动信息RECT1RIGHTX/图形的右下角坐标为当前鼠标位置RECT1BOTTOMYIFBRECTTRUE|BCIRCLETRUEINVALIDATERECTHWND,NULL,TRUE/发出重绘信息BREAKCASEWM_PAINTHDCBEGINPAINTHWND,IFBCIRCLETRUE/绘制圆形ELLIPSEHDC,RECT1LEFT,RECT1TOP,RECT1RIGHT,RECT1BOTTOMIFBRECTTRUE/绘制矩形RECTANGLEHDC,RECT1LEFT,RECT1TOP,RECT1RIGHT,RECT1BOTTOMENDPAINTHWND,BREAKCASEWM_DESTROY/处理退出窗口信息POSTQUITMESSAGE0RETURN0DEFAULTRETURNDEFWINDOWPROCHWND,IMESSAGE,WPARAM,LPARAMRETURN0BOOLINITWINDOWSHINSTANCEHINSTANCE,INTNCMDSHOWHWNDHWNDHWNDCREATEWINDOW“6_4“,/窗口类名称“鼠标显示实例程序“,/标题栏名称WS_OVERLAPPEDWINDOW,/窗口样式有标题栏和最大最小化按钮CW_USEDEFAULT,/窗口左上角坐标0,CW_USEDEFAULT,/采用缺省的高度和宽度0,NULL,/无父窗口NULL,/无菜单HINSTANCE,/当前应用实例句柄NULL/指向传递给窗口的参数的指针不用IFHWND/创建失败RETURNFALSEHWNDMAINHWND/给全局窗口句柄付值SHOWWINDOWHWND,NCMDSHOW/显示窗口UPDATEWINDOWHWND/刷新用户区RETURNTRUEBOOLINITWINDOWSCLASSHINSTANCEHINSTANCEWNDCLASSWNDCLASSWNDCLASSCBCLSEXTRA0/无窗口类扩展WNDCLASSCBWNDEXTRA0/无窗口实例扩展WNDCLASSHBRBACKGROUNDHBRUSHGETSTOCKOBJECTWHITE_BRUSH/背景为白色WNDCLASSHCURSORLOADCURSORNULL,IDC_ARROW/光标为为箭头WNDCLASSHICONLOADICONNULL,IDI_APPLICATION/采用缺省图标WNDCLASSHINSTANCEHINSTANCE/当前实例WNDCLASSLPFNWNDPROCWNDPROC/消息处理函数WNDCLASSLPSZCLASSNAME“6_4“/窗口类名称WNDCLASSLPSZMENUNAMENULL/无菜单WNDCLASSSTYLE0/缺省窗口风格RETURNREGISTERCLASS/返回窗口注册值3、主要仪器设备及药品WINDOWS2000VC60MSDN实验七资源在WINDOWS编程中的应用(验证性实验4学时)1、目的要求理解WINDOWS资源编程模型,熟悉WINDOWS资源编程。2、实验内容创建一个窗口菜单的构架,1)单击“创建统计计算菜单项”动态地创建“统计计算”菜单,之后,“创建统计计算菜单项”变成不可操作,而原先不可操作的“删除统计计算菜单项”变成可操作,执行“删除统计计算菜单项”菜单命令删除“统计计算”菜单;INCLUDE“WINDOWSH“INCLUDE“7_1H“HMENUHMENU,HADDMENU/定义菜单句柄LRESULTCALLBACKWNDPROCHWND,UINT,WPARAM,LPARAMINTWINAPIWINMAINSHOWWINDOWHWND,NCMDSHOWUPDATEWINDOWHWNDHACCELLOADACCELERATORSHINSTANCE,LPSZMENUNAMEWHILEGETMESSAGEDISPATCHMESSAGERETURNMSGWPARAMLRESULTCALLBACKWNDPROCSWITCHMESSAGECASEWM_COMMANDSWITCHLOWORDWPARAMCASEIDM_ADDMENU/在主菜单中添加弹出式菜单HMENUGETMENUHWND/获取主菜单句柄HADDMENUCREATEMENU/动态创建菜单/在创建的菜单中增加菜单项APPENDMENUHADDMENU,MF_ENABLED,IDM_QIUHE,“求和“APPENDMENUHADDMENU,MF_ENABLED,IDM_FANGCHA,“方差”APPENDMENUHADDMENU,MF_ENABLED,IDM_PINJUNZHI,“平均值“APPENDMENUHADDMENU,MF_ENABLED,IDM_JUNFANGGEN,“均方根“/将创建的弹出式菜单插入主菜单中INSERTMENUHMENU,2,MF_POPUP|MF_BYPOSITION,UINTHADDMENU,“统计计算/相应改变菜单中有关绘图统计计算菜单项的属性ENABLEMENUITEMHMENU,IDM_ADDMENU,MF_GRAYEDENABLEMENUITEMHMENU,IDM_DELMENU,MF_ENABLEDDRAWMENUBARHWND/重新显示窗口菜单BREAKCASEIDM_DELMENUDELETEMENUHMENU,2,MF_BYPOSITION/删除统计计算菜单项/相应改变“文件”

温馨提示

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

评论

0/150

提交评论