-2
ユーザーがクリックしたときにwxtextctrlの値をクリアする必要があります。私はwxEVT_SET_FOCUSハンドラでこれを扱いますが、非表示のキャレット/カーソルは隠れています。私が間違っていることやそのバグは何ですか?多分他のイベントを処理する必要がありますか?ユーザーがwxTextCtrlをクリックしたときに点滅するカーソルを表示する方法は?
ここMCVE:wxWidgetsのの
# include "wx/wx.h"
class MyFrame : public wxFrame
{
public:
MyFrame(const wxString& title) :
wxFrame(NULL, -1, title, wxDefaultPosition, wxSize(200,150))
{
wxBoxSizer* bSizer1 = new wxBoxSizer(wxVERTICAL);
m_textCtrl1 = new wxTextCtrl(this, wxID_ANY, wxT("sometext"), wxDefaultPosition, wxDefaultSize, 0);
m_textCtrl1->Bind(wxEVT_SET_FOCUS,[this](wxFocusEvent& e){
m_textCtrl2->AppendText(m_textCtrl1->GetValue()+"\n");
m_textCtrl1->SetValue("");
m_textCtrl1->ShowPosition(0);
m_textCtrl1->ShowNativeCaret(true);
});
bSizer1->Add(m_textCtrl1, 0, wxALL|wxEXPAND, 5);
bSizer1->Add(0, 0, 1, wxEXPAND, 5);
m_textCtrl2 = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
bSizer1->Add(m_textCtrl2, 0, wxALL|wxEXPAND, 5);
this->SetSizer(bSizer1);
this->Layout();
}
~MyFrame() {};
protected:
wxTextCtrl* m_textCtrl1;
wxTextCtrl* m_textCtrl2;
};
class MyApp : public wxApp
{
public:
virtual bool OnInit() wxOVERRIDE
{
MyFrame *frame = new MyFrame(wxT("MCVE"));
frame->Show(true);
return true;
};
};
wxIMPLEMENT_APP(MyApp);
バージョン - 3.1.0、OS - あなたはネイティブ処理のために、あなたのハンドラで
e.Skip()
を呼び出す必要があるのWindows7
これは** [wxFocusEvent documentation](http://docs.wxwidgets.org/3.1.0/classwx_focus_event.html)に**明示的に**記載されています。 –