windows下VC界面 DIY系列1----写给想要写界面的C++程序员的话

简介:         很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈。

        很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈。

能来到这里看我写文章,

第一说明你是windows下开发的程序员!

第二你对漂亮软件界面开发感兴趣!

第三或许你也像我当初一样对C++软件界面开发 无所适从!或许我写的不专业,但是我只想让利用C++编写客户端界面的新手程序员们对C++界面开发没有误区 。

我是从windows开发出身,深知当我们想要去用C++开发界面的时候是多么的操蛋,回头看看我们熟悉的MFC win32SDK
,做出来的界面咋就那么难看,对比网上的那些绚丽软件我们的软件顿时显得档次很低了。做软件界面技术并不是多么高深,也并不是很难,只要找对路子很容易上手。虽然说的看似简单,但是写起来确实非常繁琐复杂,同时 需要对windows消息了如执掌才能写好C++ UI。


首先说说写界面的几种方式,在windows下面:

第一种界面开发方式

基于windows控件的自绘,相信很多程序员都听过MFC自绘等等术语,确实写起来不好写,实际上是MFC不好理解的缘故,真正的术语应该叫做win32界面自绘更能防止新手走进误区,因为MFC就是封装的win32 API,所以MFC界面自绘 就是win32界面自绘.原理大概就是我们拦截windows绘制界面的消息,然后我们代替他来绘制界面,从而实现我们的自定义界面。很多皮肤库通过Hook技术,拦截了windows的UI消息,然后实现了整体UI风格的切换,例如SKinMagic这个皮肤库。这种方式适合写库的人来玩,难度相对高,要对windows消息了如指掌。不过没关系 我会在后续文章分析windows的所有控件的实现 以及消息处理 和自绘。

第二种界面开发方式

基于DirectUI技术的界面,什么是DirectUI技术呢?我们知道在MFC中我们的软件界面都有句柄 ,句柄是一种系统资源。

但是基于DirectUI技术的界面组件是没有句柄的,我们需要自己封装大量的鼠标消息  等等代替默认windows控件的消息。

这么说吧 加入你要用DirectUI技术绘制一个Button  那么你就需要自己实现  例如系统Button的一些状态.比如鼠标点击           Hover  UnHover  Disable 时候 按钮的样子 以及消息的处理. 因为现在你不是在用windows默认的消息机制来实现界面。一切消息你自己封装。

DirectUI技术虽然是 无句柄绘制组件,但是 所有DirectUI界面必须有一个承载窗口作为 渲染窗口来使用,因为你绘图需要设备上下文嘛。

市面上有很多可以代替windows下繁琐的界面开发,后续会专门讲解如何在下面编写界面

Qt的GUI 以及QML都可以快速的开发软件界面,但是有一个缺点是软件包可能会有些大,不过开发效率的确是高    这是本人的擅长之处后期会详细介绍QML开发跨平台界面UI

DUILIB 国内的界面库 比如金山 百度的一些产品中就用到了此库,除了有些小BUG之外 没啥太大的缺点   后期会在文章中介绍

Skin++一个收费的界面库,由于收费 技术不共享不适合我们学习使用 直接X掉

关于界面开发会遵循如下顺序进行:

               1、 一步一步 学习 Win32 SDK 以及MFC中通过 自绘实现界面DIY  系列

                1.1   自绘Button按钮
                1.2   自绘Dialog
                 1.3  自绘菜单
                 1.4  自绘输入框
                 1.5 自绘ComboBox
                 1.6 自绘ListView
                  1.7 自绘Tab 
                  1.8 自绘ScrollBar 
                  1.9 通过HooK实现界面自绘

               2、DirectUI方式  基于 GDI+开发  自定义软件界面组件 系列

                  2.1 GDI+使用入门
                  2.2 GDI+ 实现DirectUI系列

               3、Qt下的界面开发系列

            ·  4、DUILIB快速开发界面系列

以上是我列出的我想要去写的东西,写博文其实很枯燥无味,工作繁忙不能每天更新 但是至少保证每周更新两到三次博文,可能写的技术水平也不入大牛们的眼,但是对于新手来说 能帮助快速进入界面开发的门槛 那么就足够了。~

附上最近写的测试界面











目录
相关文章
|
2月前
|
NoSQL Redis 数据安全/隐私保护
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
文章提供了Redis最流行的图形化界面工具Another Redis Desktop Manager的下载及使用教程,包括如何下载、解压、连接Redis服务器以及使用控制台和查看数据类型详细信息。
173 6
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
|
2月前
|
NoSQL Redis 数据库
Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载
文章提供了Redis图形化界面工具的下载及使用教程,包括如何连接本地Redis服务器、操作键值对、查看日志和使用命令行等功能。
173 0
Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载
|
2月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
25 5
|
6月前
|
存储 程序员 编译器
C/C++堆栈详细分析,新老程序员必会
C/C++堆栈详细分析,新老程序员必会
196 1
|
4月前
|
安全 C++ Windows
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
|
7月前
|
缓存 网络协议 Linux
碎片技能:在 Windows 的任意目录一键快捷进入 CMD 命令行界面
在Windows 10/11中,SaaS服务商常需使用命令行,如PowerShell或CMD。本文介绍了如何进入DOS命令行:通过“开始”菜单→“运行”→输入“cmd”,然后确认。此外,还展示了如何在任意目录快速启动DOS命令行,只需右键点击并选择相应菜单项。提供两种实现方法:一是导入注册表文件,二是使用名为ContextMenuManager的优化软件。建议使用软件方法,易于添加和删除菜单项。
87 1
碎片技能:在 Windows 的任意目录一键快捷进入 CMD 命令行界面
|
6月前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
72 0
|
6月前
|
程序员 C# C++
lpszBlogName C#开发多年中途被迫改行C++但工作中又经常偷偷使用C#的C++程序员
通过AUMID解析出packageFamily,再根据PackageManager解析出安装目录 PackageManager是WinRT的类型,如何在c++中使用WinRT,请参考C++/WinRT 以下代码需要管理员权限才能运行。
|
6月前
|
存储 程序员 C++
程序员必知:【C++】虚函数表vtable理解
程序员必知:【C++】虚函数表vtable理解
41 0
|
6月前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
79 0