Win32常用API讲解

初讲

  • MessageBox

函数作用:弹出一个对话框,典型的模态型对话框
函数原型:int WINAPI MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)

参数含义:

hWnd:该消息框的父窗口句柄,如果此参数为NULL,则该消息框没有父窗口
lpText:消息框的内容
lpCaption:消息框的标题
uType:对话框的按钮样式和图标

按钮样式:

MB_OK:默认值,包含一个确认按钮
MB_OKCANCEL:包含确定以及取消两个按钮
MB_YESNO:包含是以及否两个按钮
MB_ABORTRETRYIGNORE:包含终止,重试以及跳过三个按钮
MB_YESNOCANCEL:包含是,否以及取消三个按钮
MB_RETRYCANCEL:包含重试以及取消两个按钮

图标样式:

MB_ICONINFORMATION:蓝色i
MB_ICONASTERISK:蓝色i
MB_ICONQUESTION:蓝色?
MB_ICONWARNING:黄色!
MB_ICONEXCLAMATION:黄色!
MB_ICONSTOP:红色x
MB_ICONERROR:红色x
MB_ICONHAND:红色x

消息返回值:

IDYES:点击是
IDNO:点击否
IDOK:点击确认
IDCANCE:点击取消
IDABORT:点击终止
IDRETRY:点击重试
IDIGNORE:点击忽略

Demo:

#include <windows.h>

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
    int chioce = MessageBox(NULL,"HelloWorld","Test",MB_OKCANCEL | MB_ICONINFORMATION);
    if(chioce = IDOK){
        MessageBox(NULL,"You choosed OK","Test",MB_OK | MB_ICONINFORMATION);
    }
    return 0;
}
  • CreateWindow

函数作用:创建窗口实例!一个完整的窗口程序应该先注册窗口类,创建窗口实例,设置窗口的显示状态,最后发送重绘消息以防被其它窗口覆盖后不能刷新

函数原型:HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hlnstance, LPVOID lpParam)

参数含义:

lpClassName:指向窗口类名
lpWindowName:指定标题或者静态文本框文本
dwStyle:指定窗口风格(标题,边框,滚动条...)
x:相对于父窗口的横坐标
y:相对于父窗口的纵坐标
nWidth:窗口宽度
nHeight:窗口高度
hWndParent:指向父窗口的句柄
hMenu:该窗口使用的某种类型的菜单的句柄
hlnstance:与窗口相关联的模块实例的句柄
lpParam:指向 CREATESTRUCT 结构的指针,传递 WM_CREATE 消息

重点说明:
1.一般窗口程序套路是:RegisterClass -> CreateWindow -> ShowWindow -> UpdateWindow,按照面向对象实现很好理解,先注册窗口类再实例化窗口,之后的 ShowWindow 是用于设置属性让窗口可见(WS_VISIBLE)或者不可见,UpdateWindow 是用来发送WM_PAINT消息更新窗口的

2.任何控件都属于窗口,所以创建某个控件也是需要 CreateWindow 函数,传入不同的 style 就表示不同的控件,比如:静态文本static,按钮button,编辑框edit,复选框Check Box

3.CreateWindow 会给普通窗口过程发送一个 WM_CREATE 消息,对于层叠,弹出式和子窗口,CreateWindow 给窗口发送WM_CREATEWM_GETMINMAXINFOWM_NCCREATE消息

  • BeginPaint

函数作用:当窗口收到 WM_PAINT 消息时,需要首先调用 BeginPaint 获取设备环境句柄,在其它情况下需要使用 GetDC 来获取设备环境句柄!因为我们不能直接访问硬件,所以需要借助设备环境(Device Context)这个中间层间接访问键盘,显示器等硬件设备

函数原型:HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint)

参数含义:

hwnd:被重绘窗口的句柄
lpPaint:指向一个用来接收绘画信息的 PAINTSTRUCT结构

当得到了设备环境句柄后,我们就可以调用图形设备接口(GDI)中已经封装好的函数,诸如:TextOut,DrawText,CreateMenu,CreateBitmap,Rectangle,CreatePen等

  • SendMessage

函数作用:主动发送一条消息给窗口

函数原型:LRESULT SendMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

参数含义:

hWnd:目标窗口的句柄
msg:发送的消息
wParam:附加消息,某些特定的消息需要用到
lParam:附加消息,某些特定的消息需要用到
  • GetWindowText

函数作用:用于将指定窗口的标题文本(如果存在)拷贝到一个缓存区内,如果指定的窗口是一个控件,则拷贝控件的文本

函数原型:Int GetWindowText(HWND hWnd, LPTSTR lpString, Int nMaxCount)

参数含义:

hWnd:窗口或者控件句柄
lpString:指向接收文本的缓冲区指针
nMaxCount:最大的保存长度
  • SetWindowText

函数作用:用于改变指定窗口的标题栏的文本内容(如果窗口有标题栏),如果指定窗口是一个控件,则改变控件的文本内容

函数原型:BOOL SetWindowText(HWND hWnd, LPCTSTR lpString)

参数含义:

hWnd:要改变文本内容的窗口或控件的句柄
lpString:指向改变后的字符串指针
  • DialogBox

函数作用:从一个对话框资源中创建一个模态对话框,该函数直到指定的回调函数通过调用 EndDialog 函数中止模态的对话框才能返回控制。该函数通过调用 DialogBoxParam 实现

函数原型:int DialogBox(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc)

参数含义:

hInstance:实例句柄
lpTemplate:对话框模板名
hWndParent:指定拥有对话框的窗口
lpDialogFunc:指向对话框过程的指针
  • CreateDialog

函数作用:创建一个非模态对话框,需要使用 DestroyWindow 结束该对话框。该函数通过调用 CreateDialogParam 实现

函数原型:HWND CreateDialog(HINSTANCE hlnstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC IpDialogFunc)

参数含义:

hInstance:标识该模块的可执行文件含有对话框模板
lpTemplate:对话框模板名
hWndParent:指定拥有对话框的窗口
lpDialogFunc:指向对话框过程的指针

重点说明:
当关闭非模态对话框或者窗口时,会调用DestroyWindow,这个函数先发送 WM_DESTROY 消息,接着发送 WM_NCDESTROY 消息

  • LoadString

函数作用:从资源里加载字符串资源到 CString 对象里,参数是资源 ID,同类型的还有LoadIconLoadCursor

函数原型:int WINAPI LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int nBufferMax)

参数含义:

hInstance:应用程序实例句柄
uID:资源ID
lpBuffer:接收从资源里拷贝字符串出来的缓冲区
nBufferMax:指明缓冲区大小
  • OutputDebugString

函数作用:输出调式信息到 Debugger

函数原型:void OutputDebugString(LPCTSTR lpOutputString)

参数含义:

lpOutputString:在调试器中调试时,输出的字符串
  • SetWindowPos

函数作用:改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置或Z序

函数原型:WINUSERAPI BOOL WINAPI SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)

参数含义:

hWnd:窗口句柄
hWndInsertAfter:窗口的 Z 顺序
x:指定窗口新位置的左边界
y:指定窗口新位置的顶边界
cx:以像素指定窗口的新的宽度
cy:以像素指定窗口的新的高度
uFlags:窗口尺寸和定位的标志
  • FindWindowEx

函数作用:在窗口列表中寻找与指定条件相符的第一个子窗口

函数原型:HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow)

参数含义:

hwndParent:要查找子窗口的父窗口句柄
hwndChildAfter:子窗口句柄,查找从在Z序中的下一个子窗口开始
lpszClass:指向一个指定了类名的空结束字符串
lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串
  • AnimateWindow

函数作用:该函数在显示与隐藏窗口时能产生特殊的效果,有两种类型的动画效果:滚动动画和滑动动画

函数原型:BOOL AnimateWindow(HWND hWnd, DWORD dwTime, DWORD dwFlags)

参数含义:

hWnd:指定产生动画的窗口的句柄
dwTime:指明动画持续的时间
dwFlags:指定动画类型
  • MoveWindow

函数作用:改变指定窗口的位置和大小

函数原型:BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)

参数含义:

hWnd:窗口的句柄
x:指定了CWnd的左边的新位置
y:指定了CWnd的顶部的新位置
nWidth:指定了CWnd的新宽度
nHeight:指定了CWnd的新高度
bRepaint:指定了是否要重画CWnd
  • EnumWindows

函数作用:枚举所有屏幕上的顶层窗口,并将窗口句柄传送给定义的回调函数。FindWindow 和它类似,只找顶层窗口不找子窗口

函数原型: BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)

参数含义:

lpEnumFunc:指向一个应用程序定义的回调函数指针
lPararm:指定一个传递给回调函数的应用程序定义值

回调函数原型:BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)

  • IsWindow

函数作用:判断目标窗口是否存在

函数原型:BOOL IsWindow(HWND hWnd)

参数含义:

hWnd:目标窗口句柄
  • GetWindow

函数作用:返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄

函数原型:HWND GetWindow(HWND hWnd, UNIT nCmd)

参数含义:

hWnd:窗口句柄
nCmd:说明指定窗口与要获得句柄的窗口之间的关系

重要说明:
Z 序表示窗口层叠时的顺序,Z 序越大窗口越靠前,即 Z 序小的窗口会被 Z 序大的窗口遮挡

终讲

原本草稿都写好了,打算一口气把文件操作,进程操作以及网络套接字相关 API 的常见函数及其参数都介绍一下,但是我不小心找到了大佬们汉化后的 Win32API参考手册,我觉得我也不可能有这个介绍得详细了!所以之后查 API 就用这个啦,英文好的朋友还可以直接去微软官网找文档

END

作为Microsoft 32位平台的应用程序编程接口, Win32 API是从事Windows应用程序开发所必备的。 首先对Win32 API函数做完整的概述;然后收录五大类函数: 窗口管理、图形设备接口、系统服务、国际特性以及网络服务; 在附录部分,讲解如何在Visual Basic和Delphi中对其调用。 本书是从事Windows应用程序开发的软件工程师的必备参考手册。 控件与消息函数 共91个函数 硬件与系统函数 共98个函数 设备场景函数 共73个函数 绘图函数 共105个函数 位图、图标和光栅运算函数 共39个函数 菜单函数 共37个函数 文本和字体函数 共41个函数 打印函数 共66个函数 文件处理函数 共118个函数 进程和线程函数 共40个函数 Windows消息函数 共11个函数 网络函数 共14个函数 目 录 第一章 Win32 API概论…………………………………………………………………………1 1.1 为什么使用Win32 API …………………………………………………………………1 1.2 Win32 API简介 …………………………………………………………………………1 1.3 综述………………………………………………………………………………………11 第二章 窗口管理函数(Windows Control Function) ……………………………………13 2.1 易用特性函数(Accessibility Features)…………………………………………13 2.2 按钮函数(Button)……………………………………………………………………20 2.3 插入标记(^)函数(Caret)…………………………………………………………21 2.4 组合框函数(Combo box) ……………………………………………………………24 2.5 通用对话框函数(Common Dialog Box) ……………………………………………25 2.6 标函数(Cursor)………………………………………………………………………36 2.7 对话框函数(Dialog Box)……………………………………………………………40 2.8 编辑控制函数(Edit Control)………………………………………………………54 2.9 图标函数(Icon)………………………………………………………………………54 2.10 键盘加速器函数(Keyboard Accelerator)……………………………………… 61 2.11 键盘输入函数(Keyboard InPut) …………………………………………………63 2.12 列表框函数(List box) ……………………………………………………………75 2.13 菜单函数(Menu) ……………………………………………………………………76 2.14 消息和消息队列函数(Message and Message Queue)……………………………90 2.15 鼠标输入函数(Mouse Input) ……………………………………………………100 2.16 多文档接口函数(Multiple Document Interface) ……………………………103 2.17 资源函数(Resource)………………………………………………………………105 2.18 滚动条函数(Scroll Bar)…………………………………………………………113 2.19 窗口函数(Window)…………………………………………………………………119 2.20 窗口类函数(Window Class)………………………………………………………144 2.21 窗口过程函数(Window Procedure)………………………………………………150 2.22 窗口属性函数(Window Property) ………………………………………………152 第三章 图形设备接口函数(Graphic Device Interface Function) …………………155 3.1 位图函数(Bitmap) …………………………………………………………………155 3.2 笔刷函数(Brush)……………………………………………………………………171 3.3 剪切函数(Clipping) ………………………………………………………………176 3.4 颜色函数(Color)……………………………………………………………………179 3.5 坐标空间与变换函数(Coordinate Space Transformation)……………………186 3.6 设备环境函数(Device Context) …………………………………………………195 3.7 填充形态函数(Filled shape) ……………………………………………………211 3.8 字体和正文函数(Font and Text)…………………………………………………215 3.9 ICM 2.0函数 …………………………………………………………………………238 3.10 线段和曲线函数(Line and Curve)………………………………………………295 3.11 图元文件函数(Metafile)…………………………………………………………300 3.12 多显示器函数(Multiple Display Monitors) …………………………………311 3.13 绘图函数和画图函数(Painting and Drawing)…………………………………313 3.14 路径函数(Path)……………………………………………………………………328 3.15 画笔函数(Pen) ……………………………………………………………………332 3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………………………………………………374 第四章 系统服务函数(System Service Function) ……………………………………383 4.1 访问控制函数(Access Control) …………………………………………………383 4.2 原子函数(Atom) ……………………………………………………………………406 4.3 客户/服务器访问控制函数(Client/Server Access Control) ………………409 4.4 剪贴板函数(Clipboard)……………………………………………………………431 4.5 通信函数(Communication)…………………………………………………………436 4.6 控制台函数(Console)………………………………………………………………444 4.7 数据解压库函数(Data Decompression Library) ………………………………463 4.8 调试函数(Debugging)………………………………………………………………466 4.9 设备输入输出函数(Device Input and Output)…………………………………472 4.10 动态数据交换函数(Dynamic Data Exchange) …………………………………474 4.11 动态数据交换管理函数(Dynamic Data Exchange Management)………………476 4.12 动态链接库函数(Dynamic-Link Library)………………………………………489 4.13 错误函数(Error) …………………………………………………………………496 4.14 事件日志函数(Event Logging) …………………………………………………499 4.15 文件函数(File)……………………………………………………………………503 4.16 文件安装库函数(File Installation Library) ………………………………542 4.17 文件映射函数(File Mapping)……………………………………………………546 4.18 文件系统函数 File System)………………………………………………………551 4.19 句柄和对象函数(Handle and Object)………………………………………………556 4.20 挂钩函数(Hook)………………………………………………………………………560 4.21 ImageHlp函数…………………………………………………………………………572 4.22 大整数操作函数(Iarge Integer Operations)……………………………………594 4.23 低层访问控制函数(Low-Level Access Control)………………………………596 4.24 LSAPI函数 …………………………………………………………………………617 4.25 邮槽函数(Mailslot)………………………………………………………………622 4.26 内存管理函数(Memory Management) ……………………………………………623 4.27 管道函数(Pipe) …………………………………………………………………655 4.28 电源管理函数(Power Management) …………………………………………… 663 4.29 进程和线程函数(Process and Thread)…………………………………………666 4.30 注册表函数(Registry)……………………………………………………………700 4.31 字符串操作函数(String Manipulation)……………………………………… 724 4.32 结构化异常处理函数(Structured Exception Handling) ……………………742 4.33 同步函数(Synchronization) ……………………………………………………745 4.34 系统信息函数(System Information)……………………………………………766 4.35 系统消息函数(System Message)…………………………………………………780 4.36 系统关机函数(System Shutdown) ………………………………………………781 4.37 磁带备份函数(Tape Backup) ……………………………………………………783 4.38 时间函数(Time)……………………………………………………………………789 4.39 计时器函数(Timer) ………………………………………………………………795 4.40 工具帮助函数(Tool Help) ………………………………………………………796 4.41 窗口站和桌面函数(Window Station and Desktop)……………………………799 4.42 Windows NT 4.0访问控制函数(Window NT 4.0 Access-Control)……………808 4.43 WinTrust函数(WinTrust)…………………………………………………………814 第五章 国际特性函数(International Peatures Punction)时性…………………………815 5.1 输入方法编辑函数(Input Method Editor)…………………………………………815 5.2 国家语言支持函数(National Language Support)………………………………… 828 5.3 Unicode和字符集函数(Unicode and Character Set)……………………………… 843 第六章 网络服务函数(Networding Service Function)……………………………………849 6.1 数据链路控制函数(DLC)………………………………………………………………849 6.2 网络函数(Net)…………………………………………………………………………849 6.3 NetBIOS函数……………………………………………………………………………896 6.4 网络DDE函数(Networking DDE)……………………………………………………897 6.5 RAS服务器管理函数(RAS Server Administration)………………………………901 6.6 远程访问服务函数(Remote Access Administration)………………………………910 6.7 服务函数(Service)……………………………………………………………………929 6.8 Windows网络函数(Windows Networking)……………………………………………930 附录1 如何在VB中调用DLL API ……………………………………………………………945 1 DLL API的声明……………………………………………………………………………945 2 DLL API的调用……………………………………………………………………………947 附录2 在Delphi中直接调用Windows API…………………………………………………953
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值