FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 731|回复: 0

易语言自绘窗口支持Unicode源码

[复制链接]

签到天数: 695 天

[LV.9]以坛为家II

294

主题

606

回帖

1万

积分

超级版主

皇冠皇冠皇冠太阳

积分
17933

活跃会员热心会员永久VIP会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2026-3-7 20:19:45 | 显示全部楼层 |阅读模式
易源码分享
开发平台: 易语言
使用框架: 其他
代码类型: 源码
界面截图: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×


注意:此源码是需要使用dll的,dll是用C++编写,C++源码也一起开源3


image.png

image.png
image.png

image.png

image.png

Emoji Window DLL - C++ 版本
使用 C++ 和 Direct2D 实现彩色 Emoji 显示的 DLL。
项目结构emoji_window_cpp/├── emoji_window.sln          # Visual Studio 解决方案├── emoji_window/│   ├── emoji_window.vcxproj  # 项目文件│   ├── dllmain.cpp           # DLL 入口│   ├── emoji_window.h        # 头文件│   ├── emoji_window.cpp      # 主实现│   ├── renderer.h            # 渲染器头文件│   ├── renderer.cpp          # 渲染器实现│   └── exports.def           # 导出定义└── output/    └── emoji_window.dll      # 编译输出编译步骤1. 使用 Visual Studio(推荐)
  • 安装 Visual Studio 2019 或更高版本
  • 打开 emoji_window.sln
  • 选择 Release | x64 配置
  • 生成解决方案(Ctrl+Shift+B)
  • DLL 输出到 x64\Release\emoji_window.dll
2. 使用命令行(MSBuild)"C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" emoji_window.sln /p:Configuration=Release /p:Platform=x64API 文档创建窗口
```c++
HWND create_window(const char* title, int width, int height);
### 创建 Emoji 按钮(字节集)```c++int create_emoji_button_bytes(    HWND parent,    const unsigned char* emoji_bytes,    int emoji_len,    const unsigned char* text_bytes,    int text_len,    int x, int y, int width, int height,    unsigned int bg_color);设置按钮点击回调
```c++
typedef void (__stdcall *ButtonClickCallback)(int button_id);
void __stdcall set_button_click_callback(ButtonClickCallback callback);
### 设置窗口大小改变回调当自绘窗口大小被用户或代码改变时触发。```c++typedef void (__stdcall *WindowResizeCallback)(HWND hwnd, int width, int height);void __stdcall SetWindowResizeCallback(WindowResizeCallback callback);
参数
说明
hwnd发生大小改变的窗口句柄
width窗口新的客户区宽度(像素)
height窗口新的客户区高度(像素)
易语言声明:
.DLL命令 设置窗口大小改变回调, , "emoji_window.dll", "SetWindowResizeCallback"    .参数 回调函数指针, 子程序指针
易语言使用示例:
.子程序 窗口大小改变回调, , 公开.参数 窗口句柄_, 整数型.参数 新宽度, 整数型.参数 新高度, 整数型' 窗口大小改变时更新布局调试输出 ("窗口大小改变: " + 到文本 (新宽度) + " x " + 到文本 (新高度))' 注册(程序初始化时调用一次)设置窗口大小改变回调 (&窗口大小改变回调)
注意:回调必须在创建窗口后、运行消息循环前完成注册。

设置窗口被关闭回调
当自绘窗口被关闭时触发(用户点击关闭按钮 ×,或代码调用 destroy_window,均会触发 WM_DESTROY)。
```c++
typedef void (stdcall *WindowCloseCallback)(HWND hwnd);
void stdcall SetWindowCloseCallback(WindowCloseCallback callback);
| 参数 | 说明 ||------|------|| `hwnd` | 被关闭的窗口句柄(触发时 HWND 已失效,仅用于识别是哪个窗口) |**易语言声明:**
.DLL命令 设置窗口关闭回调, , "emoji_window.dll", "SetWindowCloseCallback"
.参数 回调函数指针, 子程序指针
**易语言使用示例:**
.子程序 自绘窗口关闭回调, , 公开
.参数 已关闭的窗口句柄, 整数型
' 重置句柄变量,防止后续误用失效的 HWND
调试输出 ("自绘窗口已关闭, HWND=" + 到文本 (已关闭的窗口句柄))
.如果真 (窗口句柄 = 已关闭的窗口句柄)
窗口句柄 = 0
.如果真结束
TabControl句柄 = 0
' 注册(程序初始化时调用一次)
设置窗口关闭回调 (&自绘窗口关闭回调)
> **注意**:> - 回调触发时窗口已销毁,不要在回调内对该 `hwnd` 执行任何窗口操作。> - 只有顶层窗口(非子窗口)关闭时才会触发此回调。> - 若程序同时运行了 `run_message_loop`,关闭窗口后消息循环会自动退出;若由易语言消息循环驱动,则不会影响易语言进程。---### 运行消息循环```c++int run_message_loop();易语言调用示例
参见 examples/test.txt
技术细节
  • 渲染引擎: Direct2D
  • 文字渲染: DirectWrite
  • 彩色 Emoji: D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT
  • 字体: Segoe UI Emoji
  • 编译器: MSVC 2019+
  • 平台: Windows 10+
依赖项
  • Windows SDK 10.0 或更高
  • Direct2D
  • DirectWrite
  • 无需额外运行时(静态链接)
许可证
MIT License

游客,如果您要查看本帖隐藏内容请回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-9-17 07:00 , Processed in 0.023874 second(s), 15 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表