本帖最后由 mosheng 于 2026-3-2 01:52 编辑
结合上次开源的自定义窗口和无边框整合到一起,这次增加了按钮的圆角
1、自定义浏览器窗口 api绘制窗口
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14872996
2、易语言API无边框浏览器,可拖拽可调整大小
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14872997
这两个是带了浏览器模块的,这次开源的就纯源码了,没有任何模块和dll,
实现的核心功能
1. 窗口功能(13项)
- 标准窗口 / 无边框窗口
- 可调整大小 / 窗口拖动
- 自定义背景色
- 窗口置顶
- 最小化/最大化/系统菜单按钮控制
- 窗口透明度(0-255)
- 动态修改标题
- 窗口刷新
- 自定义窗口图标(系统图标/文件图标)
2. 按钮功能(20项)
- 位置、大小、文本自定义
- 前景色、背景色
- 字体(名称、大小、粗体、斜体、下划线)
- 文字对齐(左/中/右)
- 启用/禁用、显示/隐藏
- 点击事件回调
- 动态修改文本、字体、位置
- 圆角按钮(自定义圆角半径)
- 圆角按钮抗锯齿渲染(GDI+)
3. 编辑框功能(24项)
- 位置、大小、文本自定义
- 前景色、背景色
- 字体(名称、大小、粗体、斜体、下划线)
- 文字对齐(左/中/右)
- 单行/多行模式
- 只读模式
- 密码框
- 边框控制
- 启用/禁用、显示/隐藏
- 获取/设置文本
- 动态修改字体、位置
4. 标签功能(17项)
- 位置、大小、文本自定义
- 前景色、背景色
- 字体(名称、大小、粗体、斜体、下划线)
- 文字对齐(左/中/右)
- 启用/禁用、显示/隐藏
- 动态修改文本、字体、位置
5. 通用功能(7项)
- 通过ID或名称操作控件
- 事件回调(窗口大小改变、按钮点击)
- 用户数据存储
- 多窗口支持
- 控件刷新
- RGB颜色转换
总计:81项功能
样式自定义能力
窗口样式
| 属性 |
说明 |
示例 |
| 标题 |
窗口标题文字 |
"我的应用" |
| 大小 |
宽度、高度 |
800 x 600 |
| 位置 |
X、Y坐标 |
(100, 100) |
| 背景色 |
RGB颜色 |
(250, 250, 250) |
| 无边框 |
是否无边框 |
真/假 |
| 可调整大小 |
是否可调整 |
真/假 |
| 置顶 |
是否置顶 |
真/假 |
| 透明度 |
0-255 |
255(不透明) |
| 最小化按钮 |
显示/隐藏 |
真/假 |
| 最大化按钮 |
显示/隐藏 |
真/假 |
| 系统菜单 |
显示/隐藏 |
真/假 |
| 窗口图标 |
系统图标/文件图标 |
IDI_APPLICATION / "C:\icon.ico" |
控件样式
| 属性 |
说明 |
适用控件 |
| 位置 |
X、Y坐标 |
全部 |
| 大小 |
宽度、高度 |
全部 |
| 文本 |
显示内容 |
全部 |
| 前景色 |
文字颜色 |
全部 |
| 背景色 |
背景颜色 |
全部 |
| 字体名称 |
字体 |
全部 |
| 字体大小 |
大小 |
全部 |
| 字体粗体 |
粗体 |
全部 |
| 字体斜体 |
斜体 |
全部 |
| 字体下划线 |
下划线 |
全部 |
| 文字对齐 |
左/中/右 |
全部 |
| 启用/禁用 |
状态 |
全部 |
| 显示/隐藏 |
可见性 |
全部 |
| 只读 |
只读模式 |
编辑框 |
| 多行 |
多行模式 |
编辑框 |
| 密码框 |
密码模式 |
编辑框 |
| 边框 |
显示边框 |
编辑框 |
| 圆角半径 |
圆角大小(像素) |
按钮 |
使用示例
最简示例(3行代码)
窗口配置.标题 = "Hello"
窗口配置.宽度 = 800
窗口配置.高度 = 600
我的窗口.创建窗口(窗口配置)
完整样式示例
' 窗口
窗口配置.标题 = "样式演示"
窗口配置.背景颜色 = 我的窗口.取RGB值(250, 250, 250)
窗口配置.透明度 = 255
窗口配置.窗口图标 = LoadIconA(0, #IDI_APPLICATION)
窗口配置.最小化按钮 = 真
窗口配置.最大化按钮 = 真
我的窗口.创建窗口(窗口配置)
' 圆角按钮
控件配置.文本 = "点击我"
控件配置.前景色 = 我的窗口.取RGB值(255, 255, 255)
控件配置.背景色 = 我的窗口.取RGB值(0, 120, 215)
控件配置.字体名称 = "微软雅黑"
控件配置.字体大小 = 16
控件配置.字体粗体 = 真
控件配置.文字对齐 = 1 ' 居中
控件配置.圆角半径 = 10 ' 圆角半径10像素
按钮ID = 我的窗口.创建按钮(控件配置)
自定义图标示例
' 使用系统图标
窗口配置.窗口图标 = LoadIconA(0, #IDI_APPLICATION)
' 从文件加载自定义图标
窗口配置.窗口图标 = LoadImageA(0, "C:\myicon.ico", #IMAGE_ICON, 0, 0, #LR_LOADFROMFILE)
' 指定图标大小(32x32)
窗口配置.窗口图标 = LoadImageA(0, "D:\图标\app.ico", #IMAGE_ICON, 32, 32, #LR_LOADFROMFILE)
技术亮点
1. 面向对象设计
- 使用类封装,代码结构清晰
- 支持创建多个窗口实例
- 自动资源管理
2. 全局窗口映射
- 统一管理所有窗口实例
- 消息路由机制
- 避免全局变量混乱
3. 窗口子类化
4. 事件驱动
5. 样式系统
6. 圆角按钮技术
- GDI+ 抗锯齿渲染
- 自定义圆角半径
- 平滑的视觉效果
- 支持鼠标悬停状态
7. 图标加载系统
- 支持系统预定义图标
- 支持从文件加载 .ico 图标
- 支持自定义图标尺寸
- 自动回退到默认图标
适用场景
- 自定义界面应用
- 工具软件开发
- 数据录入程序
- 系统管理工具
- 桌面小工具
- 无边框美化窗口
- 透明窗口效果
- 多窗口管理系统
- 现代化UI设计
学习价值
通过这个项目,您可以学习到:
- Windows API编程 - 窗口创建、消息处理
- 面向对象设计 - 类的封装和使用
- 事件驱动编程 - 回调机制
- 资源管理 - GDI对象的创建和释放
- 窗口子类化 - 消息拦截技术
- 全局状态管理 - 窗口映射表
- GDI+ 图形编程 - 抗锯齿渲染技术
- 自绘控件 - 自定义控件外观
项目优势
vs 易语言原生组件
- 更灵活的样式自定义
- 更简洁的API设计
- 更好的代码组织
- 支持无边框窗口
- 支持窗口透明度
- 支持圆角按钮
- 支持自定义图标
vs 纯API编程
- 无需处理复杂的消息循环
- 自动资源管理
- 面向对象接口
- 更少的代码量
- 更容易维护
创建时间: 2026-03-02
版本: v2.0
作者: mosheng
源码回复可见
|