为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

vc

2013-12-26 16页 ppt 1MB 54阅读

用户头像

is_896770

暂无简介

举报
vcnull网 络 编 程**网 络 编 程南京理工大学 计算机学院 主 讲 教 师: 吕 建 勇 电 子 邮 箱: lv_jy@126.com Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows程序运行原理与VC++编程声卡发声 显卡显示等鼠标移动 键盘输入等声卡何时发何声 显卡何时显示什么等鼠标坐标 键盘输入何字符等(输入、输出)API关于API 关于API 在应用程序中要完成某个功能,都是以函数调用的形式实现的,...
vc
null网 络 编 程**网 络 编 程南京理工大学 计算机学院 主 讲 教 师: 吕 建 勇 电 子 邮 箱: lv_jy@126.com Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows程序运行原理与VC++编程声卡发声 显卡显示等鼠标移动 键盘输入等声卡何时发何声 显卡何时显示什么等鼠标坐标 键盘输入何字符等(输入、输出)API关于API 关于API 在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。 关于消息及消息队列关于消息及消息队列 操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应(消息响应)。关于消息及消息队列 关于消息及消息队列 操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序,参看MSDN。 MSG结构定义如下: typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; 关于句柄 关于句柄 句柄(HANDLE),资源的标识。 操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。 从变量的类型区分变量的用途从变量的类型区分变量的用途int x,y; x=30; y=30; //x和y既可以用来示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。 typedef int WIDTH typedef int HEIGHT WIDTH x; HEIGHT y; //好处:我们从变量的类型上就可以知道x和y是用来表示宽度和高度。WinMain函数 WinMain函数 Windows程序的入口函数 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state );窗口的创建 窗口的创建 创建一个完整的窗口需要经过下面四个操作步骤: 一个窗口类; 注册窗口类; 创建窗口; 显示及更新窗口。 消息循环设计窗口类设计窗口类typedef struct _WNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; } WNDCLASS; 窗口类的类型窗口类的类型 在我们的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一种特性。当该变量的某位为1时,表示有该位对应的那种特性,当该位为0时,即没有该位所对应的特性。当变量中的某几位同时为1时,就表示同时具有几种特性的组合。一个变量中的哪一位代表哪种意义,不容易记忆,所以我们经常根据特征的英文拼写的大写去定义一些宏,该宏所对应的数值中仅有与该特征相对应的那一位(bit)为1,其余的bit都为0。我们使用goto definition就能发现CS_VREDRAW=0x0001,CS_HREDRAW=0x0002,CS_DBLCLKS =0x0008,CS_NOCLOSE=0x0200。他们的共同点就是只有一位为1,其余位都为0。如果我们希望某一变量的数值既有CS_VREDRAW特性,又有CS_HREDRAW特性,我们只需使用二进制OR(|)操作符将他们进行或运算相组合,如style=CS_VREDRAW | CS_HREDRAW | CS_NOCLOSE。如果我们希望在某一变量原有的几个特征上去掉其中一个特征,用取反(~)之后再进行与(&)运算,就能够实现,如在刚才的style的基础上去掉CS_NOCLOSE特征,可以用style & ~CS_NOCLOSE实现。 窗口过程函数窗口过程函数第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数,也称回调函数。回调函数的原理是这样的,当应用程序收到给某一窗口的消息时(还记得前面讲过的消息通常与窗口相关的吗?),就应该调用某一函数来处理这条消息。这一调用过程不用应用程序自己来实施,而由操作系统来完成,但是,回调函数本身的代码必须由应用程序自己完成。对于一条消息,操作系统到底调用应用程序中的哪个函数(回调函数)来处理呢?操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数。每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过lpfnWndProc成员指定的。 注册窗口注册窗口ATOM RegisterClass( CONST WNDCLASS *lpWndClass // class data ); 创建窗口创建窗口显示和更新窗口显示和更新窗口BOOL ShowWindow( HWND hWnd, // handle to window int nCmdShow // show state ); BOOL UpdateWindow( HWND hWnd // handle to window ); 消息循环消息循环MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
/
本文档为【vc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索