代码改变世界

C语言Windows程序设计->第五天->回顾与反思

2012-10-10 18:37  wid  阅读(2254)  评论(0编辑  收藏  举报

回顾与反思

========

 

在前四天的学习中, 我们主要学习了有关字符集和创建窗口的一些知识, 下午对这些知识做一下简要的回顾与在编程思想上的反思。

 

一、回顾

  在第一天的学习中主要了解了Windows的历史、相关的开发环境并且完成了我们的第一个Windows程序, MessageBox对话框, 这里, 再来看看我们的第一个Windows程序, 他标志着我们已经跨入了Windows程序设计的大门, 就像printf("Hello,world!");一样经典!

#include<windows.h>

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
{
    MessageBox( NULL, TEXT("Hello,world!"), TEXT("MessageBox"), 0 );

    return 0;
}

 

  在第二天主要学习了有关ASCII与Unicode字符集的知识, ASCII字符用7位或8位(扩展版)二进制表示, 每个字符占一个字节, 最多能容下256个字符, 虽然ASCII码是一种非常可靠的标准, 但遗憾的是但它不能满足其他一些国家的需求, 因此Unicode便担任了这个任务, Unicode使用16位(2字节)的二进制编码方式来表示字符, 最多能够容下65536个字符, 能够容下世界上的所有书面文字以及一些特殊符号, Unicode只有一个字符集, 避免了二义性, 能够满足跨语言、跨平台进行文本转换、处理的要求。

 

  此外, 我们还了解了宽字符与C语言的一些关系, 宽字符在C语言中被定义为wchar_t型, 实际上它就是一个2字节的unsigned short型数据, 随后我们了解到了关于宽字符处理函数的一些用法, 比如wcscat(连接字符串)、wcschr(找字符在字符串中出现的位置)、wcscmp(比较字符串)、wcscpy(复制字符串)、wcslen(求字符串长度)、wcsstr(判断一个字符串在另一个中首次出现的位置), 我们还学习了一个TEXT宏的用法, 省去在声明一个宽字符字符串时在前面加'L'字母的问题。

 

  第三天就我们使用va_list宏完成了myMessageBox函数变参的功能, 可以用来实现像printf函数那样格式化输出, 顺便看了段创建一个普通窗口的代码。

 

  第四天到今天上午我们来详细分析了创建窗口的详细过程, 首先要声明一个窗口过程函数, 用来处理Windows发来的消息, 然后通过WNDCLASS窗口类定义一个窗口类的对象, 一个窗口总是根据窗口类来创建的, 将这个窗口类对象的属性全部定义好后就调用RegisterClass函数对窗口类进行注册, 再呼叫CreateWindow函数完成对窗口的创建, 当窗口创建完成后并不会立即显示在屏幕上, 我们还需要利用ShowWindow配合UpdateWindow这两个函数让窗口正常显示出来。

 

  当一个窗口创建完成后, Windows系统就会源源不断的发来一些消息等待我们处理, 通过GetMessage我们从消息队列中获取这些消息, 并用TranslateMessage把虚拟键消息转换为字符消息, 再通过DispatchMessage函数将得到的消息分发给窗口过程, 完成对消息的处理。

 

  对于消息的处理部分, 我们使用switch语句, case到不同的消息后作出不同的响应, 别忘了, 调用DefWindowProc默认的消息处理函数处理我们没有处理到消息, 确保每个消息都能被正常的处理。

 

 

二、反思

  在从C语言控制台程序设计过渡到Windows平台程序设计时, 首先最大的感触就是常量标识符好多, 函数好多, 好再这些标识符不需要强记下来, 对于API也有MSDN Library这个大手册方便查阅。

 

  其次, 感觉到了C语言控制台编程对函数的调用与Windows程序设计中对函数的调用对象不同, 在C语言控制台编程中, 我们通过调用库函数以及自定义函数完成程序功能的实现, 而在Windows程序设计中, 虽说我们也调用了系统提供的函数, 但是最终, 例如对消息的处理是系统调用我们定义好的消息处理函数, 以便完成程序的功能。

 

  笔者认为, 对于Windows程序设计学习的入门阶段, 首先应该从大体上了解整个程序大致的框架, 以及能从宏观角度了解程序的工作流程, 不要急着能够在不看书不查资料的情况下就能顺利的把一个程序敲出来, 对于程序运行的具体细节, 等入门之后再做研究, 遇到不认识的标识符或API, 可以直接查阅MSDN Library或者在搜索引擎上搜索它, 就可以得到它的详细解释, 要善于利用MSDN Library和搜索引擎。

 

-----------------

 

Wid, 2012.10.10

 

上一篇: C语言Windows程序设计->第五天->详解我的窗口(下)