程序员玩转算法清华教程-windows编程基础_第1页
程序员玩转算法清华教程-windows编程基础_第2页
程序员玩转算法清华教程-windows编程基础_第3页
程序员玩转算法清华教程-windows编程基础_第4页
程序员玩转算法清华教程-windows编程基础_第5页
免费预览已结束,剩余33页可下载查看

下载本文档

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

文档简介

可视化程序设计基础Windows编程基础常用数据结构常用前缀及类型说明Windows编程基础Windows是集成了下列系统的可用资源和开发工具的综合性开发平台Windows语言的源程序编辑器和编译器程序调试工具,包括源程序语法检查、可执行程序修改和运行监视等。系统函数库和系统函数开发工具资源管理器,包括图形化窗口及其组成元素的多种对象的编辑器可选择并构成具体语句或源程序结构的例程库及帮助文件应用程序帮助文件和安装开发工具包。其他功能。Windows编程特点图形化的窗口界面多任务方式的运行环境虚拟化的设备接口以虚拟内存为

的内存管理网络功能及应用程序多

功能及应用程序功能丰富的用户管理工具和使用Windows

APIAPI:Application

programming

interface应用程序编程接口根据windows

API函数完成的功能,可分三类:窗口管理函数图形设备函数系统服务函数Windows编程基础知识窗口:windows应用程序基本的操作单元,应用程序与用户之间交互的接口环境,系统管理应用程序的基本单位。事件和消息:windows程序设计的句柄:4字节长的整数值,唯一的标识一个对象。#include

<windows.h>//窗口函数说明LRESULT

CALLBACK

WndProc(HWND,UINT,RAM,LPARAM);//WinMain函数说明int

WINAPI

WinMain(

HINSTANCE

hInstance,

HINSTANCE

hPrevInst, LPSTR

lpszCmdLine,

int

nCmdShow){//初始化窗口类WNDCLASS

wndclass

;charlpszClassName[]="窗口";char

lpszTitle[]="My_Windows";//窗口类名//窗口标题名//窗口类的定义

wndclass.style=0;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.lpsz Name

=

NULL

;

//窗口中无菜单wndclass.lpszClassName

=

lpszClassName

;//窗口类名为"窗口示例"

//窗口类//如果失败则发出警告声音if(

!RegisterClass(

&wndclass)){MessageBeep(0)

;return

FALSE

;}//创建窗口HWND

hwnd

;hwnd=CreateWindow(lpszClassName,lpszTitle,//窗口类名//窗口实例的标题名WS_OVERLAPPEDWINDOW,//窗口的风格CW_USEDEFAULT,//窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,,NULL,NULL,hInstance,NULL)

;//窗口的高和宽为缺省值//此窗口无父窗口//此窗口无主菜单//创建此窗口的应用程序的当前句柄//不使用该值//显示窗口ShowWindow(

hwnd,

nCmdShow)

;//绘制用户区UpdateWindow(hwnd);MSG

Msg

;//消息循环while(

GetMessage(&Msg,

NULL,

0,

0)){TranslateMessage(

&Msg);Dispat essage(

&Msg)

;}return

Msg.

ram;//消息循环结束即程序终止时将信息返回系统}//窗口函数LRESULT

CALLBACK WndProc(HWND

hwnd,UINT

message,RAM

ram,LPARAM

lParam){swit

essage){case

WM_DESTROY:PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息default://默认时采用系统消息默认处理函数ram,lParam);return

DefWindowProc(hwnd,message,}return

(0);}WinMain函数完成一系列的定义和初始化工作,并产生消息循环:窗口类

进入消息循环当消息循环检索到WM_QUIT消息时终止程序三个组成部分:函数说明初始化

消息循环函数说明int

WINAPI

WinMain(HINSTANCEhInstance,//应用程序当前实例句柄HINSTANCE

hPrevInst,//应用程序其他实例句柄LPSTR

lpszCmdLine,//指向程序命令行参数的指针int

nCmdShow//应用程序开始执行时窗口显示方式的整数值标识)初始化窗口类的定义窗口类的创建窗口实例显示窗口窗口类的定义窗口类定义了窗口的形式与功能。窗口类定义通过给窗口类数据结构WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。Loadicon函数在应用程序中加载一个窗口图标。HICON

LoadIcon(HINSTANCE

hinstance//图标资源所在的模块句柄,如为NULL,则使用系统预定义图标LPCTSTR

lpIconName//图标资源名或系统预定义的图标标识名)LoadCursor在应用程序中加载一个窗口光标HCURSOR

LoadCursor(HINSTANCE

hInstance//光标资源所在的模块句柄,如为NULL,则使用系统预定义光标LPCTSTR

lpIconName//光标资源名或系统预定义的光标标识名)GetStockObject获取系统提供的背景刷HBRUSH

GetStockObject(int

nBrush);//nBrush为系统提供的背景刷的标识名窗口类窗口必须先

,后使用。Bool

RegisterClass(&wndclass);成功,返回真。创建窗口HWND

CreateWindow(LPCTSTR

lpszClassName//窗口类名LPCTSTR

lpszTitleDWORD

dwStyle

int

x,

int

y,int

nWidch,int

nHeightHWND

hwndParentHHINSTANCE

hInstance//窗口标题名//创建窗口样式//窗口左上角坐标//窗口尺寸//父窗口句柄//主菜单句柄//创建窗口的应用程序当前句柄LPVOIDlpParam //指向一个传递给窗口的参数值的指针)常用窗口样式WS_BORDENWS_CAPTIONWS_HSCROLL带边框的窗口带标题栏的窗口带水平滚动条WS_ IZEBOX

带最大化按钮WS_

IZE

最大化窗口WS_MINIMIZEBOX

带最小化按钮WS_MINIMIZE

最小化窗口WS_OVERLAPPED

带边框和标题栏WS_OVERLAPPEDWINDOW带边框、标题栏、系统菜单、最大和最小化按钮WS_POPUP

弹出式窗口WS_POPUPWINDOW带边框和系统菜单的弹出式窗口WS_SYSWS_VSCROLL带系统菜单

带垂直滚动条例如:带水平和垂直滚动条的弹出式窗口:WS_HSCROLL|WS_VSCROLL|WS_POPUP带垂直滚动条和系统菜单的窗口WS_VSCROLL|

WS_SYS显示窗口在屏幕上显示窗口ShowWindow(hwnd,nCmdShow);HwndnCmdShow窗口句柄窗口显示形式窗口显示形式SW_HIDESW_SHOWNORMALSW_SHOWMINMIZESW_SHOW

IZESW_SHOWNOACTIVESW_RESTORE隐藏窗口显示并激活窗口显示并最小化窗口显示并最大化窗口显示但不激活窗口恢复窗口原来的位置及尺寸绘制用户区UpdateWindow函数发出WM_PAINT消息绘制用户区UpdateWindow(hwnd)定义消息通过MSG定义消息结构体Typedef

struct

tagMSG{

HWND hwnd;//检索消息的窗口句柄UINT

message;RAM//消息值

ram;//字参数lParam;//长字参数time; //消息送至队列的时间pt; //消息发送时光标位置LPARAMDWORDPOINT}MSG;消息循环一条消息,并放在一个GetMessage:从消息队列中

MSG结构中。GetMessage(lpMSGhwnd//指向MSG结构的指针//发出消息的窗口句柄nMsgFilterMin//用于消息过滤的最小消息号值

nMsgFilterMax//用于消息过滤的最大消息号值)TransLateMessage(lpMSG);将消息的虚拟键转化为字符信息Dispat

essage(lpMSG)将lpMSG指向的消息传送到指定窗口窗口函数定义了应用程序对接受到不同消息的响应。LRESULT

CALLBACK

WndProc(HWND

hwndUINT

messageRAM//窗口句柄//所处理的消息的消息值

ram//消息的附加参数LPARAM

lParam//消息的附加参数)消息处理系统定义的消息用不同的前缀符号来识别消息分类:BM:按钮控制消息

CB:组合框控制消息

DM:默认下压式按钮控制消息

EM:编辑控制消息

LB:列表框控制消息

SBM:滚动条控制消息

WM:窗口消息应用程序还可以自定义消息供 应用程序和系统内其他进程通信使用。不同消息类型的取值范围系统定义消息(1)用户定义

消息系统定义消息(2)用户定义外部消息0x0000~0x03FF0x0400~0x07FF0x8000~0xBFFF0xC000~0xFFFFWindows应用程序常用消息鼠标响应消息WM_LBUTTONDOWNWM_LBUTTONUP//单击鼠标左键//放开鼠标左键WM_RBUTTONDOWN//单击鼠标右键

WM_RBUTTONUP//放开鼠标右键

WM_LBUTTONDBLCLK//双击鼠标左键

WM_RBUTTONDBLCLK//双击鼠标右键附加消息参数:ram:标识鼠标的按下状态:按下左键按下中键按下右键MK_LBUTTONMK_MBUTTONMK_RBUTTONlParam:低字节

当前光标的x坐标高字节

当前光标的y坐标//按下非系统键//放开非系统键键盘响应消息WM_KEYDOWNWM_KEYUP附加消息参数:ram:按下键的虚拟键码

lParam:记录按键的重复次数、扫描码、转义代码、先前键的状态等系统键:实现系统操作的组合键非系统键:系统键以外的按键扫描码:唯一标识键盘上的键虚拟码:由windows系统定义的与设备无关的键的标识WM_CHAR按下非系统键时产生的消息,

ram为按键的

温馨提示

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

评论

0/150

提交评论