随笔分类 - Win32(DN)
学习DNC++的时候, 里面的Win32部分
摘要:一 线程局部存储 Thread Local Storage 1 由于多个线程使用同一个变量,各个线程 都对变量进行操作,那么变量的值会被不同 线程操作覆盖。 通常 变量A <-- 线程A <-- 线程B TLS 变量A <-- 线程A 变量A <-- 线程B 2 TLS的使用 2.1 使用关键字 __declspec(thread) __declspec(thread) CHAR * g_pszText2 = NULL; 2.2 TLS相关API 2.2.1 创建TLS索引 DWORD TlsAlloc(VOID) 返回一个TLS索引号 2.2.2 设置值 BOOL T
阅读全文
摘要:一 Windows进程1 Windows进程 进程是一个容器,包含了一个应用程序实例的各种资源。Windows多任务的操作系统,因此可以同时执行多个进程。 2 Windows进程的一些特点 2.1 进程中包含了执行代码等资源。 2.2 进程都具有私有的地址空间。 2.3 每个进程都有一个ID,标识进程。 2.4 每个进程都有自己的安全属性 2.5 至少要包含一个可以执行的线程。 二 进程的环境 1 环境信息的获取 获取: LPVOID GetEnvironmentStrings(VOID) 返回值是获取到的所有环境信息 释放: BOOL FreeEnvironmentStrings( ...
阅读全文
摘要:Windows的内存管理一 地址空间 1 地址空间 一个程序最大的寻址范围。对于Win32操作系统最大的寻址范围是2的32次方,0-0xFFFFFFFF。这个寻址范围由CPU决定。CPU的寻址范围越大,编程难度降低。 2 地址空间的划分 通常情况下: 2.1 用户空间 地址范围 0 - 0x7FFFFFFF(2G),运行应用程序代码、数据等等。 2.2.1 空指针区(NULL区) 地址范围 0 - 0x0000FFFF 2.2.2 用户区 地址范围 0x00010000 - 0x7FFEFFFF 2.2.3 64K禁入区 地址范围 0x7FFEFFFF - 0x7FFFFFFF 2.2 ...
阅读全文
摘要:一 Windows卷(Volumn) 1 卷的获取 GetLogicalDrives 返回一个DWORD值,这个值的每个位代表是否存在相应的卷 GetLogicalDriveStrings 获取一个所有卷的盘符的字符串 DWORD GetLogicalDriveStrings( DWORD nBufferLength,//BUFF的大小 LPTSTR lpBuffer );//BUFF的指针 BUFF存放数据的格式: A:\ + 0 + C:\ + 0 ... + 0 Windows的盘符从A-Z 2 卷的类型 UINT GetDrive...
阅读全文
摘要:一 Windows的库 由于项目的复杂程度,或者为了提高代码的重用率等等,所以才引入了库程序。 库包含两种: 1 静态库:扩展名为LIB的文件,是不能被加载的程序,可以理解为目标程序的归档。 2 动态库:扩展名是DLL的文件,是可以被应用程序加载的程序。 二 静态库 1 静态库的特点 1.1 目标程序的归档 1.2 静态库的代码会被嵌入到程序当中。 1.3 程序执行时不需要静态库存在 2 C语言静态库 2.1 创建静态库 创建Win32静态库项目,使用*.C文件建立项目。 在Setting里将library选项卡下的output路径改为 ../lib/*.lib 2.2 添加静态库函数View
阅读全文
摘要:一 组合框 ComboBox 1 组合框的样式 1.1 简单组合框 CBS_SIMPLE 1.2 下拉式组合框 CBS_DROPDOWN 能输入或者从下拉列表中选择 1.3 下拉列表式组合框 CBS_DROPDOWNLIST 只能从下拉列表中选择 2 组合框的使用 2.1 组合框的创建 窗口类名称是 COMBOBOX, 使用CreateWindow创建, 创建时要注意窗口高度(弹出的列表). 2.2 增加选项 CB_ADDSTRING/CB_INSERTSTRING CB_ADDSTRING: WPARAM为0不使用, LPARAM是添加字符串的地址 2.3 删除选项 CB_DELET...
阅读全文
摘要:一 对话框 1 对话框的分类 2 对话框的基本使用方式 3 对话框资源 4 有模式对话框的使用 5 无模式对话框的使用 5.1 添加对话框资源 5.2 定义窗口处理函数 BOOL CALLBACK DialogProc( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam ); // second message parameter 5.3 创建对话框 HWND CreateDi...
阅读全文
摘要:一 Windows绘图 1 图形绘制 1.1 图形绘制的方式 获取到绘图句柄-设备描述表(DC),使用相应的绘图的API,在设备上绘制图形. 1.2 颜色 R\G\B三色, 每种颜色8位, 共24位颜色. 32位颜色: 颜色数量24位颜色, 多出来的8位表示灰度. 16位: 颜色数量2的16次方. Win32下,颜色的定义 COLORREF(DWORD), RGB宏定义颜色 COLORREF nColor = RGB( 0, 0, 0 ); COLORREF nColor = RGB( 255,255,255 ); COLORREF nColor = RGB( 255,0, 0 ); 从...
阅读全文
摘要:一 系统菜单 1 执行系统提供的窗口命令,例如最大化、关闭等命令。本质上和普通菜单一样,所以我们也可以在程序中使用这个菜单 2 系统菜单的使用 2.1 获取系统菜单 GetSystemMenu HMENU GetSystemMenu( HWND hWnd, //要获取的窗口句柄 BOOL bRevert //获取时重置标示 ); bRevert: TRUE 重置 FLASE 不重置 当Revert为TRUE时,会将菜单重新置成默认的状态,并返回菜单句柄。如果为FALSE,菜单项不重置,获取到当前系统菜单的状态。 2.2 修改系统菜单,例如增加、删除 2.2.1 AppednMen...
阅读全文
摘要:一 鼠标消息 1 鼠标消息 1) 基本鼠标消息 WM_LBUTTONDOWN 左键按下 WM_LBUTTONUP 左键抬起 WM_RBUTTONDOWN 右键按下 WM_RBUTTONUP 右键抬起 WM_MOUSEMOVE 鼠标移动 2) 双击消息 WM_LBUTTONDBLCLK 左键双击 WM_RBUTTONDBLCLK 右键双击 3) 滚轮消息 WM_MOUSEWHEEL 鼠标滚轮 2 消息的参数 WPARAM - 当前键盘和鼠标按键状态,例如MK_CONTROL/MK_SHIFT,MK_LBUTTON等 LPARAM - 当前鼠标的坐标,坐标的原点是窗口客户区的左上角. X坐标 -.
阅读全文
摘要:一 Win32消息机制 1 消息机制 过程驱动:程序是按照我们预先定义好的顺序执行,每执行一步,下一步都已经按照预定的顺序继续执行,直到程序结束。 事件驱动:程序的执行顺序是无序的。某个时间点所执行的代码,是由外界通知。由于我们无法决定用户执行顺序,所以代码的执行也是无序。 Win32的消息机制 - 事件驱动 2 Win32消息程序 2.1 Win32窗口注册 2.2 Win32窗口创建 2.3 WIn32消息循环 2.3.1 GetMessage BOOL GetMessage( LPMSG lpMsg,//存放获取到的消息数据 HWND hWnd,//获取消息...
阅读全文
摘要:一 窗口注册和创建 1 Win32窗口程序创建步骤 1.1 WinMain入口函数的定义 1.2 WindowProc函数的定义 1.3 注册窗口类 RegisterClass/RegisterClassEx 1.4 创建窗口 CreateWindow/CreateWindowEx 1.5 窗口的显示和刷新 ShowWindow/UpdateWindow 1.6 消息处理 GetMessage/DispatchMessage 1.7 窗口退出 WM_DESTROY/PostQuitMessage 2 窗口的注册 2.1 窗口类的分类 2.1.1 系统全局的窗口类.比如按钮("BUTT
阅读全文
摘要:一 NMAKE和Makefile 1.1 NMAKE - 命令解释器,根据Makefile文件中 定义的脚本,完成项目的编译等操作。 1.2 Makefile - 定义编译/链接等脚本语言。 1.3 Makefile文件的编写 1.3.1 基本语法规则window.exe:window.obj // 依赖行 cl.exe window.c /c // 命令行 link.exe window.obj user32.lib window.exe的依赖项是window.obj,如果 window.obj被重新改写,window.exe将重新 生成. 通过时间戳(ti...
阅读全文
摘要:Win32 Windows编程1 Windows编程基础2 Windows文字的编码3 窗口程序4 窗口消息5 菜单和加速键6 绘图7 对话框8 基本控件 .....一 Windows编程基础1 Win32应用程序的基本类型 1.1 控制台程序 不需要完善的Windows窗口,可以使用DOS窗口 的方式显示。 1.2 Win32窗口程序 包含窗口的程序。可以通过窗口与程序进行交互。 1.3 Win32库程序 提供已有的代码,供其他程序使用。 动态库:DLL 是在执行的时候可以加载的程序。 静态库:LIB 是在编译链接时使用的程序。 1.4 对比 1.4.1 程序的入口函数不同 控制台:main
阅读全文