⽤C语⾔进⾏Windows编程⼊门
⽤C语⾔进⾏Windows编程⼊门
本⽂对⼀般教程或⽹上有的(如C语⾔语法等基础)不深⼊介绍,对初学者易造成疑惑误解或难以到的内容进⾏较详尽的介绍。
学习C语⾔很久了,⼀直⾯对控制台应⽤程序(Win32 Console Application),没有漂亮的界⾯,是不是不爽呀。⽤C开发图形界⾯程序,有多种技术⽅案,本⽂希望⽤简单的例⼦,深⼊浅出的介绍⼀种⽅案——⽤C和SDK进⾏图形界⾯编程。
图形界⾯⼜叫图形⽤户接⼝(GUI = Graphical User Interface),这样的程序的窗⼝包含最⼤化、最⼩化、关闭按钮,也包含菜单、单选框、图像等组成。
本⽂主题是⽤C语⾔进⾏Windows编程。
⼀般⽽⾔,基于 Windows 的编程⽅式有两种。⼀种是使⽤ Windows 的 API(Application Programming Interface ,应⽤程序编程接⼝)函数,通常⽤ C/C++ 语⾔按相应的程序框架进⾏编程。这些程序框架往往就程序应⽤提供相应的⽂档、范例和软件开发⼯具包(Software Development Kit ,SDK ),所以这种编程⽅式有时⼜称为 SDK ⽅式。另⼀种是使⽤“封装”⽅式,例如Visual C++ 的MFC⽅式,它是将
SDK 中的绝⼤多数函数、 数据等按 C++“类”的形式进⾏封装,并提供相应的应⽤程序框架和编程操作,简单地
说,MFC 是对 API 的封装,隐藏了许多复杂的情节。
C语⾔源代码⽂件的后缀是.c,C++语⾔源代码⽂件的后缀是.cpp。
要进⾏Windows编程,需要先对Windows 有⼀个初步认识
Windows 的 3 个主要⼦系统:内核(kernel),⽤户(user),GDI。
内核 负责操作系统的传统⼯作:如 内存管理,⽂件输⼊/输出 以及任务管理等。
⽤户 指的是⽤户界⾯,负责所有的窗⼝管理。
GDI 就是图形设备接⼝,负责在屏幕或打印机上显⽰⽂本与图形。
在 Windows 程序中,调⽤ Windows 函数与调⽤ C 语⾔的库函数没有什么两样。
最主要的区别就是 C 语⾔库函数的机器代码会直接链接到你的程序代码中去,⽽ Windows 函数则是放到你的程序之外的 DLL ⾥。
关于这些,作为初学者可以⼤体了解之,不必深究,随着深⼊学习实线,经过⼀段时间,才会有清晰的认识。
下⾯,先使⽤Dev-C++开发环境,然后在再介绍VC++开发环境。
所谓,也就是安装编译器或者 IDE(集成开发环境)。Windows 下的C语⾔ IDE 众多,本⼈使⽤的是 Dev C++5.11。Dev C++ 是⼀款免费开源的 C/C++ IDE,内嵌 GCC 编译器(Linux GCC 编译器的 Windows 移植版),是 NOI、NOIP 等⽐赛的指定⼯具Dev C++ 的优点是体积⼩(只有⼏⼗兆)、安装卸载⽅便、学习成本低,适合于初学者使⽤,缺点是调试功能弱,功能并不完善,不易⽤来开发商业级的软件。
VC++开发环境,讲了两种VC6.0(VC++6.0)和Microsoft Visual C++ 2010 Express。
微软公司的VC6.0(VC++6.0)完整版在Win7、Win10中存在兼容问题,故使⽤VC++ 6.0第三⽅修改版本,在⽹上也容易到。微软新版 Visual Studio(简称 VS,包含VC++),如VS2010、VS2015等,⽬前最新版式VS2019,功能越来越全⾯,但越来越庞⼤。全国计算机等级考试组委会决定,2018年全国计算机⼆级 C、C++两个科⽬的应⽤软件由 Visual C++6.0 改为 Visual C++ 2010 学习版(即Visual C++ 2010 Express)。综合看来,C语⾔初学者,可以考虑VC++6.0第三⽅修改的版本,或者使⽤Microsoft Visual C++ 2010 Express。
为了便于学习者,我给出开发⼯具(C_C++实验学习环境合集)的下载地址:
所提的三种⼯具,对每⼀种都先演⽰控制台程序,再演⽰带界⾯的Windows程序。
不带图形⽤户界⾯(Graphical User Interface,简称 GUI,⼜称图形⽤户接⼝)的程序是控制台程序(Console Application)。带界⾯的Windows程序(Windows Application),也称为GUI程序(GUI Application)。
Dev-C++开发使⽤
下⾯简要介绍⼀下Dev C++的安装:
下载完成后,就像安装其他软件⼀样,点击安装包,出现如下图,语⾔先默认选择English,不要改变(安装完成后会选择中⽂简体的选项设置)。点ok!
接下来的安装界⾯点“I agree”按钮,之后,⼀路默认点击“next”按钮,直⾄“finish”,此时出现:
此时你就可以选择 中⽂简体。
控制台程序以 main() 为⼊⼝函数,Windows程序以 WinMain() 为⼊⼝函数,动态链接库(DLL)以 DllMain() 为⼊⼝函数(请查看 动态链接库DLL教程),不同的⼊⼝函数决定了不同类型的程序。
从main 到WinMain
学习编程⼀般从简单的例⼦⼊⼿,例如⼀个 C 程序常有下列简单的框架代码:
#include <stdio.h>
int main()
{
printf("Hello World!\n"); /*输出*/
return 0; /*指定返回值*/
}
该程序已包括 C 程序中最常⽤的 #include 指令、必须的程序⼊⼝ main 函数、库函数 printf 调⽤和 return 语句。由于此程序是在早期的DOS(Disk Operating System ,磁盘操作系统)环境的字符模型下运⾏的,因⽽ printf 函数所输出的都是字符流,也就是说,它在屏幕上输出⼀⾏⽂本“ Hello World! ”。基于 Windows的上述 C 程序代码框架肯定是有所不同的。等价的 Windows 程序可以写成:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow)
基础c语言代码{
MessageBox (NULL, TEXT("Hello, World!"), TEXT("Hello"), 0) ;
return 0 ;
}
使⽤C和Win32 SDK开发Windows图形界⾯程序,运⾏时会显⽰⿊乎乎的CMD窗⼝。原因是控制台(CONSOLE)程序,必然出现cmd 窗⼝。如何不显⽰CMD窗⼝后⾯再说。
该程序的 #include<windows.h> 就是像 C 语⾔的 #include<stdio.h> ⼀样重要的头⽂件。这些头⽂件
定义了Windows的所有数据类型、函数原型、数据结构和符号常量,也就是说,所有的Windows API都在这些头⽂件中声明。
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow),就像 C 语⾔的 int main(void) ⼀样,都是程序的⼊⼝。C 程序的⼊⼝是 main,Windows 程序的⼊⼝是 WinMain。WinMain() 函数的原型为:
int WINAPI WinMain(
HINSTANCE hInstance, // 当前窗⼝句柄
HINSTANCE hPrevInstance, // 前⼀个窗⼝句柄,Win32下为NULL(Win16留下的废物,⽬前已弃⽤)
LPSTR lpCmdLine, // 命令⾏参数
int nCmdShow // 窗⼝显⽰⽅式
);
WinMain的第⼀个参数叫做"实例句柄"(Instance Handle)。句柄就是⼀个数值,⽤它来标识某些东西。句柄是⼀个 4byte 的数值,可⽤来标识 窗⼝,按钮,图标,滚动条,输出设备,控件或者⽂件等等。
第⼆个参数通常是 NULL。
第三个参数是⽤来运⾏程序的命令⾏(CommandLine)。
第四个参数是⽤来指明程序最初如何显⽰。(最⼤化到全屏,正常显⽰,最⼩化到任务栏)。
MessageBox函数:
函数原型:int WINAPI MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
第⼀个参数通常是⼀个窗⼝句柄。
第⼆个参数是在信息框⾥出现的⽂本字符串。
第三个参数是标题栏上显⽰的⽂本字符串。
第四个参数是以前缀MB_开头的⼀些常量组合。⽤以对话框中的按钮,图标等等。
在输⼊代码时,⼀个好的习惯是创建了⼀个新程序后,在还未输⼊代码之前先将该程序保存到硬盘某个⽬录下,然后在程序的编辑过程中经常性地保存程序,以防⽌机器突然断电或者死机。要保存程序,只需从主菜单选择“File—〉Save”,此时会将程序重新保存到之前指定的⽬录下,如F:\temp ;如果想将程序保存到其他的硬盘路径下,可以选择“File—〉Save As…”
【 插⼊⼀个话题,跳过这部分不影响理解本⽂:在Dev-C++上使⽤⾃⼰写头⽂件
1.新建--源代码。注意:删去不必要的函数尤其是主函数,删去多余的定义,避免出现重复定义。数据类型⽤typedef定义。
2.保存:在保存类型的下拉列表中选择Header Files
3.写⼊函数,定义等
4.别忘了保存
5.引⽤:例:#include<;路径\⽂件名.后缀>
#include<C:\Users\lair\Desktop\hello.h>
Dev C++安装第三⽅库(.h⽂件、头⽂件)
注意兼容的才能使⽤。
初学者容易被这些坑搞得⼼灰意冷。
打开Dev-C++,点击⼯具栏,⼯具栏选择编译选项到⽬录,C++包含⽂件,在C++包含⽂件中可以到头⽂件添加的位置
第三步 :电脑中到这个位置,把复制粘贴过去:
注意:不同系列编辑器(如TC++、DEV-C++、Visual C++)的头⽂件(.h⽂件、库)⼀般不兼容,使⽤时要注意。】
如何不显⽰CMD窗⼝呢?参见下图:
如此,可由Dev-C++⾃动⽣成⼀些代码——Windows图形界⾯框架代码 ,如下图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论