问题标签 [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.
.net - listbox ownerdrawn items vb2008
我需要根据要添加的项目的文本或其包含的文本在列表框中绘制每个项目。然后我需要在列表框的开头放置一个图标,根据我指定的单词使用另外两种颜色和图标,例如,
如果项目包含错误文本,请在开头放置一个错误(16x16px)图标,并以浅红色绘制背景,以深红色粗体绘制文本。
如果它包含准备好的或开始的文本,则使用浅橙色背景和深蓝色粗体文本。
- 如果它包含 ok 或 success 文本,则使用浅绿色背景和深绿色粗体文本。
我怎样才能做到这一点?
编辑
这是我已经拥有的,但这段代码似乎会不断刷新。我需要选择颜色的地方是 e.index 的值。我可以将 e.index 更改为像 e.stringvalue 这样的 somthinf 吗?
c++ - 从所有者绘制的列表框中删除边框
我通过派生 CListBox 制作了一个所有者绘制的列表框,但我不希望它有边框。相反,边框将在父对话框的背景中绘制,因此我的列表框看起来像是具有自定义边框。如何删除边框?在我的派生类中是否有要覆盖的标志或函数?
delphi - 如何知道 TToolButton 的 MenuItem 是否被下拉?
在用于承载菜单条目(设置了 MenuItem 和 Grouped 属性的 TToolButtons)的所有者绘制工具栏的上下文中,我想知道是否删除了相应的菜单项。问题是 OnAdvancedCustomDrawButton 中的 State 属性没有反映该信息。
单击工具按钮时,它的 Down 属性为 true,但在上面的特定情况下(MenuItem 设置和 Grouped=True),就在下拉菜单之后,另一个 OnAdvancedCustomDrawButton 被触发,但这次将 Down 设置为 false。
这意味着我最终绘制了一个非按下状态的按钮。
查看 VCL 的源代码,似乎有关删除哪个工具按钮的信息存储在 TToolBar 的 FMenuButton私有字段中,并且 Windows 通过 Perform(TB_SETHOTITEM) 通知热状态,但是这些都不提供读取访问权限。 ..
VCL 还通过私有 FTempMenu 执行下拉菜单,因此无法访问其句柄。
PS: FWIW,如果使用 hacky 解决方案,唯一可用的私有字段似乎是 FButtonMenu,必须将其与 CustomDraw 中的 Button.MenuItem 进行比较,其他私有字段要么设置得不够早(如 FMenuButton),要么是私有的具有可变位置的变量(如 MenuButtonIndex)。不过还是不太满意。
delphi - 如何选择性地使所有者绘制的 TListBox 的画布无效?
我有一个所有者绘制的 TListBox (lbVirtualOwnerDraw),它的内容会动态更新(每秒最多可以更新 10 次)。列表框中一次最多可以有 300 个项目。每个项目可能有大约 5 行文本和与之关联的图像。每当刷新项目时,我都必须刷新(或使 TListBox 无效),以便 VCL 框架将调用 ListBoxDrawItem。但由于所有多余的重绘,这会对整体性能产生不利影响。所以我的问题是:
有没有办法只使包含一个项目或其一部分的绘图的画布的一小部分无效?(例如,包含一行文本或位图的矩形)。
我们如何在 Draw Item 中处理这样一个选择性的无效矩形?如果可以将整数作为刷新或无效的一部分传递,我可以在 DrawItem 中使用它来确定要刷新的内容。
有没有办法找到一个项目在 TListBox 上是否可见(按索引)?
提前致谢!
c# - OwnerDraw 日期时间选择器
我想使用 MonthPicker 而不是 DateTimePicker,它的实现与 DateTimePicker 完全相同,但下拉面板仅显示月份和年份选择(而不是日期、月份和年份) - 我无法发布任何内容在这里作为新手的形象,虽然我做了一个:(
有没有办法覆盖 DateTimePicker 渲染(ownerdraw 有点东西),或者如果这是不可能的,那么重现 DateTimePicker 行为的最佳方法是什么?
c - 如何使用winAPI绘制按钮
我已经成功创建了一个所有者绘制的按钮。
但是我现在如何绘制/着色该死的东西,使它看起来像一个使用 Windows API 的按钮?目前,它只是看起来像一个彩色标签?
任何C示例?
c# - 如何绘制位置标志?
我用 C# 为 Winforms 编写自己的文本框控件。
我想不通的一件事:如何绘制各种尺寸的文本位置标志?
c# - OwnerDrawn ListBox 失去焦点时为空
我订阅了该ListBox.DrawItem
事件,当它有焦点时它画得很好,但是当我离开时它什么也没画。
c++ - WIN32:如何告诉所有者绘制的静态控件刷新自身?
我有一个 WIN32 所有者绘制的静态控件,它使用两个源图像(填充和未填充)绘制进度条。在初始抽签中效果很好:
但是,我似乎无法正确擦除和重新绘制东西。我已经用 WM_PAINT 和 RedrawWindow 尝试过 SendMessage,但没有一个工作得很好:
它不是用新值重新绘制窗口,而是与最初绘制的图像一起坐在那里,并忽略进一步的绘制命令。它为初始值正确绘制进度,无论是 0%、50% 等,我可以验证是否正在调用我的 WM_DRAWITEM 消息处理程序代码。
那么,在WIN32中告诉这个控件擦除和重绘的正确方法是什么?
我是否可能需要执行 BeginPaint/EndPaint 之类的操作,或者删除我已通过的 DRAWITEMSTRUCT 中的 hDC?
c++ - MFC VC++ Custom Checkbox Image
How do I get a 3-state checkbox to use a different bitmap for the Indeterminate state?
I want to change the image used by my 3-state checkboxes to use a different one; the controls are in Win98-style, and the indeterminate state of such checkboxes is difficult to distinguish from disabled checkboxes (this is presumably why they changed this for the WinXP-style controls, but I cannot use those because of other details in my project).
I'm using Visual C++ 2010, and I've defined an 8x8 bitmap in VS's Resource Editor. The bitmap's ID is IDB_INDET_CHECK
.
I'm not entirely sure what the standard "technique" for something like this is; I've only really just started getting into manipulating Windows controls and MFC.
My first attempt was to create a class, CTriButton
, that derives from CButton
, override the DrawItem
function, and try to draw it myself. I then used SubclassDlgItem
to turn one of the checkboxes in my window into this class (I think?). This... sort of works? The checkbox no longer appears, and if I click on where it should be, an empty checkbox frame appears, but nothing else happens (and the debug message in my code is not being sent).
Here's the relevant code, though I'm not sure any of this is right. First, code from my window's OnInitDialog
.
Next, the code for my custom button's DrawItem
.