Windows程序设计(Hello,word!)

     我用"Hello,word!"代替了原标题的“你的第一个程序”,相信学过C的童鞋大多数都是用K&R写的教材,开头第一章的第一个程序就是编程输出"Hello,word!",所以我们学习Windows程序设计也从这个程序入手,进行分析。

    工欲善其事必先利其器,学习Windows程序设计,我们用的开发工具不再是VC++,而是高大上的VS,到哪里下载和安装这里略···

上图是用C写的在命令行窗口下显示“Hello,word!”,下面用Windows API实现图形化程序打印“Hello,word!”。

    我们通过这个程序来进行入门的第一个分析:
    首先需要包含Windows头文件(头文件大小写都可以),这个是Windows程序设计最重要的函数,它包含了其他的Windows头文件,最基本最重要的是:
    WINDEF.H 基本数据类型定义;
    WINNT.H 支持Unicode的类型定义;
    WINBASE.H Kernel(内核)函数;
    WINUSER.H 用户界面函数;
    WINGDI.H 图形设备接口函数;
    
    Windows程序的入口从以前控制台程序的入口main变成了WINAPI WinMain,这里对大小写的区分比较严格,若改成winapi或者winmain编译时就会出现错误。关于WINAPI是什么,我们能单击右键转到其定义,发现它是一个宏定义,原来是__stdcall,这个是函数调用约定的一种,用这个修饰的函数,其参数都是从右向左通过堆栈传递的, 函数调用在返回前要由被调用者清理堆栈。好了这里我们只是了解一下,没有必要深入~ 也不需要去背,看过几遍看得懂就可以了。而WinMain自然就是作为一个32位应用程序的入口点,我们需要了解一下它的参数。
    接下来我们看一下WinMain的四个参数(严格区分大小写):
    ①第一个参数为HINSTANCE hInstance,这个参数是程序当前实例的句柄;
    ②第二个参数为HINSTANCE hPrevInstance,应用程序的前事例的句柄;(这个参数在Win32下基本上已经废了,一般为0)
    ③第三个参数为PSTR szCmdLine,指向以/0结尾的命令行;
    ④第四个参数int iCmdShow指明应该以什么方式显示主窗口;
    这四个参数只做一下了解,我们先不去考虑它们都是怎么工作为什么要这么定义,但是我们要多敲几遍代码,将这四个参数全部都记下来,看起来很长很烦,但这是必须的。在Windows程序设计中,到处都是宏定义,为了让我们看得懂并且容易维护,所以采用了“匈牙利标记法”,这里可以自己百度了解一下。我们可以透过一个实例来了解,如果我们写的程序全部用A、B、C、D····来定义这些参数,那么当我们26个字母用完之后只能AA、BB、CC、DD···,照这么写下去估计我们连自己写的是什么都不知道,所以我们才要采用匈牙利标记法。
    
    接下来是MessageBox函数,这个跟控制台窗口下的printf差不多,只不过这个函数是图形化的信息框。关于MessageBox函数的四个参数:
    第一个参数是句柄,这节我们不考虑句柄这个概念;
    第二个参数是输出的文本,我们用TEXT("")来装,第三个参数是信息框的标题,我们也同样用TEXT("")来装;
    最后一个参数是按钮方案,MB_OK表示的是只显示一个“确定”的按钮,由于MB_OK也是宏定义,其原值为0,因此我们这里也能用0代替。但是我这里是一个错误的示范,我们刚开始学这个,必须手把手的学,不要偷懒,否则什么都会记不住,要是都是1110000谁看得懂是什么。
    如何好好学习Windows编程?这个问题很深奥,我们需要用到一个神器,那就是Win API的查询文档。Windows提供上千个API函数我们不可能一个个去记去背,我们讲究学习减负讲究高效率,所以我们当我们需要实现什么功能的时候,我们可以查询相关的函数,通过这样的实践来取得进步的方法是最高效的,掌握得也很快。这些都是大神们的话,我只是理解了copy一遍。 
    这里我在论坛发了一个帖子,提供这个Win API查询文档的下载,点击我下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值