主要内容:介绍Windows应用程序的组成以及编程步骤

  

  1.应用程序的组成
    <1>一个完整的应用程序通常由五种类型的文件组成
      1.源程序文件
      2.头文件
      3.模块定义文件
      4.资源描述文件
      5.项目文件(也称工程文件Project)

    <2>源程序组成结构
      1.入口函数 WinMain
        <1>入口函数是所有程序的入口,类似Main函数
        <2>完成定义和初始化,产生消息循环

      2.窗口函数 WndProc
        <1>窗口过程完成一些消息循环的响应
          这是Windows应用程序的基本框架
          在这个框架里包含了各种数据类型、数据结构和相应的函数

  2.WinMain函数

    WinMain函数的功能
      <1>注册窗口类,建立窗口及执行必要的初始化
      <2>进入消息循环,据接收的消息调用相应的处理过程
      <3>当消息循环检索到WM_QUIT时,终止程序运行

    WinMain函数的基本组成
      <1>函数说明(函数参数)
        int WINAPI WinMain
        ( HINSTANCE hThisInst, //应用程序当前实例句柄
         HINSTANCE hPrebInst, //应用程序其他实例句柄
         LPSTR lpszCmdLine, //指向程序命令行参数的指针
         Int nCmdShow) //应用程序开始执行时窗口显示方式的整数值标识

         另附上WinMain函数参数的详细介绍:点我
      <2>初始化
        1.窗口类定义
          定义窗口的形式与功能
          LoadIcon、LoadCursor以及GetStockObject等
        2.窗口类的注册
          窗口类必须先注册后使用
          RegisterClass
        3.创建窗口实例
          CreateWindow
        4.显示窗口
          ShowWindow 和 UpdateWindow
      <3>消息循环

      

  WinMain函数初始化详细过程以及消息循环

  3.窗口函数WinProc
    <1>窗口函数定义了应用程序对接收到的不同消息的响应
      还包含了对各种可能接收到的消息的处理过程

    <2>WinProc架构 ---> switch-case结构
      原型:
      LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
        switch(message){ //message为标识的消息
          case ...
          break;
          ...

          case WM_DESTROY:
            PostQuitMessage(0);

          default :
            //为未定义处理过程的消息提供缺省处理
            return DefWindowProc(hwnd, message, wParam, lParam);
          }

        return 0;
      }

      消息处理程序段中一般都有对WM_DESTROY的处理,
      该消息是关闭窗口时发出的,
      它向应用程序发出WM_QUIT消息,请求退出处理函数,
      void PostQuitMessage(int nExitCode);
      //nExitCode为应用程序的退出代码

    <3>数据类型介绍
      LRESULT:消息处理结果的返回值的数据类型,实际上是LONG
      CALLBACK:表示这个函数是给系统调用的,也称作回调

1-4-1 Windows应用程序组成及编程步骤的更多相关文章

  1. Windows应用程序组成及编程步骤

    Windows应用程序组成及编程步骤: 1.应用程序的组成:一个完整的Windows应用程序通常由五种类型的文件组成 1.C语言源程序文件 2.头文件 3.模块定义文件 4.资源描述文件 5.项目文件 ...

  2. winsock教程- windows下的socket编程(c语言实现)

    winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程     这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...

  3. Linux下TCP网络编程与基于Windows下C#socket编程间通信

    一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...

  4. 在windows下的QT编程中的_TCHAR与QString之间的转换

    由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef ...

  5. WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇]

    原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇] 对于WCF服务端元数据架构体系来说,通过MetadataExporter将服务的终结点导出成MetadataSet(参考< ...

  6. Windows环境下多线程编程原理与应用读书笔记(1)————基本概念

    自从学了操作系统知识后,我就对多线程比较感兴趣,总想让自己写一些有关多线程的程序代码,但一直以来,发现自己都没怎么好好的去全面学习这方面的知识,仅仅是完成了操作系统课程上的小程序,对多线程的理解也不是 ...

  7. 使用Windows API进行串口编程

    使用Windows API进行串口编程   串口通信一般分为四大步:打开串口->配置串口->读写串口->关闭串口,还可以在串口上监听读写等事件.1.打开和关闭串口Windows中串口 ...

  8. Ligg.WinOa-000: Windows运维自动化编程实战--前言

        本开源项目Ligg.WinOa是一个基于Ligg.EasyWinApp的Windows运维自动化应用.通过Ligg.EasyWinForm生成2个功能界面:管理员工具箱和用户工具箱:通过Lig ...

  9. SpringMVC_01 SpringMVC五大组件、SpringMVC编程步骤(不使用注解进行配置)、SpringMVC编程步骤(利用注解进行配置)、参数获取、响应数据

    1 什么是SpringMVC 是一个mvc框架,用来简化基于mvc架构的web应用程序的 开发. 2 SpringMVC五大组件 DispatcherServlet (前端控制器) HanlderMa ...

随机推荐

  1. iOS 下如果存在UIScrollerView 使用UIScreenEdgePanGestureRecognizer实现侧滑效果失效的问题

    当你在使用UIScreenEdgePanGestureRecognizer手势实现侧滑的时候,如果后期你导航控制器push出的界面中包含UIScrollerView,这个时候你会发现,侧滑效果无法实现 ...

  2. [处理器、单片机]ARM

    1.ARM简介: ARM是Advanced RISC Machines的缩写.1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州San Jose VLSI技术公 ...

  3. SharePoint 2013 配置我的网站 图文引导

    博客地址:http://blog.csdn.net/FoxDave 本篇我们来讲述一下关于SharePoint中我的网站(My Sites)相关的东西. 我的网站是SharePoint 2013中面向 ...

  4. 用命令 安装/卸载 windows服务(转)

    第一种方法: 1. 开始 ->运行 ->cmd 2. cd到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(Framework版本号按IIS配置 ...

  5. php的分页查询建立分页类

    创建一个分页类 <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 priv ...

  6. Java内存模型---并发编程网 - ifeve.com

    Java内存模型 转自:http://ifeve.com/java-memory-model-6/ 原文地址  作者:Jakob Jenkov 译者:张坤 Java内存模型规范了Java虚拟机与计算机 ...

  7. poj1141 区间dp+路径

    //Accepted 176 KB 47 ms //感谢大神们为我们这群渣渣铺平前进的道路!! //用scanf("%s",s)!=EOF WA到死 #include <cs ...

  8. yii2.0-rules验证规则应用实例

    Rules验证规则:  required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required]    //字段 ...

  9. 横竖屏切换时候Activity的生命周期

    1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate-->onStart-->onResume--> 3.按crtl+f1 ...

  10. Socket编程回顾,一个最简单服务器程序

    第一次接触服务器是快毕业的时候,是不是有点晚(# ̄ω ̄),这也导致工作方向一直没考虑网络编程这块,做了好多其他没啥“意思”的技术. 之前看到一篇博文提到程序猿80%都是庸才,10%是人才,10%是天才 ...