gpt4 book ai didi

winapi - 自定义控件,winapi

转载 作者:行者123 更新时间:2023-12-02 12:14:39 26 4
gpt4 key购买 nike

有人可以告诉我,在 winapi 中将进度条作为 TreeView 控件的一部分是否现实?我使用 GTK 制作了一个 GUI,并且使用进度条作为单元格元素效果很好,如下图所示。

enter image description here

我没有开发自定义控件的经验,所以我想知道,能够像我使用 winapi 对 GTK 所做的那样,是否现实,或者会浪费时间吗?

最佳答案

如果您想在非树状数据表中显示进度条,则不必求助于自定义控件。典型的解决方案是在报告模式下使用标准的 Windows API ListView 控件,该控件提供 GtkTreeView 提供的表格 View ,对提供进度信息的列使用“所有者绘制”。如何执行此操作已有详细记录,但它涉及从其父窗口的窗口过程中的 ListView 监听 WM_NOTIFY,寻找 NM_CUSTOMDRAW 通知。 NM_CUSTOMDRAW 通知附带了绘制 ListView 的单个单元格甚至整行所需的一切。只需确定这是您要绘制的列,绘制它,然后让系统绘制其他所有内容。

但是,如果您要使用,而不仅仅是一张平坦的 table ,那么您将有更多工作要做。 GtkTreeView 允许您拥有多列树,但 Windows API 库存控件仅允许您拥有多列表( ListView )或单列树( TreeView )。如果您需要的话,有像 mCtrl 这样的包可以为您提供多列树控件,并且它们的工作方式与 ListView 控件类似,因此您还可以使用上面的自定义绘制方法。

(您可以将 ListView 想象为 GtkTreeViewColumns 的 GtkTreeView,其中有一个 GtkCellArea,其中最多有一个 GtkCellRenderPixbuf 和最多一个 GtkCellRendererText,并且第一列也最多可以有一个 GtkCellRendererToggle。同样,您可以想象一个 TreeView 作为 GtkTreeView,只有一个 GtkTreeViewColumn 和不可见的列标题,最多有一个 GtkCellArea,每个最多有一个 GtkCellRendererToggle、GtkCellRendererImage 和 GtkCellRendererText。)

我不熟悉任何已经存在的模仿 GtkTreeView 使用的单元格渲染器系统的预构建自定义控件。 ListView 和 TreeView 控件没有这样做,因为缺乏必要性并且增加了这些控件针对的情况(资源管理器)的复杂性。 (我自己也在做一个,但是最近很忙,不知道什么时候能完成。)

关于winapi - 自定义控件,winapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com