Windows图形界面:Windows程序设计笔记

您所在的位置:网站首页 windows窗口软件是一个提供多窗口图形界面的 Windows图形界面:Windows程序设计笔记

Windows图形界面:Windows程序设计笔记

2023-08-05 15:29| 来源: 网络整理| 查看: 265

1.动态链接

早期,windows的主要部分只需在三个动态链接库中实现,代表了windows的三个主要子系统:Kernel(内核) User(用户) GDI。

Kernel:内存管理,文件I/O,任务管理等

User:用户界面,负责所有的窗口管理

GDI:图形设备接口,负责在屏幕或打印机上显示文本和图形

在windows程序中,调用windows函数和调用C语言库函数(如strlen),没什么区别。最主要的区别在于C语言库函数的机器代码会直接链接到你的程序代码中,而windows函数则是放在你的程序之外的dll中。

2.头文件

windows.h是一个重要的包含文件,它囊括了若干其他windows头文件,其中某些头文件又包含另外的一些头文件。下列几个是最重要也是最基本的头文件:

windef.h 基本数据类型定义文件winnt.h 支持Unicode的类型定义winbase.h 内核函数winuser.h 用户图形界面函数wingdi.h 图形设备接口函数

这些头文件定义了windows的所有数据类型、函数调用、数据结构以及常量标识符

3.程序入口

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, TEXT("Hello Windows!"), TEXT("HelloMsg"), 0); return 0; }

windows程序的入口是WinMain

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

在WinBase.h中声明如下

WinMain ( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd );

绝大部分windows程序在命名上都采用“匈牙利标记法”系统。变量名前有一个短前缀,用以表示该变量的数据类型。i表示int,sz“以零结尾的字符串”(String Terminated with a Zero),LP代表常指针(Long Pointer)。

#define WINAPI __stdcall

这条语句规定了一种函数调用的约定,表明如何生成在堆栈中放置函数调用参数的机器代码。

WinMain的第一个参数一般叫做实例句柄(Instance Handle).在Windwos程序中,句柄无非就是一个数值,程序里用它来标识某些东西。比如我们这个例子中,这个句柄就唯一标识了我们这个程序。

实际上在某些Windows程序中,把句柄当作参数调用是必须的。比如早期的Windows版本中,当多路并发运行同一个程序时,就需要为那个程序创建多个实例。同一个程序的所有实例都共享代码一起只读存储(即菜单或者对话框模板之类的资源)。一个程序可以通过查看hPreInstance参数从而知道是否有其他的实例正在运行。它也可以因此跳过某些零散杂务步骤,把一些数据从前一个实例搬到自己的数据区来。在32位Windows中,这一概念已不再采用,因此WinMain的第二个参数通常总是NULL。

WinMain的第三个参数是用来运行程序的命令行(Command Line)。有些Windows程序在启动时用它来把文件装入内存。

WinMain的第四个参数用来指示程序最初如何显示:或正常显示,或最大化到全屏,或最小化显示在任务栏。

 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3