好文档 - 专业文书写作范文服务资料分享网站

windows程序设计学习笔记(一)

天下 分享 时间: 加入收藏 我要投稿 点赞

Windows程序设计学习笔记

2015年10月4日

一、宽字符 wide-character

1、wchar_t: char的双字节(Unicode) 定义:typedef unsigned short wchar_t 示例:wchar_t c=’A’;

wchar_t *pw=L”hello!”; //L(代表long)告诉编译器按宽字符保存,即每个字符占两个字节

wchar_t a[]=L”hello!”; 2、宽字符库函数

wcslen( ):计算宽字串符的长度 如:wchar_t *pw=L”hello!”;

iLength=wcslen(pw); //字符串长度是6 二、windows头文件类型 1、CHAR和WCHAR

typedef char CHAR; //8位

typedef wchar_t WCHAR; //16位 变量前面可加wc以说明是一个宽字符 2、字符串指针

(1)8位字符串指针

tpyedef CHAR *PCHAR, *LPCH, *PCH, *NPSTR, *LPSTR, *PSTR; tpyedef CONST CHAR *LPCCH, *PCCH, *LPCSTR, *PCSTR; 前缀N和L表示“near”和“long”,指的是16位windows中两种大小不同的指针,在Win32中near和long指针没有区别 (2)16位字符串指针

tpyedef WCHAR *PWCHAR, *LPWCH, *PWCH, *NWPSTR, *LPWSTR, *PWSTR; tpyedef CONST WCHAR *LPCWCH, *PCWCH, *LPCWSTR, *PCWSTR; 3、WINAPI

定义:#define WINPAI _stdcall

该语句指定了一个调 用约定,包括如何生成机器代码以在堆栈中放置函数调用的参数 三、Hello程序

/*------------------------------------- HELLO.C--windows下显示Hello,world! 作者:lw 时间:2015年国庆 -------------------------------------*/ #include

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT(\ HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; 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.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT(\ szAppName,MB_ICONERROR); return 0; } hwnd = CreateWindow(szAppName, //window class name TEXT(\我的windows程序\//window caption WS_OVERLAPPEDWINDOW, //window style CW_USEDEFAULT, //initial x position CW_USEDEFAULT, //initial y position CW_USEDEFAULT, //initial x size CW_USEDEFAULT, //initial y size NULL, //parent window handle NULL, //window menu handle hInstance, //program instance handle NULL); //creation parameters ShowWindow(hwnd,iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) //窗口过程 win prock { HDC hdc; PAINTSTRUCT ps; RECT rect; switch(message) { case WM_CREATE: PlaySound(TEXT(\ return 0; case WM_PAINT:

hdc = BeginPaint(hwnd,&ps); GetClientRect(hwnd,&rect); DrawText(hdc,TEXT(\国庆!!\ DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd,message,wParam,lParam); } 注:

1、该程序未调用WinProc函数,而是windows调用 2、该程序调用的windows函数

▲LoadIcon 加载图标供程序使用

▲LoadCursor 加载鼠标指针供程序使用

▲GetStockObject 获取一个图形对象,在这个例子中,是获取绘制窗口背景的刷子 ▲RegisterClass 为程序窗口注册窗口类 ▲MessageBox 显示消息框

▲GreateWindow 根据窗口类创建一个窗口 ▲ UpdateWindow 指示窗口刷新自身 ▲GetMessage 从消息队列中获取消息 ▲TranslateMessage 转换某些键盘消息

▲DispatchMessage 将消息发送给窗口过程 ▲PlaySound 播放一个声音文件 ▲BeginPaint 开始窗口绘制

▲GetVlientRect 获取窗口客户区的尺寸 ▲DrawText 显示文本串 ▲EndPaint 结束窗口绘制

▲PostQuitMessage 在消息队列中插入一条“退出”消息 ▲DefWindowProc 执行默认的消息处理 3、大写标识符 (数值常量)

前缀+下划线:如CS_HREDRAW

前缀 类别 CS 类风格选项 CW 创建窗口选项 DT 绘制文本选项 IDI 图标ID号 IDC 光标ID号 MB 消息框选项 SND 声音选项 WM 窗口消息 WS 窗口风格

4、新的数据类型 ▲UNIT:unsigned int(无符号整数)是一个32位的值

▲WPARAM和LPARAM 消息响应机制, win16系统遗留下来的产物 parametric中的param 参数

W:WORD WPARAM 16位无符号整数 L:long LPARAM 32位有符号长整形

在win32中,WPARAM被定义为一个UINT,扩展到32位,而LPARAM补定义为一个LONG(就是C中的long数据类型),因此这两个参数都是32位的值。 ▲4种数据结构

结构 含义 MSG 消息结构 WNDCLASS 窗口类结构 PINTSTRUCT 绘图结构 RECT 矩形结构

5、句柄 句柄在Windows中使用非常频繁。句柄是一个数(通常是32位),它代表一个对象。Windows中的句柄类似传统C或者MS-DOS程序设计中使用的文件句柄。程序几乎是通过调 用Windows函数获取句柄。程序在其他Windows函数中使用这个句柄,以引用它代表的对象。句柄的实际值对程序来说是无关紧要的。但是,向您的程序提供句柄的Windows模块知道如何使用它来引用相应的对象。 6、匈牙利表示法

变量名以一个或者多个小写字母开始,这些字母表示变量的数据类型。例如szCmdLine中的 sz代表“以0结尾的串”。常用的变量前缀如下表:

前缀 数据类型 c char或WCHAR或TCHAR by BYTE(无符号字符) n short i int x,y int分别用作x坐标和y坐标 cx,cy int分别用作x长度和y长度,c代表“count” b或f BOOL(int);f代表“flang” w WORD(无符号short) l LONG(长整型) dw DWORD(无符号长整型) fn function(函数) s string(串) sz 以0结尾的串 h 句柄 p 指针

windows程序设计学习笔记(一)

Windows程序设计学习笔记2015年10月4日一、宽字符wide-character1、wchar_t:char的双字节(Unicode)定义:typedefunsignedshortwchar_t示例:wchar_tc=’A’;wchar_t*pw=L”hello!”;//L
推荐度:
点击下载文档文档为doc格式
12qer5wigj03gjy5z8cb
领取福利

微信扫码领取福利

微信扫码分享