में संदेश पंप के लिए अपने स्वयं के डब्ल्यूएम संदेश को परिभाषित करें मैं अपने स्वयं के डब्ल्यूएम (जैसे WM_CLOSE, आदि) संदेश को कैसे परिभाषित करता हूं जिसे संदेश + पंप में संदेश पंप द्वारा नियंत्रित किया जा सकता है?सी ++
यदि यह भी संभव है।
में संदेश पंप के लिए अपने स्वयं के डब्ल्यूएम संदेश को परिभाषित करें मैं अपने स्वयं के डब्ल्यूएम (जैसे WM_CLOSE, आदि) संदेश को कैसे परिभाषित करता हूं जिसे संदेश + पंप में संदेश पंप द्वारा नियंत्रित किया जा सकता है?सी ++
यदि यह भी संभव है।
हाँ आप बस WM_USER से एक निरंतर अधिक से अधिक के रूप में अपने संदेशों को परिभाषित कर सकते हैं:
#define WM_MY_MESSAGE (WM_USER + 1000)
तो फिर तुम सामान्य ON_COMMAND/ON_NOTIFY मैक्रो का उपयोग कर सकते हैं।
उपयोगकर्ता परिभाषित संदेशों के साथ समस्या यह है कि अन्य प्रोग्राम आपके समान स्थिरता का उपयोग कर सकते हैं। और आपको गलत चीज़ के लिए किसी और से संदेश मिल सकता है।
इस समस्या को दूर करने के लिए आप RegisterWindowMessage के साथ पंजीकृत संदेशों का उपयोग करेंगे।
यहां user defined messages/registered messages पर एक अच्छा रंडाउन है।
आप नए अद्वितीय संदेश बनाने के लिए "RegisterWindowMessage" का उपयोग कर सकते हैं।
एमएसडीएन से: "रजिस्टरविंडो मैसेज फ़ंक्शन एक नए विंडो संदेश को परिभाषित करता है जो पूरे सिस्टम में अद्वितीय होने की गारंटी देता है। संदेशों को भेजने या पोस्ट करते समय संदेश मान का उपयोग किया जा सकता है।"
यह इस बात पर निर्भर करता है कि आप किस संदेश का उपयोग कर रहे हैं। This link Win32 संदेशों के लिए "पता स्थान" का एक खंड दिखाता है।
WM_USER
सामान्य मामले में सही समाधान नहीं है। WM_USER
संदेश "किसी निजी विंडो क्लास के भीतर संदेश भेजने के लिए किसी एप्लिकेशन द्वारा परिभाषित और उपयोग किया जा सकता है। इन मानों का उपयोग किसी संदेश में सार्थक संदेशों को परिभाषित करने के लिए नहीं किया जा सकता है, क्योंकि कुछ पूर्वनिर्धारित विंडो कक्षाएं पहले से ही में मान परिभाषित करती हैं।"
आप WM_APP
रेंज में एक संदेश आईडी असाइन करने से बेहतर हैं।
RegisterWindowMessage
उपयोगी है अगर आप सिस्टम को रनटाइम पर एक संदेश आईडी असाइन करना चाहते हैं। "सभी अनुप्रयोग जो एक ही स्ट्रिंग को पंजीकृत करते हैं, संदेशों को एक्सचेंज करने के लिए संबंधित संदेश संख्या का उपयोग कर सकते हैं," ताकि आप RegisterWindowMessage
का उपयोग कर सकें जब आपको सरल इंटर-प्रोसेस संचार के लिए कस्टम संदेश का उपयोग करने की आवश्यकता हो।
ध्यान दें कि अन्य प्रोग्राम आपको 'WM_USER-0x7FFF' रेंज के साथ संदेश भेजने वाले नहीं हैं। बिल्ली, उन्हें एक प्रोग्राम भी _within_ भेजा जाना चाहिए। इसके लिए आपके पास 'WM_APP-0xBFFF रेंज' है। WM_USER एक विंडो वर्ग के लिए आंतरिक है, न कि एक प्रोग्राम। – MSalters