2011-06-14 21 views
5

C++ ve wxWidgets için oldukça yeniyim.wxWidgets'da bir widget ile nasıl bir widget alırım?

wxTextCtrl* text = new wxTextCtrl(panel, SOME_ID); 

Sorunu, bu metin denetiminin kimliğine nasıl alacağımız sorusudur. Değerini farklı bir kapsamda değiştirmek isterim. Durumu değiştirilebilecek her bir widget'a bir işaretçi tutmam gerekiyor mu yoksa bu işaretçiyi kimliğinden almanın bir yolu var mı?

Bu, muhtemelen kolay bir sorudur, ancak bir yanıt bulmak için doğru arama terimlerini bulamadım.

+4

wx kullanışlı bir makineye sahip değilsiniz, ancak wxWindow :: FindWindow' & co hile yapmalıdır. –

cevap

8

Büyük olasılıkla wxWindow::FindWindowById statik işlevini istiyorsunuz. Örneğiniz için bir wxTextCtrl işaretçisine çevirmeniz gerekecek düz bir wxWindow işaretçisini döndürür.

1

Metin denetimini kimliğine göre farklı bir kapsamdan almak istediğinizden emin misiniz?

Daha temiz bir çözüm, wxTextCtrl dosyasını içeren bir Window/Dialog sınıfı oluşturmaktır. Sonra bu yeni sınıf içerdiği wxTextCtrl için bir işaretçi olmalıdır. Ardından metni ayarlamak için Window/Dialog sınıfına bir üye işlevi ekleyin. gibi bir şey:

class MyWindow: public wxWindow 
{ 
    public: 
     void setTextCtrlText(const wxString &str) { m_textCtrl->ChangeValue(str); }; 
    private: 
     wxTextCtrl *m_textCtrl; 
}; 

Eğer ID tarafından bir denetim bulmak gerekmez Bu şekilde, döküm gerekmez ve farklı bir kapsamda metin kontrolü için kimliğini kullanmak gerekmez.