本来,mfc都已经是很落后的东西,现在写窗体都用C#,提到vs的窗体大家都想到c#。虽然如此,但本来了解Windows窗体的编程机制,同时又本着vc6可以实现的东西,vs都可以实现而且更进步的理念,同时市面上大部分介绍win32窗体C++编程的书籍都是以VC6为版本的,所以开倒车也要在VS中实现win32窗体程序的了。

具体这样做:

1、打开VS2010,废话,如下图,创建一个win32窗体程序。

2、点下一步,直接默认设置点完成,创建一个Windows应用程序

3、可以直接编译,运行了,但是生成出来的东西并不能让我们满意,如下图所示,有一个我们并不需要出现的菜单栏,我们还想在窗体中输出一个Helloworld。

或许此刻,你觉得VC6没有这么乱吧,或者认为VC6和VS2010差别很大?按照部分书上所示,在创建工程选择第3项,编译运行一劳永逸?

但其实并不是,在VC6同样如此的。而且你还可以发现,其实VC6那些文件和这里VS2010文件也是差不多的。

实际上VS2010只是放了些兼容性文件上去而已。来来去去还是那一套,绘出一个窗体,然后在这个窗体有一个函数在不停地循环,就是为了读鼠标或者键盘的响应信息。然后这些信息统统扔到LRESULT CALLBACK WndProc这个消息回调函数里面,你要弄什么就在这个函数里面写吧。

就是个框架,没有什么技术含量,和你改java web什么的,改win32窗体独有的程序框架里面的东西,在里面加你自己的东西就行了。

好,说了这么多,到底怎么完成我们去掉菜单栏和输出一个Helloworld文件的梦想呢?

4、直接对Win_Helloworld.cpp(文件名根据你第一步的工程名不同而不同)这个主cpp入手,进行修改。

(1)去掉菜单栏,对ATOM MyRegisterClass(HINSTANCE hInstance)函数,整个程序的第87行入手,如下图修改,将其值换成NULL。

同时注释或者删去142-158行消息回调函数中关于菜单栏单机处理的case WM_COMMAND事件。

172-190行一大段关于“关于”对话框的函数。

(2)输出Helloworld

接下我们需要对消息回调函数中的case WM_PAINT:这个所谓的“重绘事件”进行入手,就是你每次移动、最大化这个窗口,这个事件都会被触发的,窗体会被重绘,人家vs2010也非常好心你就是应该在这里开始你的win32窗体程序的旅程,将case WM_PAINT:修改成如下所示,其实就是加了SetTextColor和TextOut两个函数而已:

case WM_PAINT:hdc = BeginPaint(hWnd, &ps);// TODO: 在此添加任意绘图代码...SetTextColor(hdc,RGB(0,0,0));//黑色的画笔TextOut(hdc,100,100,L"Helloworld",strlen("Helloworld"));//在(100,100)这个文件,输出Helloworld。EndPaint(hWnd, &ps);break;

即:

你可以将这个hdc,理解成在这个窗体画东西的画笔。然后呢,各个函数基本都是名副其实了,值得提醒在TextOut函数中,不像VC6,在VS2010中,所有那些LPCTSTR,不能直接放个字符串上去,要在前面加个大写L,强行转化一下。将一个普通字符串转化为 系统中的窗体字符(大概就是这个意思)。所以你就知道C++各种各样的变量是多么蛋疼,php等无变量类型的设计是多么伟大。

写到这里就写完了,运行结果如下图所示:

最后,做个小终结吧。

写C++的Win32窗体程序,别拿以前C语言那种,从0开始的思维往上面套。就是系统已经给你一个框架,你按照他的要求在这个框架上面改。

起步的时候,并不需要对这个框架有多熟悉,先从这个框架的一些基本东西入手,实现一些最基本的功能。

程序猿出来混也基本上是如此,很少让你拿一门语言从0开始的,基本上都是在框架中修修补补,创造。

或者在了解Win32窗体程序的同时,Win32最基本的WIN API同时,能提高一下自己面对框架的能力。

【win32】vs2010的窗体程序Helloworld相关推荐

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

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

  2. ObjectARX学习笔记【2】-AutoCAD2013+ObjectArx2013+VS2010第一个程序HelloWorld

    我的使用环境和这位非常的相似,所以贴出以供学习. AutoCAD2013第一个ObjectArx2013程序HelloWorld_在职工作_百度经验 https://jingyan.baidu.com ...

  3. 初步的看一下C#窗体程序的直接反汇编代码

    C#基本窗体程序: 进入反汇编查看: 看一下把字符串赋给文本框的这段反汇编: 大体的阅读一下,以略懂汇编的人来看,基本含义: ebp寄存器的值减去一个值,取出此偏移地址的值,赋给eax:     ea ...

  4. 1.1GTK+ 的简单程序HelloWorld

    1.1GTK+ 的简单程序HelloWorld 编译执行如图所看到的:

  5. VS C#窗体程序未能找到Form1.resx文件解决方法

            新建另一C#窗体程序,在窗体上任意添加一个控件,在解决方案视图下可以看到多了一个"Form1.resx"文件,在工程文件目录中找到它,复制到缺失Form1.resx ...

  6. C#中实现视频播放器窗体程序(附源码下载)

    场景 效果 实现 新建窗体程序,然后从工具箱中拖拽DataGridView控件,然后在控件右上角点击新增列,设置好每列 的Name属性和Headertext属性. 新建Video类 项目-右击-新增- ...

  7. C#中教你一步步实现一个电话本窗体程序

    场景 使用C#窗体程序实现一个电话本应用程序. 实现 新建窗体程序,PhoneBook 然后打开工具箱,拖拽一个ListView到窗体中 拖拽完成后点击右上角三角符号,编辑选项--编辑列. 点击添加, ...

  8. C#中实现窗体程序的退出按钮功能

    场景 C#的窗体程序中点击退出按钮,退出当前程序. 使用的是Dispose方法. Dispose 释放有Component占用的资源. 重载 Dispose()  释放由 Component 使用的所 ...

  9. CS中实现简单的注册验证窗体程序

    场景 效果 实现 打开VS,新建窗体程序 快捷键ctrl+alt+x打开工具箱,拖拽label.TextBox.Button,实现注册窗体布局. 在输入框TextBox后面还有对应的提示用的label ...

最新文章

  1. mysql lint的范围_【MySQL】MySQL数据类型
  2. 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
  3. Spark 1.2 发布,开源集群计算系统
  4. 构造方法与对象的创建 java 1614780813
  5. mysql 5.6 linux 64_Linux64位服务器编译安装MySQL5.6(CentOS6.4)
  6. Error:Unable to make the module: core, related gradle configuration was not found. Please, re-import
  7. 循环控制体重C语言,减重名医王存川教授告诫:越早控制体重,肥胖导致身体的伤害越小...
  8. 翻翻git之---炫酷的自己定义翻滚View TagCloudView
  9. pythonclass使用教程_【Python 1-15】Python手把手教程之——详解类Class以及类的使用...
  10. Java 多线程思维导图
  11. JS前端实现点击按钮生成并下载txt文件
  12. 无人机倾斜摄影三维建模技术在智慧城市中的应用
  13. MES生产管理系统中,看板管理究竟是什么
  14. Android App集成支付宝
  15. vnc远程软件,四款值得使用的vnc远程软件推荐
  16. Day6 练习1 买飞机票
  17. YOLO 系列损失函数
  18. 计算机网络 华东理工大学 第2章测试
  19. unity开发日记之火箭发射
  20. Android-Apk的安装流程分析(二)

热门文章

  1. alter在mysql_MySQL中ALTER用法小结
  2. 在此iphone上尚未受信任_电脑显示服务器上的安全数据库没有此工作站信任关系的解决方法...
  3. 全国大学生数学建模2014年A题嫦娥三号软着陆轨道设计与控制策略论文与代码
  4. 奥鹏教育计算机试题,最新奥鹏教育《计算机基础》模拟试卷附答案(11页)-原创力文档...
  5. php chmod 777 chown,linux命令中chown与chmod的区别
  6. C语言、嵌入式位操作精华技巧大汇总
  7. 商业逻辑12讲之管理思维的逻辑
  8. vertx web连接超时 阻塞_Flink之基于Vertx的Mysql异步IO
  9. 矩阵拼接_TEC无缝拼接矩阵切换器(处理器)的技术
  10. 计算机教务管理系统ER图,图书管理系统er图 [2].doc