第一章 开始
1.基础
掌握c语言+熟练windows界面操作系统
2.语言选项
使用 C 语言和原始的 API 不是编写 Windows 98 程式的唯一方法。然而,这
种方法却提供给您最佳的性能、最强大的功能和在发掘 Windows 特性方面最大
的灵活性。可执行档案相对较小且运行时不要求外部程式库(自然,Windows DLL
自身除外)。最重要的是,不管您最终以什么方式开发 Windows 应用程式,熟
悉 API 会使您对 Windows 内部有更深入的了解。
可选语言很多 c/c++/vb/java
显然,很难说哪种方法更有利於开发 Windows 应用程式。更主要的是,也
许是应用程式自身的特性决定了所使用的工具。不管您最後实际上使用什么工
具写作程式,学习 Windows API 将使您更深入地了解 Windows 工作的方式。
Windows是一个复杂的系统,在API上增加一个程式写作层并未减少它的复杂性,
仅仅是掩盖了它,早晚您会碰到它。了解 API 会给您更好的补救机会。
以上一堆大佬经验
3.第一个win32程序与c程序的对比
c程序:
#include <stdio.h>
int main ()
{
printf ("hello, world\n") ;
return 0 ;
}
我们还可以包括 main 的参数,把程式弄得更长一些,但让我们暂且这样就
好了——包括一个 include 宣告、程式的进入点、一个对执行期程式库函式的
呼叫和一个 return 语句。
同样效果的 Windows 程式
Windows 关於「hello, world」程式的等价程式有和文字模式版本完全相同
的元件。它有一个 include 宣告、一个程式进入点、一个函式呼叫和一个 return
语句。下面便是该程式:
/*------------------------------------------------------------------
HelloMsg.c -- Displays "Hello, Windows 98!" in a message box
(c) Charles Petzold, 1998
--------------------------------------------------------------------*/
#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 ;
}
WinMain 函式宣告为返回一个 int 值。WINAPI 识别字在 WINDEF.H 定义,语
句如下:
#define WINAPI __stdcall
该语句指定了一个呼叫约定,包括如何生产机械码以在堆叠中放置函式呼
叫的参数。许多 Windows 函式呼叫宣告为 WINAPI。
WinMain 的第一个参数被称作「执行实体代号」。在 Windows 程式设计中,
代号仅是一个应用程式用来识别某些东西的数字。在这种情况下,该代号唯一
地标识该程式,还需要它在其他 Windows 函式呼叫中作为参数。在 Windows 的
早期版本中,当同时运行同一程式多次时,您便创建了该程式的「多个执行实
体(multiple instances)」。同一应用程式的所有执行实体共用程式和唯读
的记忆体(通常是例如功能表和对话方块模板的资源)。程式通过检查
hPrevInstance 参数就能够确定自身的其他执行实体是否正在运行。然後它可以
略过一些繁杂的工作并从前面的执行实体将某些资料移到自己的资料区域。
在 32 位元 Windows 版本中,该概念已被抛弃。传给 WinMain 的第二个参数
总是 NULL(定义为 0)。
WinMain 的第三个参数是用於执行程式的命令列。某些 Windows 应用程式利
用它在程式启动时将档案载入记忆体。WinMain 的第四个参数指出程式最初显示
的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工
作列中。我们将在第三章中介绍使用该参数的方法。