MFC十八个简单问题

简介:
在我以前学习C、C++、Windows编程的时候,很有一些疑惑,当时找不到人解答,都是过了很多年以后才想通,我想,初学的朋友可能都有这样的疑惑,这里总结出来,希望对大家有参考价值。 
1、Windows的窗口和C++的类是什么关系? 
没有关系,纯C方式编程,WinMain,也是可以产生窗口的,不是说一个窗口一定要一个类,仅仅是通常这么做而已。 
2、Windows的线程和C++的类是什么关系? 
没有关系,同理,纯C可以开发Windows应用,当然也可以开发线程,事实上,在线程的开发上,C++用的是C的方法,就是类里面的静态函数,或者全局函数啦。 
3、Windows的窗口和线程是什么关系? 
没有关系,Windows的窗口是窗口,线程是线程。他们都是一个软件工程的组成部分,线程函数可以放在窗口类里面,也可以不放。 
4、Windows的窗口是不是一定要有独立的消息循环? 
没必要,看看模态窗口和非模态窗口,一个窗口,可以利用父窗口的消息循环,来给自己通知消息,怎么通知,swtich的最后一项,default的时候,call一下子窗口的消息循环函数啊。其他的消息,如果需要子窗口处理,也可以这么做啊。 
5、Windows的消息循环可不可以放到线程里? 
当然可以,虽然Windows为每个应用程序准备了一个主线程,消息循环可以放到里面运行,但新开的子窗口,完全可以自己建立线程,开辟消息循环。 
6、消息循环和线程什么关系? 
没有关系,消息循环就是不断从本窗口的消息队列里面取消息,并处理的过程,除非被别人调用,否则自己不会运行,可以在主线程里面调用,当然也可以在其他线程里面调用。 
7、一个Windows程序是不是只能有一个窗口? 
当然不是,想开多少个都可以,只要系统内存还吃得下,CreateWindowsEx,还记得吗? 
8、开窗口是不是一定要写个类? 
当然不是,回到第一个问题看看。 
9、是不是写Windows窗口一定要用文档、视结构? 
当然不是,微软对大家有误导,好像一个应用工程的数据一定要放在CDoc里面,界面只能由CView处理,自己写个类,甚至写个全局数组,也可以放数据的,我就在Timer里面重绘,也可以直接显示的。仅仅是一种习惯性思维而已。 
10、没有Printf,很不爽! 
试试TRACE,再就是,做个EditBox,向里面添加数据试试,方法很多啦,仅仅是没有控制台而已。 
11、画界面很累,Tab顺序太烦 
可以画个界面,在里面通过SetFoces,自己定义Tab顺序的,方法太多了。 
12、是不是只有用MFC才能开发Windows程序? 
当然不是,MFC仅仅是微软为了方便大家使用C++方式,开发Windows程序设计的一套应用程序框架而已,大家可以用,也可以不用。最古老的Windows程序可全是C模式的。 
13、VC和MFC什么关系? 
没有关系,VC可以不用MFC的,别的C++语言也可以用MFC的。 
14、为什么VC添加方法,有时候会失败,为什么VC生成的类,老是缺一些东西?如果添加一个类方法或成员变量,VC不给我自动生成咋办? 
你看见的是IDE,VS的编辑器,编辑器为了方便大家,提供了一些自动代码生成功能,但是,并不完善。不自动生成,自己敲就好了,本来C++程序,都是自己敲的,除了VC。 
15、是不是一定要进VC,才可以写Windows程序? 
哪有?你看到的VC仅仅是IDE,VC是VC,VS IDE是VS IDE,你直接用记事本敲段程序,cc,然后link,照转。gcc就不提供IDE,直接make。 
16、VC的release模式下,不提供单步跟踪功能,其他的C语言,也没有IDE,我咋Debug? 
最古老的C语言,就是一个cc编译器,连连接都用操作系统的link,IDE都是后来的,没有单步跟踪,就没法做事啦?跟踪无非是看变量的值,关键点上,自己用printf打印,屏幕打印太快,看不清楚,就用fprintf打印到文件就好了,然后慢慢看。我们都是这么做的,叫printf大法! 
17、Debug和Release究竟有啥区别? 
这实际上是两种内存管理模式,各有不同的内存堆对象负责分配内存。Debug的堆支持很多调试信息,相应的速度就慢点,还有,栈比较小,递归最多2000层,但有个好处,程序bug最多把自己挂死,系统没事,Release直接就用系统的,速度快,限制少,程序bug可以直接把系统挂翻,就这么简单。 
18、全屏幕窗口咋做? 
获得屏幕尺寸,比如800*600,把窗口大小设置为尺寸+6,就是806*606,然后把窗口左上角移动到-3,-3,全屏幕。高兴了还可以SetTop,独占前台,呵呵。 

嗯,临时想到就这么多,以后想到再补充,也欢迎大家补充哈。

本文转自tonyxiaohome 51CTO博客,原文链接:http://blog.51cto.com/tonyxiaohome/198741 ,如需转载请自行联系原作者

相关文章
|
11月前
|
程序员 Windows
08 MFC - MFC框架中一些重要的函数
08 MFC - MFC框架中一些重要的函数
57 0
|
存储 API 数据库
【MFC】MFC基础篇(1)
【MFC】MFC基础篇(1)
【MFC】MFC基础篇(1)
|
存储 索引
|
API 编译器 Linux
(七):处理MFC
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50703886 (一):简介 为了能够在一个Winelib应用中使用MFC,你需要首先使用Winelib重新编译MFC。
1247 0
|
安全 容器 开发者
用MFC实现WebGUI--(CDHtmlDialog)
自从去年年底一次棘手的界面,开始研究用web做界面到现在大约1年,这一年间不是局限在实现层面,也并非一直研究这一个问题,有很多问题其实不是问题,只是自己没有想清楚或者思想没放开。对于一个界面开发人员,想必拉的对话框不少于100个,腻味不必说,光是对话框大小改变导致控件跟着变化都需要一番功夫,加上界面美观,界面的风格统一,界面的灵活多变......,头痛。
1472 0
SonicUI在MFC中的使用
SonicUI是一个GUI引擎,提供了一些简单的UI组件实现高效率的UI效果,例如:自绘按钮、异形窗体、动画、超链接和图像操作方法。此项目作者开源到CodeProject,地址为:http://www.codeproject.com/KB/GDI/SonicUI.aspx。
1257 0
|
C++ Windows
vs2010 mfc
引用:http://blog.sina.com.cn/s/blog_6c617ee301010vgr.html 1.添加消息处理函数:  右击项目名称-》类向导-》选择相应类名(我这是CfirstmfcView)-》选中消息(WM_OnMouseMove)-》默认生成函数OnMouseMove()-》选应用。
1056 0
|
Windows C++
vs mfc
引用:http://zhidao.baidu.com/question/90768814.html Win32 Application: 文件-新建-项目-win32-选择控制台应用程序或win32项目-确定-完成MFC WINDOWS程序: 文件-新建-项目-MFC-MFC应用程序-确定-完成。
625 0