0
Я пытаюсь создать пользовательский прозрачный wxTextCtrl
вождения от него и рисования текста себя следующим образом:WxWidgets Прозрачный wxTextCtrl
BEGIN_EVENT_TABLE(TextLayer, wxTextCtrl)
EVT_PAINT(TextLayer::OnPaint)
EVT_ERASE_BACKGROUND(TextLayer::OnEraseBackground)
END_EVENT_TABLE()
void TextLayer::OnEraseBackground(wxEraseEvent& event) {}
void TextLayer::OnPaint(wxPaintEvent & evt)
{
wxAutoBufferedPaintDC dc(this);
PrepareDC(dc);
wxGraphicsContext *gc = wxGraphicsContext::Create(dc);
if(gc)
{
dc.SetFont(GetFont());
dc.SetTextForeground(GetForegroundColour());
auto a = GetValue();
dc.DrawText(GetValue(), 0, 0);
delete gc;
}
}
, но это не работает, это не прозрачны, как я должен сделайте это правильно?
вам будет лучше создавать прозрачную панель, дать ей фокус, а затем поймать события EVT_KEY_DOWN/EVT_PAINT. Причина в том, что я не утончаю, вы можете переопределить собственную картину управления. – Igor
вызовите evt.Skip() в вашем классе TextLayer, поскольку кажется, что вы останавливаете событие прямо в своей функции OnPaint. – macroland