windows工程总结
1、win32控制台console程序
运行在MS-DOS环境中的程序。控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序。控制台程序常常被应用在测试、监控等用途,用户往往只关心数据,不在乎界面。
生产.exe可执行程序。
通过命令行实现输入输出交互,可直接使用printf,getchar等库函数。
可直接使用win32 api接口。
入口是int main(int argc, char* argv[])。
main()中主要工作包括注册窗口类RegisterClass或RegisterClassEx,循环消息处理(取消息GetMessage,翻译消息TranslateMessage,派发消息DispatchMessage,消息处理WndProc(注册窗口类时会指定该函数来处理消息))。
不需要创建窗口CreateWindow和显示窗口ShowWindow、UpdateWindow。
2、win32窗口应用程序
有独立的窗口实现交互。
生产.exe可执行程序。
可直接使用win32 api接口。
入口是WinMain:
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
WinMain()中主要工作包括注册窗口类RegisterClass或RegisterClassEx,创建窗口CreateWindow和显示窗口ShowWindow、UpdateWindow,循环消息处理(取消息GetMessage,翻译消息TranslateMessage,派发消息DispatchMessage,消息处理WndProc(注册窗口类时会指定该函数来处理消息))。
注意:窗口应用程序也可以不用创建和显示窗口,这样就是一个无窗口的应用程序在运行。可通过资源管理器查询运行的进程。
3、win32动态库程序
生产.dll文件、
可直接使用win32 api接口。
跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。
对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的。
BOOL WINAPI DllMain(
_In_ HINSTANCE hinstDLL, // 指向自身的句柄
_In_ DWORD fdwReason, // 调用原因
_In_ LPVOID lpvReserved // 隐式加载和显式加载
);
4、win32静态库程序
生产.lib文件、
可直接使用win32 api接口。
5、MFC应用程序
生产.exe文件
可直接使用MFC封装后的接口,也可使用原生win32 api接口。
需要MFC库文件支持。
6、MFC动态库
生产.dll文件
可直接使用MFC封装后的接口,也可使用原生win32 api接口。
需要MFC库文件支持。
windows工程总结的更多相关文章
- 将Linux代码移植到Windows的简单方法
一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的.Windows平台根本无法直接利用这些源代码资源.如果想要使用完整的代码,就要做移植工作.因为C/C ...
- Google Breakpad 完全解析(一) —— Windows入门篇
原创文章,转载请标明出处:Soul Apogee (http://bigasp.com),谢谢. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Lin ...
- C++库(Google Breakpad)
Google Breakpad是什么? 一个开源的多平台崩溃报告系统. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,它支持Windows,Linux和Mac和Solari ...
- 写程序该选Mac 还是PC ?(转)
原文链接:http://gogojimmy.net/2012/04/07/why-programmer-should-use-mac/ 序 一个竞争的市场,就会有对立的产生,这世界存在着很多不同的领域 ...
- C++日志操作开源函数库之Google-glog
今天想给我的C++项目找一个开源的日志类,用于记录系统日志,结果浪费了半个下午的时间.从网上搜索相关资料,找到以下几个备选方案: 1.log4cplus 下载地址:http://sourceforge ...
- cocos2d-x 2.1.4学习笔记之HelloWorld分析
下面截图是HelloWorld项目下的文件夹结构 这是用python命令生成的项目,在创建过程中默认生成多个平台的程序文件. 1.“resource”文件夹 该文件夹主要用于存放游戏中需要的图片.音频 ...
- cocos2dx入门分析 hello world
打开新建的"findmistress"项目,可以看到项目文件是由多个代码文件及文件夹组成的,其中 Hello World 的代码文件直接存放于该项目文件夹中.下面我们来详细介绍一下 ...
- PropertyGrid—添加属性Tab
零.引言 PropertyGrid用来显示和编辑对象的属性,前面已经简单介绍了如何使用该控件和提供不同的属性编辑方法.前面主要讲如何使用该控件,但有时,该控件无法满足我们的需求,就需要对其进行扩展.本 ...
- PropertyGrid—添加EventTab
零.引言 前面一篇文章介绍了如何在PropertyGrid中添加属性Tab,本文主要介绍如何添加事件选项卡.事件在许多对象中都有,尤其是在控件中,如何让对象的事件在PropertyGrid中显示出来呢 ...
随机推荐
- 分布式系统唯一ID生成方案
分布式系统唯一ID生成方案汇总 数据库自增主键 最常见的方式.利用数据库,全数据库唯一. 优点: 1)简单,代码方便,性能可以接受. 2)数字ID天然排序,对分页或者需要排序的结果很有帮助. 缺点: ...
- 利用jenkens+github实现简单的CI/CD
一 获取github accessToken 依次点击 settings----> Developer settings --->Personal access tokens 到这里如 ...
- python自定义小工具:密码匿名化、毫秒时间显示、人类易读字节
import base64 import time def timestamp2datems(timestamp): ''' 时间戳转为日期字串,精确到ms.单位s :param timestamp: ...
- 用javafx webview 打造自己的浏览器
背景 项目需要做一个客户端的壳,内置浏览器,访问指定 的url 采用技术 java 1.8 开始吧! java环境配置略 hello world import javafx.application.A ...
- 【2017-12-06】winfrom 窗体自启最大化,控件自适应
先将窗体windowstate属性设置为Maximized public partial class Form1 : Form { public Form1() { InitializeCompone ...
- 关闭Entity Framework的导航属性
public RIS30Entities() : base("name=RIS30Entities") { this.Configuration.ProxyCreationEnab ...
- Python+request 分模块存放接口,多接口共用参数URL、headers的抽离,添加日志打印等《三》
主要介绍内容如下: 1.分模块存放接口 2.多接口共用参数URL.headers的抽离为配置文件 3.添加日志打印 4.一个py文件运行所有所测的接口 如上介绍内容的作用: 1.分模块存放接口:方便多 ...
- bootstrap-vue 中 model 基础用法
Model 官方文档: https://bootstrap-vue.js.org/docs/components/modal <b-modal v-model="labelModal ...
- appium测试android环境搭建(win7)
第一步:安装appium 1. 下载并安装Node.js(地址:https://nodejs.org/download/) 2. 下载git, 并且配置环境变量:(之前没有配置git, 报错找不到gi ...
- [Luogu] U18590 采集矿石
https://www.luogu.org/problemnew/show/U18590 后缀数组??? 不会 #include <iostream> #include <cstdi ...