2017-05-07 8 views
-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

答えて

4

効力を発揮する。

+0

これは** [wxFocusEvent documentation](http://docs.wxwidgets.org/3.1.0/classwx_focus_event.html)に**明示的に**記載されています。 –

関連する問題