上次,我们一起写了第一个Windows程序,虽然程序非常简单,但是它却可以帮助大家建立学好windows开发的信心。

今天,就让我帮助大家分析一下这个程序的内容。首先,我们的程序包含了一个头文件:windows.h,这个头文件包含了Windows下开发需要的所有结构体,宏和API的声明。之后,我们又链接了一个静态库文件:User32.lib,这个文件是动态库user32.dll的链接文件,通过使用User32.lib,可以让我们的程序使用user32.dll的功能,这是动态库调用的一种常用方法,这个方法的好处是不用我们操心动态库的加载和释放。user32.dll中主要包含的是Windows用户界面相关应用程序接口的实现,比如,我们程序中使用到的MessageBox。

最后,进入了我们这个程序的核心,这个核心就是winmain函数,这个函数是所有windows程序的入口点,它就好比main函数,不同的是,winmain主要用于windows程序,而main函数主要用于控制台程序。

winmain函数的生命如下:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

大家只需要记住,只要是Windows程序,就一定要写Winmain,只要是Winmain函数,就一定要按照它的声明方式来写。

之后,我们的WinMain函数调用了MessageBox函数,这个函数的功能就是弹出一个对话框,它的原型如下:

int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);

相信,很多初学者一看到这个函数的参数就会发晕,下面,我跟大家简要介绍一下这些参数,以及它们的意义:

WINAPI:这个是函数的调用方式,大家现在先不需要理解它,只需要知道它就是一个调用方式的声明就可以了。

HWND:它就是一个窗口的标识符号,它的本质就是一个整数,在Windows中每个窗口都有一个标识符。

LPCTSTR :这个就是一个字符串指针,只要记住就可以。

UINT:它是一个无符号的32位整数,就好比unsigned int。

之后,我们再说明一下这个原型的参数意义:

hWnd:这个是我们这个对话框窗口的父窗口标识符,我们这里只有一个对话框,所以,它没有父窗口,因此,设置为NULL就可以了。

lpText:这个是我们窗口中的内容,我们窗口的内容是:开始学习Windows编程。

lpCaption:这个是我们窗口的标题,我们窗口的标题是:消息对话框。

uType:它可以决定对话框的内容和行为的位标志集,我们这里是MB_OK,意思是在我们的界面中提供一个确定按钮。其它的标志,大家可以参考下面的表格:

表1   uType参数

大家可以回去自己去实践一下每个参数的意义,这里就不过多介绍。

好了,今天,我们一起分析例了第一个windows程序的源代码,希望大家自己回去后,再分析一遍,看看自己是否可以看明白程序的意思。

第一个Windows程序讲解的更多相关文章

  1. 第一个Windows程序

    今天,我们的任务就是和大家一起开发第一个Windows程序,这个程序的功能非常简单,就是弹出一个对话框,但是简单的程序可以帮助大家建立信心. 例1 第一个Windows程序 /* ********** ...

  2. OpenGL学习-------visual studio 2010配置和第一个OpenGL程序讲解

    OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性. 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenG ...

  3. 【C语言/C++编程学习笔记】你的第一个Windows程序!高级操作~

    什么是windows编程?了解到Windows API 编程.Windows编程.Windows SDK 编程是一个概念.今天我们运用C语言来实现你的第一个真正的Windows程序. windows. ...

  4. 你的第一个Windows程序——绘制窗口

    MSDN原文(英文) 绘制窗口 你已经创建了你的窗口,现在你想在它里面显示东西.在WIndows术语里,这就是所谓的绘制窗口.混合隐喻,一个窗口是一个空白画布,等待你去填充它. 有时你的程序将启动绘制 ...

  5. windows编程:第一个windows程序

    #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <windowsx.h> #include <math ...

  6. windows程序设计.第一个windos程序

    Windows程序设计(第5版) windows程序需要调用API. 第一个Windows程序 /*HelloMsg.c -- Displays "Hello World!" in ...

  7. 我的第一个 Windows 窗口程序(1)

    一般来说,构建一个 Windows 程序可以分为如下几个步骤: 定义窗口类(WNDCLASS) 注册窗口类(RegisterClass) 创建窗口(CreateWindow) 更新显示窗口(Updat ...

  8. Windows编程 Windows程序的生与死(下)

    再谈程序之“死” 记得在第二回中我对程序的“死”只是一句话带过,因为我还没有铺垫好,好了现在我们可以详细的分析一下这个过程了. 这还要从while消息循环说起,还记得GetMessage函数吗?它是一 ...

  9. Windows编程 Windows程序的生与死(上)

    引子 “Windows 程序分为‘程序代码’和‘UI(User Interface)资源’两大部份,两部份最后以RC编译器(资源编译器)整合为一个完整的EXE 文件.所谓UI 资源是指功能菜单.对话框 ...

随机推荐

  1. Linux基本配置和管理 3 ---- Linux命令行文本处理工具

    1 文件浏览(简单回顾) 1 cat 查看文件的内容 2 more 以翻页的形式查看,但是只能向下翻页 3 less 以翻页的形式查看,但是能够支持向上和向下翻页 4 head 默认是查看前10行,但 ...

  2. 亲测 安装 mysql5.5 64位

    1.选择 customn 更改安装目录2.选择 develop 模式,默认,占用内存较小. server machine 中等内存 dedicate mysql server machine 专用服务 ...

  3. 体验Impress.js

    用腻了ppt,prezi的风格看起来更酷一点儿,无意中得知有Impress.js这么一个H5版的prezi,nice,值得一试. 关于Impress.js,网上教程很多,但说实话就跟教小朋友一样,一步 ...

  4. codevs2034 01串2

    /* 一开始认为是个水题 直接模拟 没想到只得了50分 一看数据吓niao了 模拟妥妥的TLE 实在不好优化了0.0(最快O(m)) 然后借鉴别人的 DP+神奇的输出 DP:状态:f[i][j] 前i ...

  5. jqPlot,一个 jQuery这个 JavaScript 框架的绘图插件

    因为项目中需要做报表的功能,于是学习了如何使用jqplot这个绘图插件 结合ajax技术,动态交互后台数据 前前后后花了三四天的时间. 感觉它会出来的想说还可以. 我的后台模板是bootstrap,在 ...

  6. <c:if>判断参数是否同时为空

    <c:if test="${empty str}">  str为空</c:if> <c:if test="${not empty str}& ...

  7. (转)php中GD库的配置,解决dedecms安装中GD不支持问题

    了解gd库 在php中,使用gd库来对图像进行操作,gd库是一个开放的动态创建的图像的源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,gd库支持gif ...

  8. 【转】 UITableView 的indexPath

    原文:http://blog.csdn.net/mengtnt/article/details/6733691 前面说过了viewController的一些基本注意事项.这里针对不同的viewCont ...

  9. MySQL学习-常用命令整理

    Eyes are more eloquent than lips. “眉目传情胜于甜言蜜语” 整理了一下自己遇到并且经常用到的MySQL命令,虽然官方文档上有很详细的解释,不过自己还是在这里记录一下, ...

  10. 第三方分页控件aspnetPager出现问题解决方法

    问题描述: 今天在打开以前的项目使用vs2013打开后并且生成解决方案的时候发现报错了.经过检查发现是由于第三方分页控件aspnetPager在页面上不能引用到了. 解决方法: 1. 首先将AspNe ...