开始学习Windows程序设计,为的在兵荒马乱的金融危机中沉淀些东西,很功利的心理,无他
三个先决条件:
(1)熟悉Windows98,还行,最起码从界面上,不陌生
(2)有C语言简单的基础,这个挺汗,学的少,要补齐,学习的过程中补齐,要熟悉C语言,特别是结构和指针
(3)安装了VC++6.0,装好了,不过MSDN不能用,重新装了个MSDN,从VC++调用不起来,应该没大影响吧
Windows简史(略过,不感兴趣)
Windows运作机制的核心是一个称作「动态链接」的概念。Windows的主要部分仅通过三个动态链接库实作。这代表了Windows的三个主要子系统,它们被称作
Kernel:16位的KRNL386.EXE和32位的KERNEL32.DLL
User:16位的USER.EXE和32位的USER32.DLL
GDI:16位的GDI.EXE和32位的GDI32.DLL
API和内存模式
理解个概念,对现在编程,没啥帮助
语言选项
踏踏实实的先从c++用起,学起
程序开发环境
说了这么多就是说MSDN是个好东西
API
同上,MSDN是个好东西
第一个Windows程序,这个是最感兴趣的,虽然挺晦涩(现在看起来),但是看了后面的解释,能够背下来每个部分都是什么
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0);
return 0 ;
}
#include <windows.h> 是表头文件,一般都要用到它
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
这个比较复杂
WINAPI:标识符指定了一个呼叫约定,包括如何生产机械码以在堆栈中放置函数呼叫的参数。许多Windows函数呼叫声明为WINAPI。
WinMain:函数声明为返回一个int值
HINSTANCE hInstance:被称作「执行实体句柄」。在Windows程序设计中,句柄仅是一个应用程序用来识别某些东西的数字。在这种情况下,该句柄唯一地标识该程序,还需要它在其它Windows函数呼叫中作为参数。
hPrevInstance:在Windows的早期版本中有点用,在32位Windows版本中,该概念已被抛弃。传给WinMain的第二个参数总是NULL(定义为0)。
PSTR szCmdLine:用于执行程序的命令列,某些Windows应用程序利用它在程序启动时将文件加载内存。
int iCmdShow:指出程序最初显示的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中(窗口和消息章节有详细介绍)
MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0 这个用于显示短消息,就是个对话框
NULL是个窗口句柄,在窗口和消息章节有详细介绍
TEXT ("Hello, Windows 98!")是消息中显示的内容
TEXT ("HelloMsg")是消息的标题栏现实的内容
0主要是显示窗口上面的图案和有几个button会被显示出来,通常是十六进制的后三位相或可以组合出不同的组合
(1)倒数第一位确定有几个按钮
(2)倒数第二位确定消息框中的图示
(3)倒数第三位没太看明白
最后是如何编译和运行程序
简单点说就是写完代码之后F7->Ctrl+F5就搞定
个人问题
(1)现在我们所使用的应该都是32位的Windows版本,那么WinMain的第二位是不是基本上都是NULL
(2)Messagebox中的倒数第三位的用法,标准格式都需要写成0x00000XXXL么