问题标签 [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.
c# - TreeView.DrawNode 的问题 - OwnerDrawText
我有一个连接到远程服务器并在需要时轮询数据的应用程序。它有一个 TreeView,其中节点表示可用的对象,文本的颜色表示数据是否已加载;gray-italicized 表示未加载,黑色,常规文本已加载。
目前我已将 TreeView 设置为 OwnderDrawText 并让 TreeView.DrawNode 函数简单地绘制文本,如下所示:
我认为这就足够了,但是,这引起了一些问题;
- When a node is selected, focused or not, it doesn't envelop all of the text, example (I hope imgur is ok).
- 当节点聚焦时,虚线轮廓也不显示。如果将其与此示例进行比较。文本中带有“日志”的节点使用的是 e.DefaultDraw = true
我尝试按照this question中给出的示例进行操作。它看起来像这样:
然而,结果是这样的。(注意,使用粉红色来区分颜色)。如您所见,突出显示的背景并没有一直延伸到焦点虚线所在的位置。并且还绘制了另一个框。
我对如何解决这个问题感到有些困惑。我想要的只是在加载某些内容时显示灰色斜体文本。第一种也是最简单的方法不太奏效,第二种方法感觉我做得太多了。
毕竟,是否有人对如何正确执行此操作有任何建议,因为必须有一种更简单的方法。
先感谢您。
listview - 详细信息模式下的 Windows 窗体 ListView - 如何更改所有者绘制中的行高?
我有一个处于详细信息模式的 Windows 窗体 ListView 控件。有多个列在起作用。我正在尝试使用所有者绘制在其他列“下方”放置一个特别宽的列。
所以,而不是这个:
我正在尝试这样做:
我无法弄清楚如何扩大项目的边界以适应房间以绘制下面的列。有任何想法吗?
c# - C# ColumnHeader 的可用空间背景颜色
我正在尝试在 FastObjectListView 控件中绘制自定义 ColumnHeaders。
到目前为止,代码有效,但 ColumnHeaders 可用空间(因此不包含任何列标题 atm 的部分)仍然默认绘制。
我补充说:
因为没有它,columnheaders 默认样式被绘制在我的自定义样式之上,但是由于 columnheaderbar 的可用空间不包含任何 columnheaders,它仍然由它的默认样式绘制。
这是一张图片来澄清我所说的 Columnheader 的可用空间: 图片链接
提前致谢。
c++ - 如何在 Windows Mobile 中动态更改所有者绘制的列表框的高度?
我正在尝试在 windows mobile 6.1 上创建所有者绘制的列表框我LBS_OWNERDRAWFIXED
在创建列表框控件时指定了样式。我正在处理WM_MEASUREITEM
,WM_DRAWITEM
因此。
我想在其字体更改时更改列表框项的高度(我WM_SETFONT
在创建控件后使用更改它)。问题是WM_MEASUREITEM
消息只发送一次。我需要一种WM_MEASUREITEM
再次生成消息的方法,以便我可以将项目的高度设置为字体的高度。我看过文章http://www.codeguru.com/Cpp/controls/listview/advanced/article.php/c1013/,但它使用 MFC,而我正在使用 WINAPI 直接开发此控件。一些文章提到调整控件大小会WM_MEASUREITEM
再次生成消息。但是,在我的情况下它没有生成。
请让我知道是否有任何方法可以在 windows mobile 中实现这一点。
c# - 选择时 TreeView 所有者绘制故障
我正在尝试向标准 System.Windows.Forms.TreeView 控件的元素添加更多图标。
我的计划是只更改树视图控件的标签区域,但它显示出一种奇怪的行为。如果我单击一个节点来选择它,当按下鼠标按钮时,背景会以高亮颜色正确绘制。但是,在我释放鼠标按钮之前,文本是错误的未选择颜色。好像e.State
在按下和释放鼠标按钮之间包含错误的状态。
这就是我正在做的事情:我用 .init 初始化,this.DrawMode = TreeViewDrawMode.OwnerDrawText
然后用this.DrawNode += LayoutTreeView_DrawNode
. 这是处理程序:
如果我将处理程序设置为默认情况...
...同样的事情发生了,这很奇怪,因为 Windows 现在实际上正在绘制它。此行为在带有 .Net 3.5 的 Windows XP 中。
有没有办法解决这种奇怪的行为?
windows - 如何在所有者绘制菜单中绘制我自己的子菜单箭头(并防止 Windows 在我的顶部绘制它的箭头)
我在WM_DRAWITEM中完成绘画后,Windows 似乎绘制了子菜单箭头,如何阻止 Windows 绘制箭头?
.net - 如何制作自定义绘制的可调整大小的容器?
我有一个 WinForms gui 应用程序,它有许多我想自定义绘制一些图形的区域。这些区域将包含控件并且可以调整大小。我目前正在考虑从 a 继承TableLayoutPanel
并处理 onpaint 消息。
这听起来像是一个好方法还是有其他/更好的选择?
winapi - 为什么我的所有者绘制列表框的DrawItem方法不能调用
我尝试用 WTL 编写一个所有者绘制列表框。我的代码看起来像这样
我还添加REFLECT_NOTIFICATIONS
了父消息循环,并在属性表中将 Owner Draw 设置为 Fixed。但是我还是收不到消息。然后我用spy++查看了listbox收到的消息,发现有些消息很奇怪(WM_USER+7211
)。
我的操作系统是 WinXp 并使用 VS2008。
delphi - TListBox 上的“列表索引越界”
我在表单上有一个 TListBox,并添加了项目
grp
是一个整数。列表框设置为lbOwnerDrawFixed
。
如果我在标记线上onDrawItem
遇到异常:EStringListError
msg
并且grp
是本地字符串和整数变量。
项目 ### 引发异常类 EStringListError 并带有消息“列表索引超出范围 (1)”
c# - 使winform表单所有者可绘制
我有一个试图覆盖 WndProc 子例程的表单。我正在使用 GetDCEx 来获取我的表单的 DC 句柄。根据 Microsoft 关于使用 GetDCEx 的文档,我的窗体必须有 CS_OWNDC 或 CS_PARENTDC 标志设置我的窗口类才能使用 GetDCEx。根据 Spy++,我的窗口没有这些类属性。我的问题是,如何分配 CS_OWNDC 或使表单所有者可绘制,以便我可以在我的程序中使用 GetDCEx?顺便说一句,我正在使用 C#。