欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    网络软件设计消息精品文稿.ppt

    • 资源ID:71974042       资源大小:8.21MB        全文页数:42页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络软件设计消息精品文稿.ppt

    网络软件设计消息网络软件设计消息第1页,本讲稿共42页2窗口窗口n n窗口窗口n n窗口的类型和要素窗口的类型和要素n n窗口背后的计算窗口背后的计算第2页,本讲稿共42页3窗口窗口n n窗口窗口l l与人交互的场所与人交互的场所与人交互的场所与人交互的场所uu图形化图形化图形化图形化l l窗口与应用程序窗口与应用程序窗口与应用程序窗口与应用程序uu配置参数配置参数配置参数配置参数uu不断交互不断交互不断交互不断交互uu结果显示结果显示结果显示结果显示l l窗口与进程窗口与进程窗口与进程窗口与进程uu一一对应一一对应一一对应一一对应uu一个进程打开多个窗口一个进程打开多个窗口一个进程打开多个窗口一个进程打开多个窗口uu一个窗口对应多个进程一个窗口对应多个进程一个窗口对应多个进程一个窗口对应多个进程(多个进程通过一个窗口与人交互多个进程通过一个窗口与人交互多个进程通过一个窗口与人交互多个进程通过一个窗口与人交互)第3页,本讲稿共42页4窗口类型与要素窗口类型与要素n n窗口类型窗口类型l lConsoleConsoleuu文字类型文字类型文字类型文字类型l lWindowWindowuu菜单菜单菜单菜单+用户区域用户区域用户区域用户区域l lDialogDialogl lMessage BoxMessage Boxn n窗口要素窗口要素l l框架框架框架框架l l菜单菜单菜单菜单l l按钮按钮按钮按钮l l滚动条滚动条滚动条滚动条第4页,本讲稿共42页5窗口背后的计算窗口背后的计算n n窗口程序各不相同窗口程序各不相同l l本质区别是任务不同,计算不同本质区别是任务不同,计算不同本质区别是任务不同,计算不同本质区别是任务不同,计算不同l l窗口的每个要件都有相应的程序支撑窗口的每个要件都有相应的程序支撑窗口的每个要件都有相应的程序支撑窗口的每个要件都有相应的程序支撑uu任务的计算程序在哪里?任务的计算程序在哪里?任务的计算程序在哪里?任务的计算程序在哪里?uu计算程序如何将窗口各部分统筹起来?计算程序如何将窗口各部分统筹起来?计算程序如何将窗口各部分统筹起来?计算程序如何将窗口各部分统筹起来?uu窗口计算的程序框架将是怎样的?窗口计算的程序框架将是怎样的?窗口计算的程序框架将是怎样的?窗口计算的程序框架将是怎样的?第5页,本讲稿共42页6Win32程序开发流程程序开发流程.DLG.DLG.BMP.BMP.ICO.ICO.CUR.CUR.FON.FON.RC.RC.H.H.C.C.OBJ.OBJ.LIB.LIBC runtimeC runtimeDLL ImportDLL Import.DEF.DEFRC compilerRC compilerText EditorText EditorDialog EditorDialog EditorImage EditorImage EditorFont EditorFont EditorC CompilerC CompilerLINKERLINKER.EXE.EXE.RES.RES开始之前第6页,本讲稿共42页7库函数库函数n n库函数的作用库函数的作用库函数的作用库函数的作用l l用户不必关心窗口要件的代码用户不必关心窗口要件的代码用户不必关心窗口要件的代码用户不必关心窗口要件的代码n n动态链接库动态链接库动态链接库动态链接库l l在执行时,才进行链接在执行时,才进行链接在执行时,才进行链接在执行时,才进行链接l l增加程序的可移植性增加程序的可移植性增加程序的可移植性增加程序的可移植性l l节约内存节约内存节约内存节约内存n nWindowsWindows常用的库函数常用的库函数常用的库函数常用的库函数l lC RuntimesC RuntimesC C库函数库函数库函数库函数uuLIBC.LIBLIBC.LIBuuMSVCRT.LIBMSVCRT.LIBl lWindows APIWindows APIuuGDI32.DLLGDI32.DLLuuUSER32.DLLUSER32.DLLuuKERNEL32.DLLKERNEL32.DLLuu其它其它其它其它开始之前注意:在运行程序时会遇注意:在运行程序时会遇注意:在运行程序时会遇注意:在运行程序时会遇到一些库缺失的错误,到一些库缺失的错误,到一些库缺失的错误,到一些库缺失的错误,只需将这些库找到只需将这些库找到只需将这些库找到只需将这些库找到放到放到放到放到windowswindows系统目录下系统目录下系统目录下系统目录下第7页,本讲稿共42页8头文件头文件n nwindows.hn nstdafx.hn n其它其它开始之前注意:当编译时出现找不到函数体错误时,注意:当编译时出现找不到函数体错误时,注意:当编译时出现找不到函数体错误时,注意:当编译时出现找不到函数体错误时,需要包含正确的头文件。需要包含正确的头文件。需要包含正确的头文件。需要包含正确的头文件。如果不知道该包含哪一个时,如果不知道该包含哪一个时,如果不知道该包含哪一个时,如果不知道该包含哪一个时,1 1、可以在、可以在、可以在、可以在VCVC的的的的includeinclude目录下查找目录下查找目录下查找目录下查找2 2、注意头文件的包含顺序、注意头文件的包含顺序、注意头文件的包含顺序、注意头文件的包含顺序第8页,本讲稿共42页9Windows 程序结构程序结构n n以消息(事件)为基础,以消息(事件)驱动以消息(事件)为基础,以消息(事件)驱动以消息(事件)为基础,以消息(事件)驱动以消息(事件)为基础,以消息(事件)驱动(message basedmessage based,event drivenevent driven)l l为什么窗口程序是事件驱动的为什么窗口程序是事件驱动的为什么窗口程序是事件驱动的为什么窗口程序是事件驱动的uu窗口程序的主要任务是人机交互窗口程序的主要任务是人机交互窗口程序的主要任务是人机交互窗口程序的主要任务是人机交互 除非人主动结束任务。除非人主动结束任务。除非人主动结束任务。除非人主动结束任务。人不断进行各种输入,计算机不断响应人不断进行各种输入,计算机不断响应人不断进行各种输入,计算机不断响应人不断进行各种输入,计算机不断响应程序以程序以程序以程序以whilewhile循环为主体框架循环为主体框架循环为主体框架循环为主体框架 形成形成形成形成“输入输入输入输入”“响应响应响应响应”的程序结构的程序结构的程序结构的程序结构l l窗口程序是怎样进行消息驱动的窗口程序是怎样进行消息驱动的窗口程序是怎样进行消息驱动的窗口程序是怎样进行消息驱动的uu各种类型的各种类型的各种类型的各种类型的“输入输入输入输入”,以消息格式存在,以消息格式存在,以消息格式存在,以消息格式存在 GetMessageGetMessage()取走一个消息()取走一个消息()取走一个消息()取走一个消息uu需要响应消息和事件需要响应消息和事件需要响应消息和事件需要响应消息和事件对事件的响应,即事件驱动对事件的响应,即事件驱动对事件的响应,即事件驱动对事件的响应,即事件驱动 DispatchMessageDispatchMessage()处理消息()处理消息()处理消息()处理消息第9页,本讲稿共42页10Windows 程序结构程序结构n n程序基本结构(算法)程序基本结构(算法)mainmain()()()()while(GetMessage(&msg)while(GetMessage(&msg)ProcessMessage(&msg);ProcessMessage(&msg);主函数主函数主函数主函数消息处理函数消息处理函数消息处理函数消息处理函数ProcessMessage(msg)ProcessMessage(msg)switch(msg)switch(msg)case MSG1:case MSG1:case MSG2:case MSG2:事件事件事件事件第10页,本讲稿共42页对比对比Windows消息驱动框架与消息驱动框架与select框架框架n n两个框架都具备相同的事件驱动的基本架构两个框架都具备相同的事件驱动的基本架构11mainmain()()()()while(GetMessage(&msg)while(GetMessage(&msg)ProcessMessage(&msg);ProcessMessage(&msg);ProcessMessage(msg)ProcessMessage(msg)switch(msg)switch(msg)case MSG1:case MSG1:case MSG2:case MSG2:send();send();process buf1;process buf1;prepare buf2;prepare buf2;while(recv()0)while(recv()0)FD_SET(s,&readfds);FD_SET(s,&readfds);while(select(0,)=0)while(select(0,)=0)if(FD_ISSET(s,&readfds)if(FD_ISSET(s,&readfds)FD_SET(ss,&readfds);FD_SET(ss,&readfds);FD_SET(s,&readfds);FD_SET(s,&readfds);FD_SET(ss,&readfds);FD_SET(ss,&readfds);第11页,本讲稿共42页12一个具体的窗口程序一个具体的窗口程序WinMainWinMain()()()()初始化;初始化;初始化;初始化;while(GetMessage(&msg)while(GetMessage(&msg)TranslateMessage();TranslateMessage();DispatchMessage();DispatchMessage();系统系统系统系统消息消息消息消息队列队列队列队列WndProc(msg)WndProc(msg)switch(msg)switch(msg)case MSG1:case MSG1:case MSG2:case MSG2:应用应用应用应用程序程序程序程序消息消息消息消息队列队列队列队列mousemousedriverdriverkeyboardkeyboarddriverdriverSendMessage()SendMessage()USERUSERModuleModulemessage frommessage fromOther windowOther windowPostMessage()PostMessage()system第12页,本讲稿共42页13程序入口点程序入口点 WinMainn nWinMainWinMainWinMain()()()()初始化;初始化;初始化;初始化;创建和显示窗口;创建和显示窗口;创建和显示窗口;创建和显示窗口;建立基于消息的事件驱动机制建立基于消息的事件驱动机制建立基于消息的事件驱动机制建立基于消息的事件驱动机制 WinMainWinMain()()()()RegisterClass();RegisterClass();CreateWindow();CreateWindow();ShowWindow();ShowWindow();UpdateWindow();UpdateWindow();while(GetMessage(&msg)while(GetMessage(&msg)TranslateMessage();TranslateMessage();DispatchMessage();DispatchMessage();第13页,本讲稿共42页14Windows 程序的主要构成程序的主要构成n nWinMainWinMain()程序入口点()程序入口点()程序入口点()程序入口点l l注册窗口注册窗口注册窗口注册窗口 RegisterClass RegisterClass()()()()l l生成并显示窗口生成并显示窗口生成并显示窗口生成并显示窗口 CreateWindow()ShowWindow()CreateWindow()ShowWindow()l l进入消息处理循环进入消息处理循环进入消息处理循环进入消息处理循环简称消息循环简称消息循环简称消息循环简称消息循环n nWndProcWndProc()窗口函数(功能实现)()窗口函数(功能实现)()窗口函数(功能实现)()窗口函数(功能实现)l l区分消息区分消息区分消息区分消息 switch switchl l根据消息触发相应处理根据消息触发相应处理根据消息触发相应处理根据消息触发相应处理l l调用调用调用调用DefWindowProcDefWindowProc()()()()不处理的消息、和需要系统进一步处理的消息不处理的消息、和需要系统进一步处理的消息不处理的消息、和需要系统进一步处理的消息不处理的消息、和需要系统进一步处理的消息如如如如WM_CLOSEWM_CLOSE,使用者关闭了窗口。应用程序获得这个消,使用者关闭了窗口。应用程序获得这个消,使用者关闭了窗口。应用程序获得这个消,使用者关闭了窗口。应用程序获得这个消息后,释放了自己的资源,然后让系统进一步执行关闭窗口息后,释放了自己的资源,然后让系统进一步执行关闭窗口息后,释放了自己的资源,然后让系统进一步执行关闭窗口息后,释放了自己的资源,然后让系统进一步执行关闭窗口的动作的动作的动作的动作思考:怎样根据功能要求思考:怎样根据功能要求思考:怎样根据功能要求思考:怎样根据功能要求生成消息,并把这个消息生成消息,并把这个消息生成消息,并把这个消息生成消息,并把这个消息传递给窗口函数?传递给窗口函数?传递给窗口函数?传递给窗口函数?第14页,本讲稿共42页15注册窗口类注册窗口类n nRegisterClass()在注册之前可以设置窗口属性,系统会给出一些缺省值,我们在注册之前可以设置窗口属性,系统会给出一些缺省值,我们在注册之前可以设置窗口属性,系统会给出一些缺省值,我们在注册之前可以设置窗口属性,系统会给出一些缺省值,我们重点关心其中的重点关心其中的重点关心其中的重点关心其中的lpfnWndProclpfnWndProc参数参数参数参数WNDCLASS wc;WNDCLASS wc;wc.stvle=;wc.stvle=;wc.lpfnWndProc wc.lpfnWndProc (WNDPROCWNDPROC)WndProc;WndProc;提示系统收到消息后,调该函数处理消息提示系统收到消息后,调该函数处理消息提示系统收到消息后,调该函数处理消息提示系统收到消息后,调该函数处理消息wc.hIcon=wc.hIcon=wc.Cursor=wc.Cursor=wc.hbrBackground=wc.hbrBackground=第15页,本讲稿共42页16窗口程序的可能结构窗口程序的可能结构WindowsWindows系统系统系统系统消息的处理消息的处理消息的处理消息的处理产生消息显示显示显示显示在窗口中显示第16页,本讲稿共42页17窗口产生窗口产生n nCreateWindow()()n nShowWindow()()n nUpdateWindow()()第17页,本讲稿共42页18消息循环消息循环while(GetMessage(&msg)while(GetMessage(&msg)TranslateMessage(&msg);/TranslateMessage(&msg);/消息转换消息转换消息转换消息转换 DispatchMessage(&msg);DispatchMessage(&msg);n nGetMessageGetMessage具有阻塞机制具有阻塞机制具有阻塞机制具有阻塞机制l l当消息队列中没有消息时,程序非忙等,而是让权等待当消息队列中没有消息时,程序非忙等,而是让权等待当消息队列中没有消息时,程序非忙等,而是让权等待当消息队列中没有消息时,程序非忙等,而是让权等待n nDispatchMessageDispatchMessagel l不是直接调用消息处理函数(不是直接调用消息处理函数(不是直接调用消息处理函数(不是直接调用消息处理函数(WndProcWndProc)l l通过通过通过通过USERUSER模块协助,才将消息传递到模块协助,才将消息传递到模块协助,才将消息传递到模块协助,才将消息传递到WndProcWndProcl lWndProcWndProc的调用指示在注册窗口类时,已向系统指明的调用指示在注册窗口类时,已向系统指明的调用指示在注册窗口类时,已向系统指明的调用指示在注册窗口类时,已向系统指明为什么不直接调用?方便系统抓取消息为什么不直接调用?方便系统抓取消息为什么不直接调用?方便系统抓取消息为什么不直接调用?方便系统抓取消息第18页,本讲稿共42页19窗口函数窗口函数n nWndProc()WndProc(HWND hWnd,UINT message,WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)WPARAM wParam,LPARAM lParam)HWND hWnd:HWND hWnd:窗口句柄,在与窗口有关的控制中使用窗口句柄,在与窗口有关的控制中使用窗口句柄,在与窗口有关的控制中使用窗口句柄,在与窗口有关的控制中使用UINT messageUINT message:消息(类型):消息(类型):消息(类型):消息(类型)WPARAM wParamWPARAM wParam:传递的参数:传递的参数:传递的参数:传递的参数LPARAM lParamLPARAM lParam:传递的参数传递的参数传递的参数传递的参数在基于消息的机制中,仅有消息是不够的在基于消息的机制中,仅有消息是不够的在基于消息的机制中,仅有消息是不够的在基于消息的机制中,仅有消息是不够的产生消息的同时,传递什么样的参数产生消息的同时,传递什么样的参数产生消息的同时,传递什么样的参数产生消息的同时,传递什么样的参数要视具体的消息而定要视具体的消息而定要视具体的消息而定要视具体的消息而定第19页,本讲稿共42页20窗口函数窗口函数n n消息消息l l本身是一个本身是一个本身是一个本身是一个unsigned intunsigned int变量变量变量变量l l类型有类型有类型有类型有uuWM_COMMANDWM_COMMAND:系统命令类,菜单选择,按钮等:系统命令类,菜单选择,按钮等:系统命令类,菜单选择,按钮等:系统命令类,菜单选择,按钮等uuWM_PAINTWM_PAINT:对窗口作图:对窗口作图:对窗口作图:对窗口作图uuWM_DESTORYWM_DESTORY:关闭窗口:关闭窗口:关闭窗口:关闭窗口uuWM_USERWM_USER:用户可自定义一些消息:用户可自定义一些消息:用户可自定义一些消息:用户可自定义一些消息l l在某个特定类型之下,更有许多事件,一般通过在某个特定类型之下,更有许多事件,一般通过在某个特定类型之下,更有许多事件,一般通过在某个特定类型之下,更有许多事件,一般通过wParamwParam或或或或lParamlParam通知通知通知通知第20页,本讲稿共42页21窗口函数基本框架窗口函数基本框架WndProc(hWnd,message,wParam,lParam)WndProc(hWnd,message,wParam,lParam)switch(message)switch(message)case WM_COMMANDcase WM_COMMAND:id=LOWORD(wParam)id=LOWORD(wParam);switchswitch(idid)case IDM_OPENcase IDM_OPEN:breakbreak;菜单中的菜单中的菜单中的菜单中的openopen选项选项选项选项 case WM_PAINT:case WM_PAINT:在视窗作图;在视窗作图;在视窗作图;在视窗作图;breakbreak;defaultdefault:DefWindowProc(hWnd,message,wParam,lParam);DefWindowProc(hWnd,message,wParam,lParam);第21页,本讲稿共42页22Windows程序的生与死程序的生与死n n程序初始化过程中调用程序初始化过程中调用程序初始化过程中调用程序初始化过程中调用CreateWindowCreateWindow,为程序创建了一个窗口,为程序创建了一个窗口,为程序创建了一个窗口,为程序创建了一个窗口,CreateWindowCreateWindow送出送出送出送出WM_CREATEWM_CREATE直接给窗口函数,后者可以在直接给窗口函数,后者可以在直接给窗口函数,后者可以在直接给窗口函数,后者可以在此时做些此时做些此时做些此时做些初始化初始化初始化初始化操作操作操作操作n n在程序运行过程中,不断以在程序运行过程中,不断以在程序运行过程中,不断以在程序运行过程中,不断以GetMessageGetMessage从消息队列中取得消息。从消息队列中取得消息。从消息队列中取得消息。从消息队列中取得消息。如果如果如果如果这个消息是这个消息是这个消息是这个消息是WM_QUITWM_QUIT,GetMessageGetMessage会得到会得到会得到会得到0 0的返回值而结束循的返回值而结束循的返回值而结束循的返回值而结束循环,进而结束整个程序环,进而结束整个程序环,进而结束整个程序环,进而结束整个程序n nDispatchMessageDispatchMessage通过系统通过系统通过系统通过系统USERUSER模块的协助与监督,把消息模块的协助与监督,把消息模块的协助与监督,把消息模块的协助与监督,把消息分派至窗口函数,消息将被处理分派至窗口函数,消息将被处理分派至窗口函数,消息将被处理分派至窗口函数,消息将被处理n n程序不断循环程序不断循环程序不断循环程序不断循环n n当使用者按下系统菜单中的当使用者按下系统菜单中的当使用者按下系统菜单中的当使用者按下系统菜单中的CloseClose命令时,系统送出命令时,系统送出命令时,系统送出命令时,系统送出WM_CLOSEWM_CLOSE,通常窗口程序不处理它,由通常窗口程序不处理它,由通常窗口程序不处理它,由通常窗口程序不处理它,由DefWindowProcDefWindowProc处理处理处理处理n nDefWindowProcDefWindowProc处理处理处理处理WM_CLOSEWM_CLOSE,调用,调用,调用,调用DestoryWindowDestoryWindow把窗把窗把窗把窗口清除,送出口清除,送出口清除,送出口清除,送出WM_DESTORYWM_DESTORYn n窗口程序对窗口程序对窗口程序对窗口程序对WM_DESTORYWM_DESTORY的处理是调用的处理是调用的处理是调用的处理是调用PostQuitMessagePostQuitMessagen nPostQuitMessagePostQuitMessage送出送出送出送出WM_QUITWM_QUIT,于是,于是,于是,于是WinMainWinMain的循环结束了,整个的循环结束了,整个的循环结束了,整个的循环结束了,整个应用程序也结束了应用程序也结束了应用程序也结束了应用程序也结束了第22页,本讲稿共42页23Windows程序的生与死程序的生与死WinMainWinMain()()()()初始化;初始化;初始化;初始化;CreateWindow();CreateWindow();while(GetMessage(&msg)while(GetMessage(&msg)TranslateMessage();TranslateMessage();DispatchMessage();DispatchMessage();WndProc(msg)WndProc(msg)switch(msg)switch(msg)case WM_CREATE:case WM_CREATE:用户程序初始化用户程序初始化用户程序初始化用户程序初始化case WM_DESTORY:case WM_DESTORY:PostQuitMessage()PostQuitMessage()default:default:DefWindowProc()DefWindowProc()CreateWindow()CreateWindow()WM_CREATEWM_CREATEGetMessage()GetMessage()DispatchMessage(DispatchMessage(WM_CREATEWM_CREATE)WndProc(WndProc(WM_CREATEWM_CREATE)用户程序初始化用户程序初始化用户程序初始化用户程序初始化启动启动启动启动第23页,本讲稿共42页24Windows程序的生与死程序的生与死使用者按下关闭按钮使用者按下关闭按钮使用者按下关闭按钮使用者按下关闭按钮WM_CLOSEWM_CLOSEGetMessage()GetMessage()DispatchMessage(DispatchMessage(WM_CLOSEWM_CLOSE)WndProc(WndProc(WM_CLOSEWM_CLOSE)DefWindowProc(WM_CLOSE)DefWindowProc(WM_CLOSE)关闭关闭关闭关闭WinMainWinMain()()()()初始化;初始化;初始化;初始化;CreateWindow();CreateWindow();while(GetMessage(&msg)while(GetMessage(&msg)TranslateMessage();TranslateMessage();DispatchMessage();DispatchMessage();WndProc(msg)WndProc(msg)switch(msg)switch(msg)case WM_CREATE:case WM_CREATE:用户程序初始化用户程序初始化用户程序初始化用户程序初始化case WM_DESTORY:case WM_DESTORY:PostQuitMessage()PostQuitMessage()default:default:DefWindowProc()DefWindowProc()DestoryWindow()DestoryWindow()WM_DESTORYWM_DESTORYGetMessage()GetMessage()DispatchMessage(DispatchMessage(WM_DESTORYWM_DESTORY)WndProc(WndProc(WM_DESTORYWM_DESTORY)PostQuitMessage()PostQuitMessage()WM_QIUTWM_QIUTGetMessage()GetMessage()返回为返回为返回为返回为0,while0,while结束结束结束结束WinMainWinMain结束,整个程序结束结束,整个程序结束结束,整个程序结束结束,整个程序结束第24页,本讲稿共42页25一个简单的一个简单的Windows程序程序n n三种方式生成窗口程序三种方式生成窗口程序l l建立空白工程,建立空白工程,建立空白工程,建立空白工程,emptyemptyuu完全是空文件完全是空文件完全是空文件完全是空文件l l建立简单工程,建立简单工程,建立简单工程,建立简单工程,simplesimpleuu仅有仅有仅有仅有WinMainWinMainl l建立典型应用工程,建立典型应用工程,建立典型应用工程,建立典型应用工程,Hello WorldHello Worlduu具备完整的结构具备完整的结构具备完整的结构具备完整的结构n n生成一个典型应用生成一个典型应用l l观察具备哪些要件观察具备哪些要件观察具备哪些要件观察具备哪些要件l l单步调试感受单步调试感受单步调试感受单步调试感受WinMainWinMain的流程的流程的流程的流程l l在在在在WndProcWndProc中设置断点,感受消息抓取过程中设置断点,感受消息抓取过程中设置断点,感受消息抓取过程中设置断点,感受消息抓取过程winuser.hwinuser.h中定义了系统消息中定义了系统消息中定义了系统消息中定义了系统消息第25页,本讲稿共42页26结合结合socket与与windowsn n需要考虑的一些重要问题需要考虑的一些重要问题l l窗口功能设计窗口功能设计窗口功能设计窗口功能设计uu使用者点击哪些按钮,会获得什么样的功能使用者点击哪些按钮,会获得什么样的功能使用者点击哪些按钮,会获得什么样的功能使用者点击哪些按钮,会获得什么样的功能l l如何在菜单中触发消息如何在菜单中触发消息如何在菜单中触发消息如何在菜单中触发消息uu在菜单中的选项都将产生在菜单中的选项都将产生在菜单中的选项都将产生在菜单中的选项都将产生WM_COMMANDWM_COMMAND,不同的是,不同的是,不同的是,不同的是在在在在wParamwParam中中中中idid号不同(即事件不同)号不同(即事件不同)号不同(即事件不同)号不同(即事件不同)l l添加消息处理函数添加消息处理函数添加消息处理函数添加消息处理函数uu在窗口处理函数(在窗口处理函数(在窗口处理函数(在窗口处理函数(WndProcWndProc)中针对前一步产生的消息)中针对前一步产生的消息)中针对前一步产生的消息)中针对前一步产生的消息和事件进行处理和事件进行处理和事件进行处理和事件进行处理l l在窗口中显示数据在窗口中显示数据在窗口中显示数据在窗口中显示数据uu用用用用MessageBoxMessageBox方式方式方式方式uu在窗口中打印在窗口中打印在窗口中打印在窗口中打印第26页,本讲稿共42页27结合结合socket流程与流程与windows流程流程n n服务器服务器WinMainWinMain()()()()初始化;初始化;初始化;初始化;CreateWindow();CreateWindow();while(GetMessage(&msg)while(GetMessage(&msg)TranslateMessage();TranslateMessage();DispatchMessage();DispatchMessage();WndProc(msg)WndProc(msg)switch(msg)switch(msg)case WM_CREATE:case WM_CREATE:用户程序初始化用户程序初始化用户程序初始化用户程序初始化case WM_DESTORY:case WM_DESTORY:PostQuitMessage()PostQuitMessage()s s socketsocket()()()();bind(s);bind(s);listen(s,5);listen(s,5);while(1)while(1)ns=accept(s);ns=accept(s);recv(ns);recv(ns);send(ns);send(ns);closesocket(ns);closesocket(ns);closesocket(s);closesocket(s);初始化初始化初始化初始化通信通信通信通信结束结束结束结束什么时候触发各环节什么时候触发各环节什么时候触发各环节什么时候触发各环节default:DefWindowProc()default:DefWindowProc()case WM_STARTcase WM_START:StartServerStartServer()()()()第27页,本讲稿共42页28结合结合socket与与windows1 1、生成一个典型应用工程、生成一个典型应用工程、生成一个典型应用工程、生成一个典型应用工程2 2、添加头文件和库、添加头文件和库、添加头文件和库、添加头文件和库winsock.h wsock32.libwinsock.h wsock32.lib3 3、添加初始化和结束部分、添加初始化和结束部分、添加初始化和结束部分、添加初始化和结束部分4 4、设计:用户在菜单中选择了、设计:用户在菜单中选择了、设计:用户在菜单中选择了、设计:用户在菜单中选择了startstart项,服务器就启动起来项,服务器就启动起来项,服务器就启动起来项,服务器就启动起来5 5、在资源编辑器中选择、在资源编辑器中选择、在资源编辑器中选择、在资源编辑器中选择MenuMenu6 6、在菜单中增加一个选项、在菜单中增加一个选项、在菜单中增加一个选项、在菜单中增加一个选项7 7、更改该菜单选项属性,、更改该菜单选项属性,、更改该菜单选项属性,、更改该菜单选项属性,IDID号为号为号为号为IDM_STARTIDM_START,和标题(,和标题(,和标题(,和标题(captioncaption)为)为)为)为StartStart8 8、在、在、在、在WndProcWndProc中添加中添加中添加中添加IDM_STARTIDM_START,及处理函数,及处理函数,及处理函数,及处理函数StartServerStartServer()()()()9 9、在窗口关闭时,即对、在窗口关闭时,即对、在窗口关闭时,即对、在窗口关闭时,即对WM_DESTORYWM_DESTORY的处理中,加入关闭连接的过程的处理中,加入关闭连接的过程的处理中,加入关闭连接的过程的处理中,加入关闭连接的过程第28页,本讲稿共42页29结合结合socket与与windowsn n观察程序执行结果观察程序执行结果l l问题问题问题问题1 1:当启动服务器服务后,窗口停止了响应:当启动服务器服务后,窗口停止了响应:当启动服务器服务后,窗口停止了响应:当启动服务器服务后,窗口停止了响应l l原因:程序在执行原因:程序在执行原因:程序在执行原因:程序在执行recvrecv后阻塞,也阻塞了抓取程后阻塞,也阻塞了抓取程后阻塞,也阻塞了抓取程后阻塞,也阻塞了抓取程序的过程。序的过程。序的过程。序的过程。l l解决方法?解决方法?解决方法?解决方法?l l问题问题问题问题2 2:如果在通信部分使用非阻塞的:如果在通信部分使用非阻塞的:如果在通信部分使用非阻塞的:如果在通信部分使用非阻塞的selectselect机制,机制,机制,机制,服务器窗口仍然停止响应服务器窗口仍然停止响应服务器窗口仍然停止响应服务器窗口仍然停止响应l l原因:程序陷于原因:程序陷于原因:程序陷于原因:程序陷于selectselect的循环中,无法回到的循环中,无法回到的循环中,无法回到的循环中,无法回到GetMessageGetMessage取得窗口消息取得窗口消息取得窗口消息取得窗口消息l l解决办法?解决办法?解决办法?解决办法?第29页,本讲稿共42页30学好学好Windows编程编程n n勿在浮沙筑高台勿在浮沙筑高台但愿管中窥全豹但愿管中窥全豹l l学好学好学好学好WindowsWindows编程应掌握的相关知识编程应掌握的相关知识编程应掌握的相关知识编程应掌握的相关知识uuC+C+uu操作系统原理,操作系统原理,操作系统原理,操作系统原理,WindowsWindows系统原理系统原理系统原理系统原理uu大量的系统库函数及功能大量的系统库函数及功能大量的系统库函数及功能大量的系统库函数及功能l l通过本课程能得到什么通过本课程能得到什么通过本课程能得到什么通过本课程能得到什么uu虽然不要求大家掌握虽然不要求大家掌握虽然不要求大家掌握虽然不要求大家掌握C+C+,课程也不介绍,课程也不介绍,课程也不介绍,课程也不介绍C+C+,但通过,但通

    注意事项

    本文(网络软件设计消息精品文稿.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开