मेरे पास मेरे फॉर्म एप्लिकेशन में WndProc
का उपयोग करने के बारे में एक बुनियादी सवाल है। मैं जानना चाहता हूं कि WndProc
विधि का उपयोग क्या है जब मेरे पास फॉर्म इवेंट उपलब्ध हों। कस्टम मामलों को बनाने के लिए मुझे किन मामलों में आवश्यकता है? MSDN बताता है कि इसका उपयोग केवल विंडोज संदेशों को संसाधित करने के लिए किया जाता है।जब मैं फॉर्म इवेंट करता हूं तो मुझे WndProc का उपयोग क्यों करना चाहिए?
उत्तर
WndProc यह है कि WinForms Win32 विंडोज संदेशों के चारों ओर एक रैपर प्रदान करता है जिसमें उपयोग करने और .NET परत को समझने में आसान होता है।
आमतौर पर यह निम्न तरीके से काम करता है। WM_LBUTTONDOWN विंडोज संदेश का उदाहरण लें। Windows.Forms.Control.WndProc इस संदेश को रोक देगा और संदेश की WPARAM और LPARAM से प्रासंगिक जानकारी निकाल देगा। फिर यह संरक्षित आभासी विधि OnMouseDown को प्रासंगिक जानकारी के साथ एक MouseEventArgs में पैक किया जाता है। कार्यान्वयन तब अपने स्वयं के प्रसंस्करण के अंत में माउसडाउन घटना को आग लगा देगा।
तो ऑनXXXX विधियों/XXXX घटनाओं के एक सेट से निपटना बहुत आसान है, फिर सीधे विंडोज संदेशों को रोकना आसान है।
लेकिन यदि विंडोज़ संदेश में आप रुचि रखते हैं तो WinForms द्वारा प्रबंधित नहीं किया जाता है? उस स्थिति में आप WndProc को ओवरराइड कर सकते हैं और इसे स्वयं सीधे संभाल सकते हैं। एक और उपयोग एक संदेश को अवरुद्ध करना है और उसके बाद इसे नियंत्रित करने का मौका होने से पहले इसे छोड़ दें। या आप अपने आवेदन के भीतर नियंत्रण के बीच भेजने के लिए कस्टम संदेश बना सकते हैं। जब आप अपने नियंत्रण प्राप्त प्रत्येक संदेश को देखना चाहते हैं तो डीबगिंग के लिए भी उपयोगी, आपको केवल एक ही स्थान पर लॉगिंग जोड़ने की आवश्यकता है।
.NET Win32 के आसपास एक रैपर है। यह विंडोज़ में सब कुछ के तरीकों, घटनाओं और गुणों का 100% खुलासा नहीं करता है।
तो कभी-कभी आपको कवर के नीचे जाने की आवश्यकता होती है।
हालांकि यह कुछ ऐसा नहीं है जिसे आप ढूंढ रहे हैं - जब आपकी समस्या की आवश्यकता होती है, तो एक अच्छी ओल 'स्टैक एक्सचेंज सर्च आमतौर पर आपको बताएगी।
- 1. जब मैं बराबर() विधि को ओवरराइड करता हूं तो मुझे हैशकोड() को ओवरराइड क्यों करना चाहिए?
- 2. मुझे गिटिनोरोर का उपयोग क्यों करना चाहिए?
- 3. मुझे @properties का उपयोग क्यों करना चाहिए?
- 4. हर बार जब मैं मॉलोक का उपयोग करता हूं तो मुझे चेतावनी क्यों मिलती है?
- 5. जब मुझे कुछ आइटम चाहिए, तो क्या मुझे इसके बजाय "int id" का उपयोग करना चाहिए?
- 6. जब मैं बंडलर का उपयोग करता हूं तो मुझे आरवीएम की जेम्ससेट सुविधा की परवाह क्यों करनी चाहिए?
- 7. मुझे डोलॉल्स का उपयोग क्यों करना चाहिए?
- 8. मुझे डिस्पैचर का उपयोग क्यों करना चाहिए?
- 9. मुझे एमएक्सएमएल का उपयोग क्यों करना चाहिए?
- 10. मुझे ईएमएफ का उपयोग क्यों करना चाहिए?
- 11. मुझे glbindAttribLocation का उपयोग क्यों करना चाहिए?
- 12. मुझे फ्लेक्स का उपयोग क्यों करना चाहिए?
- 13. जब मैं गिट का उपयोग कर रहा हूं, तो क्या मुझे विलय करने से पहले मुझे रिबेस करना चाहिए?
- 14. जब मैं फ्लोट का उपयोग करता हूं तो जावा मुझे एफ जोड़ने के लिए मजबूर क्यों करता है?
- 15. मुझे बीबीसीओड का उपयोग क्यों करना चाहिए, लेकिन टिप्पणी फॉर्म में एचटीएमएल क्यों नहीं?
- 16. जब मैं Django के लिए अपने डेटाबेस के रूप में PostgreSQL है तो मुझे Redis का उपयोग क्यों करना चाहिए?
- 17. जब मैं वीएस -2010 का उपयोग करता हूं, तो मुझे एक सी ++ प्रोजेक्ट
- 18. मुझे Silverlight ऐप में एमवीवीएम का उपयोग क्यों करना चाहिए?
- 19. मुझे RoleEnvironment.StatusCheck इवेंट की सदस्यता लेने के बजाय लोडबैलेंसरप्रोब का उपयोग क्यों करना चाहिए?
- 20. जब मैं विजुअल स्टूडियो 2010 में टैब करता हूं तो मुझे रिक्त स्थान नहीं चाहिए
- 21. जब (अगर बिल्कुल) मुझे Bitmap.recycle() का उपयोग करना चाहिए?
- 22. जब मैं पैरामीटर को परिभाषित नहीं करता हूं तो मुझे अनंत लूप क्यों मिल रहा है?
- 23. मुझे पीएनजी का उपयोग क्यों करना चाहिए, न कि जेपीजी?
- 24. क्या मुझे HttpRuntime.Cache का उपयोग करना चाहिए?
- 25. जब मैं Process.Start() का उपयोग करता हूं तो मेरा एप्लिकेशन स्टार्टअप समय धीमा क्यों होता है?
- 26. जब कार्य परिणाम बड़े होते हैं तो मुझे सेलरी का उपयोग कैसे करना चाहिए?
- 27. मुझे सदस्य प्रारंभिक सूची का उपयोग क्यों करना चाहिए?
- 28. मुझे पैरामीटर का उपयोग कब करना चाहिए?
- 29. मुझे io_service :: कार्य का उपयोग क्यों करना चाहिए?
- 30. यदि मैं जावा में प्रोग्राम करता हूं तो मुझे क्या ग्रहण डाउनलोड करना चाहिए?