2012-04-16 19 views
5

मेरे पास मेरे फॉर्म एप्लिकेशन में WndProc का उपयोग करने के बारे में एक बुनियादी सवाल है। मैं जानना चाहता हूं कि WndProc विधि का उपयोग क्या है जब मेरे पास फॉर्म इवेंट उपलब्ध हों। कस्टम मामलों को बनाने के लिए मुझे किन मामलों में आवश्यकता है? MSDN बताता है कि इसका उपयोग केवल विंडोज संदेशों को संसाधित करने के लिए किया जाता है।जब मैं फॉर्म इवेंट करता हूं तो मुझे WndProc का उपयोग क्यों करना चाहिए?

उत्तर

4

WndProc यह है कि WinForms Win32 विंडोज संदेशों के चारों ओर एक रैपर प्रदान करता है जिसमें उपयोग करने और .NET परत को समझने में आसान होता है।

आमतौर पर यह निम्न तरीके से काम करता है। WM_LBUTTONDOWN विंडोज संदेश का उदाहरण लें। Windows.Forms.Control.WndProc इस संदेश को रोक देगा और संदेश की WPARAM और LPARAM से प्रासंगिक जानकारी निकाल देगा। फिर यह संरक्षित आभासी विधि OnMouseDown को प्रासंगिक जानकारी के साथ एक MouseEventArgs में पैक किया जाता है। कार्यान्वयन तब अपने स्वयं के प्रसंस्करण के अंत में माउसडाउन घटना को आग लगा देगा।

तो ऑनXXXX विधियों/XXXX घटनाओं के एक सेट से निपटना बहुत आसान है, फिर सीधे विंडोज संदेशों को रोकना आसान है।

लेकिन यदि विंडोज़ संदेश में आप रुचि रखते हैं तो WinForms द्वारा प्रबंधित नहीं किया जाता है? उस स्थिति में आप WndProc को ओवरराइड कर सकते हैं और इसे स्वयं सीधे संभाल सकते हैं। एक और उपयोग एक संदेश को अवरुद्ध करना है और उसके बाद इसे नियंत्रित करने का मौका होने से पहले इसे छोड़ दें। या आप अपने आवेदन के भीतर नियंत्रण के बीच भेजने के लिए कस्टम संदेश बना सकते हैं। जब आप अपने नियंत्रण प्राप्त प्रत्येक संदेश को देखना चाहते हैं तो डीबगिंग के लिए भी उपयोगी, आपको केवल एक ही स्थान पर लॉगिंग जोड़ने की आवश्यकता है।

2

.NET Win32 के आसपास एक रैपर है। यह विंडोज़ में सब कुछ के तरीकों, घटनाओं और गुणों का 100% खुलासा नहीं करता है।

तो कभी-कभी आपको कवर के नीचे जाने की आवश्यकता होती है।

हालांकि यह कुछ ऐसा नहीं है जिसे आप ढूंढ रहे हैं - जब आपकी समस्या की आवश्यकता होती है, तो एक अच्छी ओल 'स्टैक एक्सचेंज सर्च आमतौर पर आपको बताएगी।

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

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