问题标签 [ownerdrawn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8151 浏览

c# - TreeView.DrawNode 的问题 - OwnerDrawText

我有一个连接到远程服务器并在需要时轮询数据的应用程序。它有一个 TreeView,其中节点表示可用的对象,文本的颜色表示数据是否已加载;gray-italicized 表示未加载,黑色,常规文本已加载。

目前我已将 TreeView 设置为 OwnderDrawText 并让 TreeView.DrawNode 函数简单地绘制文本,如下所示:

我认为这就足够了,但是,这引起了一些问题;

  1. When a node is selected, focused or not, it doesn't envelop all of the text, example (I hope imgur is ok).
  2. 当节点聚焦时,虚线轮廓也不显示。如果将其与此示例进行比较。文本中带有“日志”的节点使用的是 e.DefaultDraw = true

我尝试按照this question中给出的示例进行操作。它看起来像这样:

然而,结果是这样的。(注意,使用粉红色来区分颜色)。如您所见,突出显示的背景并没有一直延伸到焦点虚线所在的位置。并且还绘制了另一个框。

我对如何解决这个问题感到有些困惑。我想要的只是在加载某些内容时显示灰色斜体文本。第一种也是最简单的方法不太奏效,第二种方法感觉我做得太多了。

毕竟,是否有人对如何正确执行此操作有任何建议,因为必须有一种更简单的方法。

先感谢您。

0 投票
2 回答
2397 浏览

listview - 详细信息模式下的 Windows 窗体 ListView - 如何更改所有者绘制中的行高?

我有一个处于详细信息模式的 Windows 窗体 ListView 控件。有多个列在起作用。我正在尝试使用所有者绘制在其他列“下方”放置一个特别宽的列。

所以,而不是这个:

我正在尝试这样做:

我无法弄清楚如何扩大项目的边界以适应房间以绘制下面的列。有任何想法吗?

0 投票
1 回答
1285 浏览

c# - C# ColumnHeader 的可用空间背景颜色

我正在尝试在 FastObjectListView 控件中绘制自定义 ColumnHeaders。

到目前为止,代码有效,但 ColumnHeaders 可用空间(因此不包含任何列标题 atm 的部分)仍然默认绘制。

我补充说:

因为没有它,columnheaders 默认样式被绘制在我的自定义样式之上,但是由于 columnheaderbar 的可用空间不包含任何 columnheaders,它仍然由它的默认样式绘制。

这是一张图片来澄清我所说的 Columnheader 的可用空间: 图片链接

提前致谢。

0 投票
1 回答
1996 浏览

c++ - 如何在 Windows Mobile 中动态更改所有者绘制的列表框的高度?

我正在尝试在 windows mobile 6.1 上创建所有者绘制的列表框我LBS_OWNERDRAWFIXED在创建列表框控件时指定了样式。我正在处理WM_MEASUREITEMWM_DRAWITEM因此。

我想在其字体更改时更改列表框项的高度(我WM_SETFONT在创建控件后使用更改它)。问题是WM_MEASUREITEM消息只发送一次。我需要一种WM_MEASUREITEM再次生成消息的方法,以便我可以将项目的高度设置为字体的高度。我看过文章http://www.codeguru.com/Cpp/controls/listview/advanced/article.php/c1013/,但它使用 MFC,而我正在使用 WINAPI 直接开发此控件。一些文章提到调整控件大小会WM_MEASUREITEM再次生成消息。但是,在我的情况下它没有生成。

请让我知道是否有任何方法可以在 windows mobile 中实现这一点。

0 投票
1 回答
5002 浏览

c# - 选择时 TreeView 所有者绘制故障

我正在尝试向标准 System.Windows.Forms.TreeView 控件的元素添加更多图标。

我的计划是只更改树视图控件的标签区域,但它显示出一种奇怪的行为。如果我单击一个节点来选择它,当按下鼠标按钮时,背景会以高亮颜色正确绘制。但是,在我释放鼠标按钮之前,文本是错误的未选择颜色。好像e.State在按下和释放鼠标按钮之间包含错误的状态。

这就是我正在做的事情:我用 .init 初始化,this.DrawMode = TreeViewDrawMode.OwnerDrawText然后用this.DrawNode += LayoutTreeView_DrawNode. 这是处理程序:

如果我将处理程序设置为默认情况...

...同样的事情发生了,这很奇怪,因为 Windows 现在实际上正在绘制它。此行为在带有 .Net 3.5 的 Windows XP 中。

有没有办法解决这种奇怪的行为?

0 投票
1 回答
1231 浏览

windows - 如何在所有者绘制菜单中绘制我自己的子菜单箭头(并防止 Windows 在我的顶部绘制它的箭头)

我在WM_DRAWITEM中完成绘画,Windows 似乎绘制了子菜单箭头,如何阻止 Windows 绘制箭头?

0 投票
1 回答
107 浏览

.net - 如何制作自定义绘制的可调整大小的容器?

我有一个 WinForms gui 应用程序,它有许多我想自定义绘制一些图形的区域。这些区域将包含控件并且可以调整大小。我目前正在考虑从 a 继承TableLayoutPanel并处理 onpaint 消息。

这听起来像是一个好方法还是有其他/更好的选择?

0 投票
1 回答
1407 浏览

winapi - 为什么我的所有者绘制列表框的DrawItem方法不能调用

我尝试用 WTL 编写一个所有者绘制列表框。我的代码看起来像这样

我还添加REFLECT_NOTIFICATIONS了父消息循环,并在属性表中将 Owner Draw 设置为 Fixed。但是我还是收不到消息。然后我用spy++查看了listbox收到的消息,发现有些消息很奇怪(WM_USER+7211)。
我的操作系统是 WinXp 并使用 VS2008。

0 投票
2 回答
7333 浏览

delphi - TListBox 上的“列表索引越界”

我在表单上有一个 TListBox,并添加了项目

grp是一个整数。列表框设置为lbOwnerDrawFixed

如果我在标记线上onDrawItem遇到异常:EStringListError

msg并且grp是本地字符串和整数变量。

项目 ### 引发异常类 EStringListError 并带有消息“列表索引超出范围 (1)”

0 投票
1 回答
985 浏览

c# - 使winform表单所有者可绘制

我有一个试图覆盖 WndProc 子例程的表单。我正在使用 GetDCEx 来获取我的表单的 DC 句柄。根据 Microsoft 关于使用 GetDCEx 的文档,我的窗体必须有 CS_OWNDC 或 CS_PARENTDC 标志设置我的窗口类才能使用 GetDCEx。根据 Spy++,我的窗口没有这些类属性。我的问题是,如何分配 CS_OWNDC 或使表单所有者可绘制,以便我可以在我的程序中使用 GetDCEx?顺便说一句,我正在使用 C#。