本系统上位机软件设计是基于 MFC进行开发的,MFC(Microsoft Foundation Classes)是微软基础类库的简称,提供了基于 C++语言的面向对象编程的框架,软件工程师可以使用该框架开发 Windows 应用程序。本系统采用 MFC 作为上位机软件开发工具,主要原因是:
编程语言做为一种语言自然和英语这些自然语言有类似的地方.学英语时我们知道要先记26个字母,然后单词及其发音,接下来就是词组,句子.反正简单的说就是记单词,熟悉词法,句法.接下来就是应用了,听说读写.而使用相同语言的人大脑里都有个翻译器,可以把自己的想法翻译成语言然后用说或写表达出来,而听和读则把接收来的语言翻译成自己大脑能理解的思想.
刚开始用C++做界面的时候,根本不知道怎么用简陋的MFC控件做出比较美观的界面,后来就开始逐渐接触到BCG Xtreme ToolkitPro v15.0.1,Skin++,等界面库,以及一些网友自己写的界面库,开始对于C++软件界面美化有了一点点的心得。不敢藏私,希望和一些新手朋友们分享交流。
大家知道现在PC市场上,、Linux、Mac基本占了百分之九十多,而在个人用户PC市场,应用在目前的PC市场还是占据了绝大多数,根据和Net 两家机构的最新统计,系统仍然占据90%以上,因此在上或者在环境下开发应用程序还是非常普遍的。及时是Linux下开发软件的同时,也有不少人是在环境下开发,所用工具也很多都是平台的软件。
(MFC效率较高,但大量的Windows API和消息机制使得其较难理解,不易用;QT封装较好,易用且==跨平台==,但效率较低)
(MFC效率较高,但大量的Windows API和消息机制使得其较难理解,不易用;QT封装较好,易用且跨平台,但效率较低)
存在问题: 桌面系统windows为王,windows编程大有可为。 解决方案: 大家知道现在PC市场上,Windows、Linux、Mac基本占了百分之九十多,而在个人用户PC市场,Windows应用在目前的PC市场还是占据了绝大多数,根据StatCounter和Net Applications两家机构的最新统计,Windows系统仍然占据90%以上,因此在Windows上或者在Windows环境下开发应用程序还是非常普遍的。及时是Linux下开发软件的同时,也有不少人是在Windows环境下开发,所用工
一般情况下,如果是windows程序,那么WinMain是入口函数,在VS中新建项目为“win32项目”
最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求
BCGSoft Ltd.成立于1998年,是一家专门为Microsoft Windows开发业务组件的软件公司。BCGSoft旨在帮助开发人员将当今市场上先进的技术整合到他们的应用程序中。
MFC 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。早期很多学习计算机专业的读者可以在学校里面都有接触过,因为这个是每一个计算机专业的读者必修课程,所以在早期的C++项目里面很多都是使用MFC为开发框架进行构建的,因为它有一个很大的好处就是和我们的windows的系统兼容性很好,可以直接调用整个系统的API函数,而且开发的程序对系统的支持度很好,因为我们现在的windows系统都是在向前兼容的,如windows系统里面有win 95、win98、win2000,win Xp,win7,这些操作系统都是一致向前兼容的,如果经历过这些系统的读者都会发现系统在win8之前一直往前兼容,造成操作系统变得越来越大,在win8系统,后windows系统引入C#一起来对windows系统进行调控,这时我们会发现win8对win7的兼容性很差,而且这个操作系统也是微软除visit系统最短命的系统,这个时候我们就会发现我们的MFC开发的程序在整个windows兼容性不是那么高了,而且由于当时,对于我们的C++开发一直有一个叫做visual studio 的编译器在C#语言没有出来前,只能编译C++,所以visual studio作为全世界最优的编译器也是整体支持MFC,所以这个时候我们现实生活中在windows系统开发的程序很大部分都是使用了MFC框架进行开发,在如今我们的很多酒店、政府等等很多行业上面用的都是MFC框架进行开发,MFC全面支持COM组件开发,这个时候很多在windows开发的程序也会在这上面支持COM组件开发,还有由于在中国大部分计算机的使用者都是用的windows系统,所以在开发程序中用C++来开发的时候都是使用了最为稳定的MFC进行开发,记得几年前和一位一起工作的朋友曾经谈过,只要微软不倒闭,MFC的工作者就不会失业,为啥呢,哪怕现在在windows上面最为流行的C#语言也没有C++中的windows编程对windows操作系统操作这么流利,打个比方如果你的电脑里面在加上一个高拍仪这个时候要用到的是USB驱动进行调用,这个时候处理USB驱动调用的时候就会发现,驱动调用的数据都需要进行位运算,这个时候用C++来处理是最为方便的,所以C++在windows上面的开发之所以占尽了便宜,是因为windows编程,而我们的MFC是封装后的windows编程。
最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求能运行多移动终端,多年前基于MFC封装OSG的老系统架构也实在该退休了,这年头找能维护MFC这种古董级GUI的靠谱人也非易事。 image.png 系统最终采用HT for Web的3D框架实现,项目中的程序员也很高兴有这样的机会终于摆脱维护MFC老系统的宿命,虽然大家都只有C++的开发经验,对HTML
打开 Visual Studio Installer , 然后选择 修改 Visual Studio 2019 , 弹出如下对话框 , 选择 " 使用 C++ 的桌面开发 " , 然后打开右侧的 " 使用 C++ 的桌面开发 " 选项卡 , 勾选 " "
今天主要了解了Visual C++的开发环境Visual Studio(话说以前都是用来调试控制台程序的)和用mfc写了一个最简单的程序。
Windows界面开发,笔者使用过的方案有三种:MFC、Duilib、WEB(基于CEF运行容器),各有优缺点。
C++ ocx开发,有ATL和MFC ActiveX两套框架。二者的比较,简单说,MFC封装程度高,故MFC使得你很快完成你的工程并更快的运行起来,但是牺牲了灵活性;ATL更接近COM核心,轻量级。
MFC, WinForms, WPF, Qt算是都折腾过, 就差WxWigets了 比较下来, 做游戏(引擎)工具开发的话, 最重要的是易上手, 好维护, 开发快, 综合下来还是滚回C++阵营, 选择了Qt 不用不知道, 其实传统的Qt Widgets用起来跟WinForms非常像, 甚至Qt Quick的特性跟WPF有的一拼 想当初强烈地想用C#, 很大部分原因是WinForms那个可视化GUI编辑器比较吸引人 不过QtDesigner虽说还没有生成事件代码的功能, 但是对于C++来说, 已经很不错了,
原文链接:http://blog.csdn.net/humanking7/article/details/50733036
转自http://bbs.csdn.net/topics/350023031 一.介绍 DirectUI技术说白了就是XML配置文件+图片+JavaScript控制界面。这点与网页css+图片+JavaScript十分相似,就是如开发网页一般开发桌面程序界面,这个开发效率当然大大的提高。将程序员从繁琐的界面绘制工作中解脱出来,专心开发逻辑代码。还能大大减少代码量,因为据统计,传统MFC程序中,界面代码大约占总代码的1/3强!也就是说,这个1/3的代码都可以由xml+javascript替代! 同理,如果
最近在学习QT GUI,单纯使用C++硬编码的方式,直接是采用QWidget部件来做,而不是采用QT Designer做UI界面,也不是采用QML+Javascript。单纯使用C++硬编码的方式,缺点就是代码量大,优点是灵活。其中用到了类似于Web开发中的CSS的QT样式表QSS。
============================================================================= ============================================================================= 涉及到的知识点有: 一、c++基础知识01 二、c++基础知识02 1、c语言中,如何在调用main函数之前就执行一段代码? 三、类与结构的区别01 四、类与结构的区别02 五、类的继承概念 1、一个mfc程序的例子的核心代码: 2、破解MFC中按钮的例子。 3、MFC版的小小IDE: 4、MFC版的小小浏览器: ============================================================================= ============================================================================= 会用到两个界面工具:vs2017下的MFC和QT,它们都是基于图形的。所以有些知识我们还没有学习到。 它们本身的构架就是用c++来完成的。
原文链接:https://www.cnblogs.com/DOMLX/p/11773260.html
研究Flash嵌入游戏中的可行性....... 渲染问题已解决 事件响应已解决 下面是C++与Flash AS的交互, 以MFC为例: 1. 新建一个MFC Dialog程序 2. 添加一个Flash控件 3. 把Flash控件添加一个变量 4. 在OnInitDialog()中添加载.swf文件 // CCppFlashDlg 消息处理程序 BOOL CCppFlashDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框
随着物质生活的丰富,人们的精神生活也越来越丰富。人们闲暇的时间也相对变多,于是很多人就开始寻找打发时间的方法。其中电视便是其中一种非常重要的消遣方式。假如我们打开电视机,看到了一个电视台正在播一部我们之前没看过的,正在一招一式进行打斗的武侠片;另一个电视台正在播一部之前也没看过的,正在重复太极推手的教学片。我想大部分人会选择那部武侠片。为什么?因为那是一个动作体系,不会让人厌烦。而那个推手教学片,可能非常高端,可能非常有内涵,但是总是让人缺乏点新鲜感。我之前更关注技术的细节,而今天开始,我将开始分析一款开源的软件界面库。这系列文章不再拘泥于一些技术细节,而从一个思路的方向去分析这个库。 我介绍这套界面库是目前开源的金山卫士开源计划中的一部分。具体的访问地址是 http://code.ijinshan.com/。其中代码的下载SVN地址是https://openkui.googlecode.com/svn/trunk。我将分析的是版本号为54的版本。(转载请指明出于breaksoftware的csdn博客) 在分析这个库之前,我们可以闭上眼睛,清空大脑,思考一下:如果自己要设计和编写一个界面库,将如何规划和设计?将会遇到什么技术问题?将如何做出一些选择?
前段时间无聊装了个VS2010RC, 然后试着建个了WPF的工程, 体验了一番. 刚开始没觉得这东西比WinForms方便在哪, 只是觉得它是一套跟Win32/MFC/WinForms完全不同的的东西. Win32/MFC/WinForms只要了解了消息循环机制, 理解起来就比较容易, 可WPF冒似没这套东西. 而且, HWND已经不存在于控件上了, 这是一个令人很不习惯的地方. 要知道不论什么UI库, 要想跟DirectX一起使用的话, 必须有一个HWND来指定绘制区域. 那么问题就来了: 怎么用WPF做
前言 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。 ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务
学VC并不是传说的那么难,可不下些功夫是学不成的。学编程急不得,没有编程的基础知识上来就学VC肯定碰一头灰,说VC难就难在这点上了。如果硬上,意志坚强的话还能挺过来,但最后还得回头来补习基础知识。意志不坚强的话,很有可能就此放弃,并留下一个VC难得不得了的印象。
OCX入门:http://blog.csdn.net/hkcsdn/article/details/52908748 前言 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。 ActiveX控
在正文之前,首先来讲讲Windows Mobile设备UI设计方面的感受。不同环境下,开发Windows Mobile设备应用程序时,界面设计的难易程度也不同。最初在EVC4.0下做Pocket PC 2003se的MFC应用程序时,Resource下的Dialog界面大小是用户指定的,为了使Dialog界面和真实设备的界面吻合,我们需要手动调整Dialog的大小,最头疼的莫过于屏幕在portrait和 landscape 模式切换时,界面不会自动改变。在Visual Studio 2005下,如果
最近,在看雪上看到了一个高中生分享的自学经历,想起之前也有很多高中甚至初中肄业的朋友向我咨询学习路线,分享给大家看一看。
一、关于MFC 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 二、常用控件 1.Buttton 2.Picture Control 3.Static Text 4.Radio Button
OpenCV本身提供了一些GUI方法,但使用起来仍有局限性。以C++为例,实际应用中我们大多会使用Qt或MFC来编写GUI程序。相较之下,Qt比MFC更易上手且界面样式更丰富,所以越来越多的C++视觉开发者和公司都倾向用Qt做视觉项目的GUI。
下面是 CStdioFile 类的部分列表,其中使用了 MFC 在其类中按类成员的用法划分它们时所采用的大多数标准注释: class CStdioFile : public CFile { DECLARE_DYNAMIC(CStdioFile) public: // Constructors CStdioFile(); ... // Attributes FILE* m_pStream; // stdio FILE ... // Operations virtual void Wri
总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。 一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。 毕竟,解决具体问题,每个函数内部,都是用C的方式写程序,还是面向过程的。 因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解决大问题的能力。就是先学习怎么走路,再学习怎么跑步。 2、学习C的过程中,一定要理解结构化编程思维。 为什么呢,我前面有文章说过,软件语言的发展过程,就是一个数据私有化的过程,大型工程应用,强调高内聚,低耦合,模块化设计,保持代码最大的灵活性和安全性。 这是现代工程化开发的核心和灵魂。 因此,利用C这门语言入门,借此理解结构化开发思维,可以说是个很方便的路子。因为C的函数,本来就是为重用做准备的。同时,全局变量和cpp内部私有变量的差别,其使用原则,这些都能学到很多结构化开发思维。 3、开始学习C++ C++不难学的,很多人觉得C++难学,其实是因为它在C之外,又提供了很多的概念,尤其是对象,很难以理解。 不过我经过这么多年,把这个问题反而看淡了,我认为面向对象相对面向过程,仅仅是结构化程序设计的一个具体体现,是编译器提供手段,强迫程序员必须遵循数据私有化的一个实例,C++和C的关系,最核心的莫过于此。 现在我们回到C再看看,如果我们把一个全局变量,写到一个cpp里面,并且在对应的h文件中不声明,它是不是就只有这个模块可以使用?它是不是就是私有变量,以这个理解,类能明白了吗? 4、学习C++的深入技巧 C++在类的基础上,经过这么多年的发展,其实提供了很多深入的概念,看起来很复杂,其实我看也很简单。比如模板,我的理解就是“类的类”,大家说是不是? 既然模板理解了,STL,ATL这些,静态模板库,动态模板库,还难理解吗?就是一大堆类的类,可以借此实现很多应用中需要的类,不需要程序员再自己写而已。 ok,STL都理解了,泛型开发还难吗?所谓泛型开发,其实就是我做一个模板,来定义一套算法规则,但是呢,我希望这个算法规则,能进一步抽象,对核心数据类型不要限死,我把各种数据套进去,都可以用,这样,仅算法这部分,我不需要重写了。你想想是不是这个道理? 学到这里,C++和C,其实已经差不多了。再学语言,就是求全责备,过于钻牛角尖了。 5、学习应用开发 前面说了,学习语言,目的不是让别人认为自己是专家,是为了写程序赚钱。因此,语言学完,要学习应用开发。 什么叫应用开发呢,我会一门语言,但是,客户不懂,客户说的很直接,在Windows下给我写个程序,我要什么什么功能。为啥Windows呢?因为我习惯。 OK,很多时候,应用开发要尊重客户习惯,一般说来,语言这个东东,还是要结合具体平台的开发,才能开发出有意义的应用程序卖钱。那么,一般说来,客户端是Windows系统,服务器是Linux,这些都是行业习惯,嵌入式不好说,各种平台都有,Palm,S60,Linux,WinCE,等等。要根据自己的目标客户来定。 当我们选定目标平台后,有一个问题,选什么语言,很多时候,学生和商用程序员差别就在这里,学生一般没得选,自己会啥就用啥呗,企业里的程序员不会,要先评估需求,看哪个语言更合适,不会的语言,要去学。 ok,假定我们选了C和C++,那么,我们需要选择开发平台,Windows下不用说了,VC,这是最好用的,Linux下呢,gcc,其他的也差不多。 假如我们开发VC,并且使用C++,这个时候,才需要考虑学习MFC了,因为这是微软的标准类库,至少Windows平台下,它最权威,你看见没有,我们从学习开始,走了多少步,才走到MFC?是不是MFC不是学习C++上来就必须学的? 6、学习MFC 学习MFC,很多人一上来就开始看其体系架构,看得一头雾水,那个模块关系依赖图,我到现在都看不懂。 呵呵,其实不是啦,和学语言一样,我们学MFC的目的,也不是希望成为MFC的专家,而是要利用MFC开发Windows应用程序,为我们赚钱。看见没?MFC是手段,不是目的,目的是开发Windows程序。 其实Windows下,有一套很标准的C接口,叫Win32API,这个才是Windows的标准编程核心,因此,学习MFC,真实的目的是理解Windows程序开发,建议可以先学习Win32API,看来我们又回到C了哈,呵呵。刚开始学C有用吧? 7、Win32API
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。 一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 📷 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。 因此,想要学习好C++,我的建议,先学习C,先
用Unity开发的游戏, 需要做个关卡编辑器. 如果只是内部用用, 其实直接扩展Unity就够了; 但问题是需要发布给外部的用户使用, 那么总不能把全套资源和Unity发给他们, 所以就诞生了这么个奇葩需求.。
我读研的时候,沉迷于 Windows 编程而不能自拔,那个时候也和楼主有一样的困惑。毕业的时候找工作,非 Windows C/C++ 岗位不去,因为技术功底比较好,很快就成为客户端负责人。 为了说明问题,我来给你讲个案例吧。 一、如何开发一款类电驴客户端? 假设我们现在要开发一个类似电驴这样的软件,软件界面如下图: 对电驴源码感兴趣的,可以点击下面的公众号获取: 打开后回复“五套源码”,获取电驴源码 如上图所示,假设操作系统选择 Windows,使用语言使用 C++,这就要求您必须熟悉 C++ 常用
1.选择菜单项File->New->Project,弹出“New Project”对话框。
上次介绍的几款图形界面库http://blog.okbase.net/vchelp/archive/23.html都是国外的开源项目,今天介绍的几款都是国人的开源项目,大部分是采用DirectUI设计思想。
1.activex无窗口问题(控件在编码过程中要检查m_hWnd是否存在,不然vs可能会出现绘制错乱和崩溃)
暑假在做一个项目的时候,本来是用C#.NET来写的一个港口进出闸的流程控制程序,里面涉及一个响应用PLC的采集信息的问题(PLC用串口和工控机相连接),然后思考如何用C#写串口通讯程序,结果师兄在一旁直接用VC++写了一个“*.ocx控件”,并在自己的电脑上进行了测试,完工后就把生成的“*.ocx”控件注册文件复制到了我们的电脑上。我们就在C#.NET程序里面将此控件拖入到主窗口中,然后就能直接利用此控件的事件来捕捉PLC的命令了,感觉好神奇。然后,我对C++的态度有了极大的转变,以前只知道C++写窗口程序是多么麻烦啊(远不如C#.NET来得快和直接),而它的所谓“比较底层,和底层操作系统的关系比C#这些高级语言要密切很多”的好处一直都没有体会到,现在才知道,正是因为C++比较底层,比较基础,所以它可以开发出很多和语言无关的公用程序块,如dll动态链接库和COM组件,原则上,只要你的Windows的系统,用VC++开发出来的这些公用程序块就能被任何语言调用(如果不用MFC框架,而用ATL框架来编写,甚至还可以脱离Windwos系统,不仅仅实现跨语言,甚至跨平台调用,这个笔者就没有仔细研究了)。
为学习QT首先必须搞明白的一个问题是,什么是QT,查找资料,对于QT有如下的认识:
本节开始为大家讲解偏向应用的知识——创建对话框。 对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是对话框,知识它做了很多美工 方面的工作,将其大大美化了。 创建对话框主要分为两大步: 第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件; 第二,生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。
大家好,又见面了,我是你们的朋友全栈君。 读者朋友们可能天天使用Visual C++这个强大的工具来开发应用程序,不知道注意到没有,Visual C++每次装载一个项目的时候,为了使项目加载过程不至于太单调,会在状态栏的左半部分会出现一个装载进度条,用来即时显示Visual C++装载项目的进度,当项目装载完毕后,进度条隐藏。那么这个功能是如何实现的呢?为了说明该功能的实现原理,本例提供了一个范例程序prgsbar,它演示了在编辑视图里显示文本文件,在加载文本文件时,在界面的状态条中的进度指示器仿真显示文件的加载过程,当文本装载完毕后,进度条隐藏。由于该程序在装载文件显示的进度条时无法进行拷屏操作,所以这里没有给出状态条中显示进度条的界面效果图,读者可以运行本书所带光盘中的程序代码观看相应的效果。 一、实现方法 虽然Visual C++中的MFC类提供了标准的进度指示器控件(progress control),但是我们不能在状态栏里直接使用这个控件,要解决这个问题,可以创建一个可重用C++类CProgStatusBar,这个类从CStatusBar派生,用来来实现状态条中的进度指示。整个实现过程不是很难,思路是在状态栏创建一个进度指示器控制,把它作为子窗口来对待,然后根据不同的状态来显示或者隐藏进度指示器。 在具体实现CProgStatusBar类的过程中,首先在CProgStatusBar派生类中加了一个CProgressCtrl类型的数据成员–m_wndProgBar,然后重载CstatusBar类的二个重要成员函数:OnCreate()、OnSize(),最后还要在该类中添加一个自定义成员函数OnProgress()。在上述三个函数中, OnCreate()负责在状态栏第一次被创建时接收控制,继而创建进度指示器并将它初始化为一个子窗口,它的实现代码如下: int CProgStatusBar::OnCreate(LPCREATESTRUCT lpcs) { lpcs->style |= WS_CLIPCHILDREN; VERIFY(CStatusBar::OnCreate(lpcs)==0); VERIFY(m_wndProgBar.Create(WS_CHILD, CRect(), this, 1)); m_wndProgBar.SetRange(0,100); return 0; } OnCreate()函数在状态栏的式样中加了一个WS_CLIPCHILDREN,它告诉Windows不要绘制子窗口以下的状态栏区域,这样可以减少屏幕闪烁。接着OnCreate()函数创建进度指示器控件并将它的范围设置成[0,100]。注意在这里创建进度指示器控件时没有用WS_VISIBLE,因为我们要实现的目标是仅仅当装载文件时进度条才显现,其余时间内应用程序都隐藏它。 熟悉Windows编程的人都清楚,无论何时,只要在某个窗口里添加子窗口,那么一定要负责管理它的大小尺寸,也就是说,当父窗口大小改变后,子窗口的大小也要跟着作相应的改变。一般来说,这个工作由父窗口的WM_SIZE消息处理函数OnSize()来作,所以我们也要处理该类的OnSize()函数。 void CProgStatusBar::OnSize(…) { CStatusBar::OnSize(…); CRect rc; GetItemRect(0, &rc);//获取状态条的第一个窗口的尺寸; m_wndProgBar.MoveWindow(&rc,FALSE);//移动进度条到状态条的第一个窗口; } 从上述代码可以看出,CProgStatusBar::OnSize()将进度指示器放在了状态栏的第一个窗格,这个窗格通常用来显示程序的”就绪”信息和命令提示信息。注意这里不论进度指示器是处于可见状态还是隐藏状态,MoveWindow都照样起作用–所以即便是进度指示器处于隐藏状态,其窗口大小同样是可调的。 调整好进度指示器的窗口大小后,下面要作的就是进度指示器的显示,进度指示器当前进度状态的显示在CProgStatusBar::OnProgress中完成。它有一个类型为UINT的入口参数:参数值的范围从0到100,表示进度百分比,0表示进度没开始,100表示全部完成。如果这个参数的值大于0,则OnProgress显示进度控制并设置指示器的位置;如果参数值等于0,则 OnProgress隐藏进度控制。 虽然子窗口控件通常都是放在父窗口能绘制的区域的最上面,但这样做在绘制方面是有一定风险的。在隐藏/显示进度控制时尤其如此,这时候会出现两个问题:第一,因为进度指示器显示在状态栏的第一个窗格位置,所以如果进度条指示器
音视频领域中,除了关注服务器相关技术外,客户端也无法回避,毕竟客户端也要负责采集,编码,收发,解码和渲染,所以客户端开发也是整个音视频技术栈不可或缺的部分。本文梳理一下客户端常见技术方案,为以后客户端开发选型提供技术储备。
以下内容参考https://blog.csdn.net/qq_36556893/article/details/89946636
暑假想学习一下Windows API的使用,于是想利用Windows窗口设计一个简单的计算器,虽然之前在图书馆借了一本书但过于硬核,后来在bilibili找到一个MFC的教程才开始上手做这个。
在微软公司的windows平台下,有众多的编程语言和编程模式,比如windows SDK、C/C++、MFC、VB、Win32汇编等,哪种是最合适你的呢?小编认为,这取决于你的工作场景和情况,编程语言和模式本身并没有好坏之分,只有恰当与否。 如果你平时工作并不需要常常编写程序,只是偶尔做一些小工具来完成琐碎、重复、耗时的工作,那么VB是最适合你的编程语言了。VB编程学习简单,很容易上手,可以较快的编写出一些简单程序和工具,如果再深入一点,同样可以很方便快捷的编写出功能强大程序。比如几条语句就可实现一
领取专属 10元无门槛券
手把手带您无忧上云