我想用wxDataViewCtrl中的图标替换展开/折叠图标。
我无法找到设置展开/折叠图标的方法。 有没有可用的API?
或
我是否需要直接修改wxDataViewCtrl源?您以前的经验可以帮助我。
答案 0 :(得分:1)
首先使用wxDataViewCtrl
的要点是它包装了相应的本机控件,因此不支持更改其外观。
这就是说,如果你正在使用它的通用实现,就像在MSW下一样,你可以通过定义一个自定义wxRendererNative派生类并覆盖它的DrawTreeItemButton()
方法来实际改变它。 。但这会影响绘制树状按钮的所有其他控件,显然包括泛型wxTreeCtrl
本身,还包括wxPropGrid
。一般来说,我不建议这样做。
答案 1 :(得分:0)
我不知道这是对的还是错的,在这里我找到了一种基于VZ.suggestion实现我的东西的方法。
response.sendRedirect()
这样我可以覆盖
class MyRenderer : public wxDelegateRendererNative
{
public:
MyRenderer() : wxDelegateRendererNative(wxRendererNative::GetDefault()) { }
virtual void DrawTreeItemButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
int flags = 0)
{
MyCustomCtrl* pWin = dynamic_cast<MyCustomCtrl*>(win->GetParent());
if (pWin != nullptr)
{
// Draw my choice of expand/collapse button.
}
else
{ // Do not affect other controls that are using this drawing.
wxRendererNative::GetDefault().DrawTreeItemButton(win, dc, rect, flags);
}
}
};
以及更多本土绘图。