Win32 Windows编程 三

一、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将重新生成

通过时间戳(time stamp)判断程序是否需要重新编译连接,要重新编译连接

如果当文件修改最后时间与时间戳不同,将会重新编译链接.

1.3.2  执行过程

1 NMAKE 首先找到第一个依赖行,根据依赖行之间的关系,建立依赖树。例如:

A:B

B:C

C:D

NMAKE会建立对应的依赖树,

A

|-B

|-C

|-D

2 在树建好后 NMAKE会首先执行D的命令行,然后依次执行父节点的命令行,

3 在A的命令行执行结束后,退出NMAKE

4 如果需要执行指定依赖行,需要在执行NMAKE时增加依赖行的名称

1.4 使用

1.4.1  NAMKE  指定文件

1.4.2 使用缺省的文件名

如果make文件名使用makefile 直接使用nmake命令

二、字符编码

MessageBox : MessageBoxA MessageBoxW

2.1 编码的历史

2.1.1 ASCII  0~127  7位表示

2.1.2 ASCII 扩展码 8位 表示

代码页:通过代码页来切换对应的字符

2.1.3  双字节字符集 DBCS

使用一个或两个字节表示字符

2.1.4 Unicode

全部使用2个字节表示字符

内存/硬盘等资源占用大

2.2 C语言和编码

2.2.1 单字节字符和字符串

char c =  ‘A‘;

char * pc = "ABCD";

2.2.2 宽字节的字符

wchar_t cText = ‘A‘;

wchar_t*pszText =  L"ABCD";

2.2.3 相关函数

单字节字符的函数, 对应有多宽字节的函数。

strlen wcslen mbslen

printf  wprintf

2.2.4 TCHAR

为了程序中可以方便的支持unicode和多字节字符等,所以使用TCHAR来定义字符和字符串

更具_UNICODE宏开关会将TCHAR编译成不同字符类型

#define unicode

#ifndef unicode

typedef char tchar

#define __t(x) x

#else

typedef wchar_t tchar

#define __t(x) l##x

#endif

使用时需要增加TCHAR.H头文件支持,使用_UNICODE 宏开福安进行编译

定义方式:

TCHAR* pszText = __T( "ABCDEF" );

2.2.5 Unicode的控制台打印

WriteConsole

2.3 Win32 程序与编码

2.3.1 Win32 API 的定义

每个API对多字节和UNICODE分别有不同的版本

MessageBox

MessageBoxA 多字节

MessageBoxW UNICODE字符

2.3.2 字符转换

MultiByteToWideChar

WideCharToMultiByte

Win32 Windows编程 三,布布扣,bubuko.com

时间: 2024-08-03 10:50:46

Win32 Windows编程 三的相关文章

Win32 Windows编程 十

一 Windows绘图 1 图形绘制 1.1 图形绘制的方式 获取到绘图的句柄,设备描述符(DC),使用相应的绘图API,在设备上绘制图形 1.2 颜色 RGB,每种颜色8位,共24位颜色 32位颜色:颜色数量24为颜色,多出的8位表示灰度. 16位:颜色数量是2的16次方. Win32下,颜色的定义使用 COLORREF.RGB的宏定义颜色 COLORREF nColor = RGB( 0, 0, 0 );  黑色 COLORREF nColor = RGB( 255, 255, 255 );

Win32 Windows编程 十二

一.对话框 1.对话框的分类 2.对话框的基本使用方式 3.对话框资源 4.有模式对话框的使用 5. 无模式对话框的使用 5.1 添加对话框资源 5.2 定义窗口处理函数 BOOL CALLBACK DialogProc( HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam ) 5.3 创建对话框 HWND CreateDialog( HINSTANCE hInstance, // handle to module LPCTSTR lpTempl

Win32 Windows编程 九

资源的使用 1 资源文件 图标 光标 字符串 菜单  加速键 对话框资源位图等等 资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息 资源编译器 - RC.exe 2 图标资源 ICON 2.1 常用的几种大小: 16x16 ,32x32, 48x48 2.2 使用 HICON LoadIcon( HINSTANCE hInstance, // handle to application instance LPCTSTR lpIconName // name string or re

Win32 Windows编程 二

一.第一个窗口程序 1  入口函数 WinMain 2  窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc( hWnd, nMsg, wParam, lParam ); } 当窗口处理消息事件时 调用该函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam,

Win32 Windows编程 六

WM_PAINT消息 1 WM_PAINT 由于窗口的互相覆盖等,产生需要绘制的区域, 那么会产生WM_PAINT消息.一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域来产生 WM_PAINT消息 例如可以使用 InvalidateRect 声明一个需要重新绘制的区域 BOOL InvalidateRect( HWND hWnd, // handle to window CONST RECT* lpRect, // rectangle coordinates BOOL bE

Win32 Windows编程 七

定时器消息 1. WM_TIMER 按照定时器设置的时间段,自动向窗口发送一个定时器消息WM_TIMER.优先级比较低 定时器精度比较低,毫秒级别,消息产生时间也精度比较低 2 .消息和函数 WM_TIMER : 消息ID wParam  定时器的ID lParam  定时器的处理函数 SetTimer :设置一个定时器 UINT_PTR SetTimer( HWND hWnd, // handle to window 窗口的句柄 可以为NULL UINT_PTR nIDEvent, // ti

Win32 Windows编程 八

一.系统菜单 1 执行从系统提供的窗口命令,例如最大化.关闭等命令.本质上和普通菜单一样,所以我们也可以在程序中使用这个菜单 2 系统菜单的使用 2.1 获取系统菜单 GetSystemMenu HMENU GetSystemMenu( HWND hWnd, //要获取的窗口句柄 BOOL bRevert; //获取重置标识 ): bRevert: TRUE 重置 FALSE 不重置 当为TRUE时 会将菜单重置成默认状态,并返回菜单句柄,为false菜单项不重置, 获取当前系统菜单的状态 2.

Win32 Windows编程 五

一 Win32消息机制 1 消息机制 过程驱动:程序是按照我们预先定义好的顺序执行,每执行一步,下一步都已经按照预定的顺序继续执行,直到程序结束 事件驱动: 程序的执行顺序是无序的.某个事件点所执行的代码,是由外界通知.由于我们无法决定用户执行顺序,所以代码的执行也是无序 Win32的消息机制 - 事件驱动 2 Win32消息程序 2.1 Win32 窗口注册 2.2 Win32窗口创建 2.3 Win32消息循环 2.3.1 GetMessage BOOL GetMessage( LPMSG

Win32 Windows编程 四

一 窗口注册和窗口创建的过程 1  Win32窗口程序创建步骤 1.1 WinMain入口函数的定义 1.2 WindowsProc 函数的定义 1.3注册窗口 RegisterClass/RegisterClassEx 1.4创建窗口 CreateWindow /CreateWindowEx 1.5 显示刷新窗口 ShowWindow/UpdateWindow 1.6 消息处理 GetMessage /DisptchMessage 1.7 窗口退出 WM_DESTROY:PostQuitMes