winforms - एचडब्ल्यूएनडी कैसे एक सिस्टम से बाहर निकलते हैं.विंडो.फॉर्म.फ़ॉर्म



visual-studio visual-c++ (1)

फॉर्म को देखते हुए

System.Windows.Forms::Form Form1;

और विंडो हैंडल

HWND hWnd;

मैं कैसे फॉर्म 1 की हैंडल प्रॉपर्टी पर एचडब्ल्यूड सेट कर सकता हूं जो वास्तव में एक सार्वजनिक संपत्ति के रूप में मौजूद है जो कि "विंडोज़ हैंडल को नियंत्रित करता है कि नियंत्रण बाध्य है। (नियंत्रण से वंशानुक्रमित किया गया।)" सिस्टम के माइक्रोसॉफ्ट प्रलेखन के अनुसार। विंडोस.फॉर्मस :: फार्म ? मेरे फॉर्म फॉर्म 1 के निर्माता में, मैंने कोशिश की है

hWnd = this.Handle;

लेकिन संकलक शिकायत करता है:

त्रुटि C2228: 'Handsle' के बावजूद वर्ग / स्ट्रेट / यूनियन प्रकार 'MyNamespace :: Form1 ^ const' का उपयोग करना चाहिए, इसके बजाय आप '->' का उपयोग करना चाहते हैं?

तो मैं कोशिश करता हूँ

hWnd = this->Handle;

और केवल

hWnd = Handle; // Since I'm in the Form

और फिर कंपाइलर कहते हैं:

त्रुटि C2440: '=': 'System :: IntPtr' से 'HWND' में कनवर्ट नहीं किया जा सकता कोई यूज़र-डिफ़ाइंड-रूपांतरण ऑपरेटर उपलब्ध नहीं है जो इस रूपांतरण को कर सकता है, या ऑपरेटर को नहीं कहा जा सकता है


मुझे एक हल मिल गया, और कोई परवाह नहीं है कि यह एक कहर है

hWnd = static_cast<HWND>(Handle.ToPointer());

काम करता है।





handle