2011-06-14 12 views
5

मैं सी ++ और wxwidgets के लिए काफी नया हूँ।मैं wxwidgets में आईडी द्वारा विजेट कैसे प्राप्त करूं?

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

मेरा प्रश्न यह है कि उस आईडी द्वारा उस पाठ नियंत्रण को कैसे प्राप्त किया जाए। मैं अपने मूल्य को एक अलग दायरे में बदलना चाहता हूं। क्या मुझे प्रत्येक विजेट में पॉइंटर रखने की आवश्यकता है, जिसके राज्य में बदलाव हो सकता है या क्या उस पॉइंटर को आईडी से प्राप्त करने का कोई तरीका है?

यह शायद एक आसान सवाल है, लेकिन मुझे लगता है कि मुझे जवाब खोजने के लिए सही खोज शब्द नहीं मिल सका।

+4

Wx के साथ मशीन नहीं है लेकिन 'wxWindow :: FindWindow' और सह चाल चलाना चाहिए। –

उत्तर

8

शायद आप स्थिर फ़ंक्शन wxWindow::FindWindowById चाहते हैं। यह एक सादा wxWindow सूचक देता है ताकि आपको इसे अपने उदाहरण के लिए wxTextCtrl पॉइंटर पर डालना होगा।

1

क्या आप वाकई एक अलग दायरे से अपने आईडी द्वारा टेक्स्ट नियंत्रण लाने के लिए चाहते हैं?

मुझे लगता है कि एक क्लीनर समाधान WxTextCtrl युक्त विंडो/संवाद वर्ग बनाना है। फिर इस नई कक्षा में wxTextCtrl में एक पॉइंटर होना चाहिए जिसमें यह शामिल है। फिर टेक्स्ट सेट करने के लिए विंडो/संवाद वर्ग में एक सदस्य फ़ंक्शन जोड़ें। की तरह कुछ:

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

इस तरह आप आईडी के आधार पर एक नियंत्रण लगाने के लिए नहीं है, आप कास्ट करने के लिए नहीं है और आप एक अलग दायरे में पाठ नियंत्रण के लिए आईडी का उपयोग करने की जरूरत नहीं है।

संबंधित मुद्दे