Archive

Posts Tagged ‘GUI’

CD1:BORLAND 宝典

April 6th, 2022 No comments

图形界大佬 John Carmack 在推特上呼吁大家,现在应该有意识的保存你的开发环境,这样多年以后你想重新构建你的软件时才不会慌脚乱手,因为通常每过几年你常常会发现,自己之前的老代码已经没有合适的环境编译了:

今天互联网上的内容,由于各种原因,正在以越来越快的速度消失,而习惯什么都从网上找的新一代网民们,却并没有备份和记录的习惯及意识。不远的将来,会有一天,当你特别想找某个工具却搜尽互联网你都找不到时,就麻烦了。

这是一张兼具收藏价值和实用价值的光碟,收录了 Borland 公司全胜时期的著名桌面开发工具:C++ Builder 6 和 Delphi 7,以及各种配套书籍和资源,都是全网最好的版本(原版 CD 安装文件加最新补丁)。别看这两款软件老,因为生成可执行独立小巧,至今依然可以用他们做出交互尚可的桌面应用。

他们最大的特点,是可以让你轻松开发出 1MB 以内的无依赖的桌面软件:(点击 Read more 展开)

Read more…

Categories: 大浪淘沙 Tags:

给 Qt5 引入 C# / Delphi 的 Anchor Layout

February 16th, 2022 No comments

在前文 用 MFC 写 GUI 程序是一种什么样的体验? 中提过 Anchor Layout 可以很简单的设定让控件跟随窗口四条边大小变化的策略:

比如右下角的两个按钮,设置的 anchor 是 “right,bottom” 他们在窗口扩大缩小时,会跟右和下两条边保持恒定距离,左上角的文字是 “left,top” 的 anchor,他会保持恒定的左边距和上边距,中间文字框的 anchor 是四个方向的 “left,top,right,bottom” 他会和窗口四条边框保持相同边距,因此会随窗口扩大而扩大。

这种布局方式最早是 Delphi / C++ Builder 引入的,非常简单实用,后来被 C# Winform 原封不动的抄了过去,而 QtWidgets 里用了另一套规则,虽然用起来更精细了,却没有 anchor layout 这么简单直白。

虽然 QtQuick 和 QGraphicsItem 里面也支持 anchor 布局,不过原生的 QtWidgets 里并没有支持,所以我写了两行代码解决了这个问题,只需要在窗体的 resizeEvent() 里调用下 AnchorLayout 类的 update() 方法,就能将所有子控件中包含 “anchor” 属性的 geometry 全部按照 c# 规则更新:(点击 Read more 展开)

Read more…

Categories: 编程技术 Tags:

用 MFC 写 GUI 程序是一种什么样的体验?

February 12th, 2022 No comments

本文来自知乎问题:MFC、WTL、WPF、wxWidgets、Qt、GTK 各有什么特点?

感觉我说了太多 Qt 的事情了,今天只说一下 MFC ,到底过时在哪里,都在说 “MFC 就是 xxx” 类似的话,我来补充点细节,增加点感性认识,到底 MFC 过时在哪里?想要用好 MFC 可以怎么办?

虽然 MFC 也有 DIALOG 的设计器,似乎可以拖一下控件,做个 hello world, 计算器之类的好像也很简单,但是稍微复杂那么一点就麻烦了,比如布局,MFC 里的控件只能设置绝对坐标和大小,那么如果你的窗口扩大或者缩小了,想自动改变内部特定控件的大小和位置怎么办?比如 C# 里随便设置一下各个控件的 docking 和 anchor 就能:

C# 里给控件设置 docking/anchor:窗口变大变小后就能自动调整控件的位置和大小

就能让某些控件随窗口变大而移动,某些控件随窗口变大而变大,而某些控件不变,这在任何 GUI 库里都是最基础的功能,都可以在设计器里点两下就做到的事情,MFC 却需要重载 WM_SIZE, WM_SIZING 消息来自己写代码每次手工计算所有控件的新坐标和大小,想写的通用点,还得上千行的代码,枚举所有子控件,根据额外信息重新计算位置大小,虽然 2015 的 MFC 里加了一个半成品的布局信息,但是基本没用,你在 MFC 的设计器里拖控件,都是写死坐标和大小的。(点击 Read more 展开)

Read more…

Categories: 编程技术 Tags:
Wordpress Social Share Plugin powered by Ultimatelysocial