在c语言windows文件的作用,Windows 编程简介从C/C++到Windows编程

Windows 编程简介

一、从C/C++到Windows编程

前面我们学习的C/C++程序都是DOS程序(或称为Windows控制台程序),也就是现在大学里的开设的《C/C++程序设计》的内容,这些程序由于不涉及到Windows 编程的细节,因此比较容易入门学习,这对训练初学者的编程思想是很有用的,也是有益的。但是当我们基本掌握了C/C++程序设计后,就不能仅仅停留在DOS下(或Windows控制台下)编写、运行程序。我们应该从编程思想的训练到Windows实用编程的转变。

一个最简单的Windows C程序。

include

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

{

MessageBox(NULL,"Hello 欢迎使用Turbo C for Windows 集成实验与学习环境!","我的第一个Windows程序",MB_OK);

return 0;

}

程序的运行结果是:

程序解析:

1、windows.h是每一个Windows程序都需要的头文件。

2、WinMain函数是所有Windows C程序的入口,类似于DOS C中的main函数。

3、MessageBox是一个Win32 API函数(API,Application Programming Interface 应用程序接口),其作用是弹出一个对话框,显示消息的内容。该函数的第一个参数是用来指定父窗口句柄,即对话框所在的窗口句柄。第二个参数是用来显示消息的内容(你可以修改成你想显示的内容)。第三个参数是 对话框标的标题,如本例的“我的第一个Windows程序”,第四个参数是指定对话框中显示的按钮,试一试,将MB_OK修改成MB_OKCANCEL,运行一下程序会出现什么结果,再试一试修改成MB_RETRYCANCEL

试一试将个求1+2+3+…+100的和的DOS C程序修改成Windows 程序。

include "stdio.h"

main()

{

int sum=0,i;

for(i=1;i<=100;i++)

{

sum=sum+i;

}

printf("1-100自然书数的和是:%d\n",sum);

}

参考程序:

include

include

include

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

{

int sum=0,i;

char str1[40]="1-100自然书数的和是:",str2[10];

for(i=1;i<=100;i++)

{

sum=sum+i;

}

itoa(sum,str2,10); /将整型变量sum的运算结果转化字符串str2,以方便显示/

strcat(str1,str2); /将str1的值(1-100自然书数的和是:)与str2连接,以方便显示/

MessageBox(NULL,str1,"第二个Win32程序",MB_OK);

return 0;

}

运行结果:

二、Windows 程序简介

(1)Windows C程序的组成:

1.C程序源文件,扩展名为.c或.cpp

2.头文件,扩展名为.h

3.资源文件,扩展名为.rc

(2)源程序的组成结构

Windows C程序有相对固定的基本结构,一般有入口函数WinMain和窗口函数。

1、WinMain函数

是所有Windows C程序的入口,类似于DOS C的main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。

WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环

a、WinMain函数的说明:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

参数说明:

hInstance 应用程序当前实例句柄

hPrevInstance 前一个实例句柄,在32位系统中该参数永远是NULL

szCmdLine 程序运行时的命令行参数

iCmdShow 程序运行时的显示方式,如最大化、最小化、隐藏显示等。

b、初始化

初始化包括窗口类的定义、注册、创建窗口实例和显示窗口四部分。

这是固定格式,所有的Windows程序基本一样,记住即可,具体参见下面的程序实例的注释。

2、窗口函数

窗口函数定义了Windows C程序对接受到的不同消息的响应,其中包含了应用程序对各种可能接收到的消息的处理过程,是消息处理分支控制语句的集合。通常窗口函数是有一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,就会执行相应case 语句下的程序模块来完成相应的功能。

窗口函数说明:

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

参数说明:

hwnd 窗口句柄

message 代表所处理消息的消息值

wParam 消息的附加参数,是message的进一步信息

lParam 消息的附加参数,是message的进一步信息

一般用法:

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

...

switch (message)

{

case 常数1:

...

case 常数2:

...

...

case WM_DESTROY:

PostQuitMessage (0) ; //在消息队列中插入一条“退出”消息

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam);//执行默认的消息处理

}

窗口函数的主体是消息处理语句,该语句是有一系列case语句组成。我们学习者自需要根据窗口可能收到的消息在case语句中编写相应的处理程序即可。

三、一个简单的Windows C程序:Hello World程序

include

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; //窗口函数声明

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow) //WinMain函数说明

{

static TCHAR szAppName[] = TEXT ("HelloWin") ;

HWND hwnd ; //窗口句柄

MSG msg ; //消息结构

WNDCLASS wndclass ; //窗口类结构

//下面是窗口类的定义

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;//加载图标供程序使用

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //加载鼠标指针供程序使用

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;//获取一个图形对象,在这个例子中,是获取绘制窗口背景的刷子

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

//下面是窗口类的注册

if (!RegisterClass (&wndclass))//为程序窗口注册窗口类

{

return 0 ;

}

//根据窗口类创建窗口

hwnd = CreateWindow (szAppName, TEXT ("一个简单的Win32程序"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

NULL,

NULL,

hInstance,

NULL

) ;

//显示窗口

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ; //指示窗口刷新自身

//消息循环

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ; //转换某些键盘消息

DispatchMessage (&msg) ; //将消息发送给窗口过程

}

return msg.wParam ;

}

//窗口函数

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

switch (message)

{

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ; //开始窗口绘制

GetClientRect (hwnd, &rect) ; //获取窗口客户区的尺寸

DrawText (hdc, TEXT ("Hello World!"), -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; //显示Hello World,可以修改程序你要显示的内容

EndPaint (hwnd, &ps) ; //结束窗口绘制

return 0 ;

case WM_DESTROY:

PostQuitMessage (0) ; //在消息队列中插入一条“退出”消息

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam);//执行默认的消息处理

}

提示:该程序的源代码在《简单的入门程序实例》中

四、总结

所有Windows 程序的基本结构都与上面的实例相同或相近(说明:有的程序是将窗口类和窗机窗口封住成函数后调用,其实质是一样的),记住一个例子,编写其他程序时,在其上面修改即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值