乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 18|回复: 1

自定义工具栏

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-10-28 21:45:06 | 显示全部楼层 |阅读模式
好的,这不是你的“普通”工具栏定制问题。这太简单了……不过,这是一种高级编辑技术,我正在研究AutoCAD显示的工具栏。我学到的信息可能有助于打开用户以前从未想过要做的各种定制领域
例如,创建用户可以输入信息的文本框的步骤如下:
使用Windows API调用识别要放置文本框控件的容器。这可以通过enumChildWindows完成,然后检查每个窗口的正确属性以确定它是正确的窗口。例如,如果您想在层工具栏中添加一个控件,在枚举窗口时,只需使用标题“层”测试控件(是的,即使对接的工具栏也有标题)
一旦识别了工具栏,使用SetWindowPos API将工具栏设为您想要的大小,确保使用zorder和nomove标志,否则,工具栏将移动,当它更改上下文时,您可能会将其松开
使用CreateWindowEX API创建子控件(在本例中为“编辑”)在新扩展的工具栏中初始化。此时还可以传递一些默认文本
我可以在工具栏上创建控件,但每当用户移动工具栏时,工具栏都会恢复到其原始大小。没问题,我想……我会删除窗口类属性“CS_HREDRAW”和“CS_ VREDRAW”,从而防止工具栏在重新绘制时调整自身大小……问题是,它仍然调整自身大小…或者更准确地说,AutoCAD将其(afxWnd70类)调整为ToolbarWindow32的大小……这显然不好,因为这样您就看不到文本框。所以我需要能够做的是1)将“编辑”类注入ToolbarWindow32类(最初成功,但afxWnd70仍调整为ToolbarWindow 32的原始大小),或2)将已经子类化的afxWnd70类子类化,以便截取调整大小消息并将参数更改为我需要的参数3)设置一个定时器(简单),持续更新工具栏大小(严重性能下降)4)在工具栏上放置额外的按钮,使其保持所需的宽度,并将我的控制置于顶部(按钮保持Zorder,因此当鼠标在其上移动时总是位于顶部)
好的,就是这样……现在我该如何实现它……正如我所说的,这些基础已经开始起作用了,但如果我还有其他几个勇敢的人对实现同样的目标感兴趣,我会做得更好
想象一下能够将任何窗口类(选项按钮、编辑框、组合框等)放置在工具栏上。您将能够实现一个工具栏,其中有一个图形,显示您在文本框中输入的股票趋势。。。很像本论坛其他地方显示的lisp程序,用于在绘图窗口中跟踪股票表现

本帖以下内容被隐藏保护;需要你回复后,才能看到!

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

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-10-28 22:05:09 | 显示全部楼层

我手头没有任何东西,也记不起怎么做的名字(很可能是子类化),但是是的,你可以截取窗口的winproc(通过将你的winproc分配给注册的窗口类),处理你需要的,并将你想要窗口处理的发送到默认的(对于那个窗口)winproc。这将是我能想到的捕获和处理大小调整/移动消息的最佳方式
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 21:02 , Processed in 0.798166 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表