【人人5分钟学会】4行代码用C++编程实现任意形状窗体,不用MFC
今日介绍用C++编写任意形状的窗体。
比如要实现下面小鸟形状的窗体,该如何做呢?
看似高大上,实际小菜一碟!5分钟包你学会,只需4行代码!
请看视频:
附源代码:
form1.PictureSet(IDB_BITMAP1); // 设置窗体背景图片
form1.MoveToScreenCenter(294,370); // 将窗体移动到屏幕中间并设置窗体大小为294x370
form1.TransparencyKeySet(RGB(255,255,255)); // 实现白色部分透明
form1.TitleBarBehaviorSet(1); // 实现拖动窗体任意处可改变窗体位置
类似地,你可实现任意窗体了,什么动物、植物、美女、卡通……只要找到你喜欢的图片就可以啦。
注意一定是bmp格式的图片,如果是其他格式的图片,可用Windows画图板程序打开后另存以转换为bmp格式的图片。观察图片背景颜色是什么,用RGB(R,G,B)表示这种颜色,实现这种颜色的透明。
还等啥,还不动手试一试?
关于该Windows编程模板的视频和下载方法,以前介绍过,请点以下链接观看:
视频:1小时学会用C++编写Windows窗口图形界面程序,不用MFC
视频下集:1小时学会!用C++模板快速编写Windows窗口图形界面程序,不用MFC
不用MFC
说明:不用MFC,这是和很多其他课程、很多教科书不同的。
我们采用的方式是:使用Windows API。
通过这种方式,使用C++编写Windows窗口图形界面程序,
不要再为用什么语言掐架了
有人说python好,我就用python,其他语言都不好;
有人说C#好,编写Windows图形界面应该用C#;
有人说C++里,就得用MFC;
有人说Java好,有人说VB好,有人说Delphi好,有人说Matlab好……
有人经常关注每年语言排名,什么语言名列前茅,某种语言又进了多少名、又退了多少名……
因为这都是初学者的行为,高手从来不做这种事情。因为,
所有语言的本质都是一样的
无论什么语言,包括汇编语言
只要是编写运行在Windows上的程序
最终本质都是转换为对Windows API的调用
这是系统的最底层本质! 我们绕开所有经销商,直接从厂家进货
直接调用Windows API !
这里,我们只是以C++为例而已
使用其他任何语言,都是一样的
究竟用哪种方式编写Windows应用程序最好,其实并无一定之规。应用程序本身的特性应该是决定采用何种编程工具的最主要因素。但是无论将来你采用什么编程工具,通过了解Windows API从而深入理解Windows的工作原理,这本身就具有很重要的意义。
—— Charles Petzold
徘徊在语言的选择中毫无意义,主要精力应放在如何解决实际问题上。
而且,要非常方便地解决。
不用MFC的具体原因
MFC的问题尤其严重。尽管它极大地简化了某些工作,但我经常发现自己会在某些其他功能上摔跟斗(比如让文档/视图的体系结构按照我的设想来工作)。并非像很多人一厢情愿期望的那样,MFC始终能成为Windows编程的万灵宝药,几乎也没人认为它是一种很好的面向对象的设计模型。
—— Charles Petzold
MFC不过是对WindowsAPI的一种封装形式,而且是一种轻量级的封装。Windows的很多功能并没有真正地被包含进去,所以使用这种编程方式就是在束缚我们的手脚。
—— Charles Petzold
Windows是一个非常复杂的系统,在API之上加一层编程语言并不能消除其复杂性,最多不过是把复杂性隐藏起来而已。说不定什么时候,Windows复杂的那一面迟早会蹦出来拖你的后腿,懂得API能让你到时候更快地挣脱困境。
—— Charles Petzold
什么是Windows API
Windows API(Application Programming Interface),即Windows应用程序编程接口,是Windows系统提供的一整套编程函数库,包括大量函数。任何在Windows中运行的程序包括Windows本身都是靠调用这些函数运行的。
Windows API能干什么?
这个问题不好回答,因为Windows API提供的功能实在太丰富了,且不断有新的API函数被开发出来。
与其问“Windows API能干什么?”不如问“它不能干什么?”
答案是:它没有什么不能干的!Windows API可以实现除了+、-、*、/基本运算之外的几乎一切功能!
API函数大部分位于Windows系统目录下的库文件中,这些库文件大多是.dll文件,比较常用的有kernel32.dll、gdi32.dll、user32.dll等。这些文件是随Windows操作系统的安装而被安装到系统中的,而且它们都很重要。