你是否和我一样呢,写了很多控制台程序,特别熟悉cout、main函数等等。
但是你同样也听说过win32 api !!当在你的控制台应用程序中写下某个api函数的时候,你也许会窃喜api函数带来的方便。但是当你编译代码的时候,编译器会无情的通知你“不能识别XX标识符”。
所以,从现在开始我的blog.

你兴致勃勃的打开vs2010,选择“文件”-》“新建”-》“项目”,你会看到如下:

正如你所见到的,有一个win32控制台应用程序,有一个win32项目。有何区别呢?

控制台应用程序运行就是dos的界面
项目一般采用了可视化开发 开发出来的东西就像QQ之类的 是有窗口界面的

win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用程序…
win32项目指运行于32位Windows操作系统中的应用程序…包括win32控制台项目…

win32控制台的入口是main,win32项目的入口是WinMain。而程序的入口点是可以重新设置的。我们可以在console应用程序中设置其入口点为WinMain,反之亦然。在下面的代码中会有所展现!

下面代码是一个Win32项目,通过Win32 API函数来读写.ini文件。

#include<Windows.h>
LRESULT CALLBACK WindowProc( _In_ HWND hwnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam );
int CALLBACK WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance,       __in LPSTR lpCmdLine, __in int nShowCmd )
{ char szResult[255]; char szDefault[255]; char myPath[] = "D:\\myfile.ini"; GetPrivateProfileString("MySection", "MyKey", "555", szResult, 255, myPath);   MessageBox(NULL, szResult, NULL, MB_OK);WritePrivateProfileString("MySection", "Mykey", "shit", myPath);  GetPrivateProfileString("MySection", "MyKey", "555", szResult, 255, myPath);   MessageBox(NULL, szResult, NULL, MB_OK); return 0;
}

下面是一个完整的Win32项目的代码,其中包括了 WinMain入口点,设计与注册窗口类,创建和显示窗口
更新窗口,消息循环,消息响应

#include <Windows.h>
// 必须要进行前导声明
LRESULT CALLBACK WindowProc(  _In_  HWND hwnd,  _In_  UINT uMsg,  _In_  WPARAM wParam,  _In_  LPARAM lParam
);  // 程序入口点
int CALLBACK WinMain(  _In_  HINSTANCE hInstance,  _In_  HINSTANCE hPrevInstance,  _In_  LPSTR lpCmdLine,  _In_  int nCmdShow  )
{  // 类名  WCHAR* cls_Name = L"My Class";  // 设计窗口类  WNDCLASS wc = { };  wc.hbrBackground = (HBRUSH)COLOR_WINDOW;  wc.lpfnWndProc = WindowProc;  wc.lpszClassName = cls_Name;  wc.hInstance = hInstance;  // 注册窗口类  RegisterClass(&wc);  // 创建窗口  HWND hwnd = CreateWindow(  cls_Name,           //类名,要和刚才注册的一致  L"我的应用程序",  //窗口标题文字  WS_OVERLAPPEDWINDOW, //窗口外观样式  38,                 //窗口相对于父级的X坐标  20,                 //窗口相对于父级的Y坐标  480,                //窗口的宽度  250,                //窗口的高度  NULL,               //没有父窗口,为NULL  NULL,               //没有菜单,为NULL  hInstance,          //当前应用程序的实例句柄  NULL);              //没有附加数据,为NULL  if(hwnd == NULL) //检查窗口是否创建成功  return 0;  // 显示窗口  ShowWindow(hwnd, SW_SHOW);  // 更新窗口  UpdateWindow(hwnd);  // 消息循环  MSG msg;  while(GetMessage(&msg, NULL, 0, 0))  {  TranslateMessage(&msg);  DispatchMessage(&msg);  }  return 0;
}
// 在WinMain后实现
LRESULT CALLBACK WindowProc(  _In_  HWND hwnd,  _In_  UINT uMsg,  _In_  WPARAM wParam,  _In_  LPARAM lParam
)
{  switch(uMsg)  {  case WM_DESTROY:  {  PostQuitMessage(0);  return 0;  }  }  return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

Hey,别搞错了Win32项目和Win32控制台程序相关推荐

  1. Win32控制台应用程序,Win32项目,MFC应用程序的区别与联系

    Win32控制台应用程序,Win32项目,MFC应用程序的区别与联系 Win32控制台程序 初始化代码模板以Main为程序入口,默认情况下,只链接C++运行时库和一些核心的Win32库,链接器subs ...

  2. win32项目和win32控制台程序的区别

    回答1: 1.win32应用程序是指窗口类的,像QQ之类的,有图形化界面,而控制台是指运行在黑框下的,像cmd之类的: 2.win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境 ...

  3. VS中项目属性win32 application和win32 console application的切换

    菜单中选择项目->属性弹出属性配置窗口 1.C++->预处理器: 预处理器定义: WIN32项目为WIN32;_DEBUG;_CONSOLE: 控制台项目为WIN32;_DEBUG;__W ...

  4. cocos2d-x 菜鸟实习生学习篇(十) win32项目移植到安卓

    再两天就过年啦,这篇博客应该是今年的最后一篇吧.在此提前恭贺大家....元宵节快乐!!!相信很多大牛说的都是新年快乐之类的,但是咱不能跟他们一样啊,咱虽然博客不咋的,但是肯定要体现出自己的身份跟内涵. ...

  5. 【MFC系列2】Win32项目转换为MFC项目

    关注公号[逆向通信猿]更精彩!!! 一.MFC的组成 a)必须有一个CWinApp的派生类: b)必须用派生类在全局定义一个对象theApp; c)在派生类中必须重写InitInstance虚函数: ...

  6. Visual Stutio中win32控制台应用程序、win32项目、MFC项目的区别:

    我的理解,我首先把这几个货分为两大类:第一类包括win32控制台应用程序,第二类就是剩下那俩货.而剩下那俩货又有一个包含关系,即win32项目包含mfc.(我个人是这个区分的.) 一. 区别: (1) ...

  7. VS2010 win32项目windows窗体程序 向导生成代码解析

    目录: 1.Win32项目的windows窗体程序的向导生成了如下代码 2.手工生成代码如下 3.当消息队列中没有消息需要处理,我们可以利用这段时间处理我们自己的任务 1.Win32项目的window ...

  8. 文因互联 CEO 鲍捷:确保搞砸人工智能项目的十种方法

    做成一件事儿不容易,而坑恒在. 鲍捷博士于5月10日在将门创投的线上 talk 中盘点了人工智能项目的大坑小坑,选出了看上去非常反常识的十个经典坑. 这是一篇大实话合集,但别绝望,最后将会放出从二十年 ...

  9. 【Win32】初识Win32编程

    补发:发表于2021-11-08 忘了同步到CSDN上了 链接 Windows编程 应用程序分类 控制台程序Console DOS程序,本身没有窗口,通过Windows DOS窗口执行.(DOS是操作 ...

最新文章

  1. php 取绝对值(php自带函数可以直接取)
  2. android 获取手机SD卡和手机的内部存储
  3. SVM的升维解决线性不可分
  4. BZOJ2956 (模积和)
  5. spark on yarn的未解之谜
  6. 【HDU - 2899】 Strange fuction(二分或三分,求导)
  7. react开发_我如何在#100DaysOfCode挑战期间找到React开发人员的工作
  8. php 模拟客户端访问,PHP通过伪造和模拟客户端COOKIE登陆来采集抓取远程网址
  9. 分治,递归,贪心算法,动态规划的关系
  10. [转载] Python—urllib模块
  11. 微信小程序开发实战——模块化
  12. android mp4转mp3格式转换,实现快速将MP4转MP3格式的完美攻略
  13. QT 如何在其他类中修改UI控件的属性?
  14. C++那些事之ADL
  15. photo技能大全,想学ps的来看看
  16. 2021-3-2打砖块游戏,轮播图,swiper,自执行函数
  17. 虚拟机VMware中Linux联网
  18. 当年明月《明朝那些事儿》读书笔记
  19. 运放--单电源半波精密整流
  20. 软件测试基础知识面试题目(25题英文题目)

热门文章

  1. 我们为什么要读书?被这位日本女老师的回答深深震撼
  2. 物联网工程实践日报表11
  3. 每日一题-61(每位学生的最高成绩)
  4. 【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列...
  5. java当前时间获取
  6. 基于JAVA住房公积金筹集子系统的网站系统计算机毕业设计源码+系统+数据库+lw文档+部署
  7. 你的先进性体现在哪里?
  8. 用Turtle画棒棒糖
  9. Underlay和Overlay网络是什么
  10. 华为删除dhcp地址池_干货|什么是DHCP?这些我们应该知道