मैं एक कंसोल प्रोग्राम लिख रहा हूं जो कुछ ऑडियो डेटा प्रस्तुत करने के लिए डायरेक्टसाउंड एपीआई का उपयोग करता है। DirectSound Programming Guide (from Microsoft) का पालन करते समय मैंने एक उत्सुक समस्या पर ठोकर खाई। documentation के अनुसार:एक कंसोल प्रोग्राम में DirectSound SetCooperativeLevel को HWND कैसे प्रदान करें?
एक युक्ति वस्तु बनाने के बाद, आप IDirectSound8::SetCooperativeLevel विधि का उपयोग कर डिवाइस के लिए सहकारी स्तर सेट करना होगा। जब तक आप ऐसा नहीं करते, तब तक कोई आवाज नहीं सुनाई जाएगी।
समस्या यह है कि मैं एक कंसोल प्रोग्राम लिख रहा हूं, और SetCooperativeLevel
को पहले तर्क के रूप में एक HWND की आवश्यकता है। मेरे पास कंसोल प्रोग्राम में निपटने के लिए कोई एचडब्ल्यूएनडी नहीं है। मैंने एक शून्य सूचक प्रदान करने की कोशिश की लेकिन यह DSERR_INVALIDPARAM
त्रुटि कोड के साथ विफल रहा।
कंसोल प्रोग्राम में IDirectSound8::SetCooperativeLevel
पर एचडब्ल्यूएनडी मूल्य क्या प्रदान किया जाना चाहिए? कार्यक्रम का ऑडियो हिस्सा एक साझा पुस्तकालय के रूप में बनाया जाने की योजना है, इसलिए इसे "बाहरी" कार्यक्रम का कोई ज्ञान नहीं है।
किसी भी सलाह के लिए धन्यवाद!
नोट: मुझे पता है कि एसडीएल, ओपनएएल, एसएफएमएल (ओपनएएल पर आधारित) जैसे ऑडियो को प्रस्तुत करने के लिए कुछ बेहतर समाधान है, लेकिन मेरे वर्तमान प्रोजेक्ट डायरेक्टसाउंड के लिए लागू किया गया है।
संपादित: मैं एक माइक्रोसॉफ्ट इंजीनियर है कि जब GLOBAL_FOCUS बफ़र्स बनाने SetCooperativeLevel
के लिए एक HWND के रूप में डेस्कटॉप खिड़की या कंसोल विंडो का उपयोग कर के बारे में संदेह को हटा से एक message पाया।
जैसा कि आपने कहा था, इनपुट फ़ोकस ऑडियो को प्रस्तुत करते समय हस्तक्षेप नहीं करना चाहिए। मैंने निर्दोष रूप से 'GetDesktopWindow()' को 'SetCooperativeLevel'' द्वारा लौटाए गए HWND को प्रदान करने का परीक्षण किया, और ऐसा लगता है कि यह काम करता है। हालांकि, मुझे नहीं पता कि छुपा खिड़की हैंडल का उपयोग करने की तुलना में इसमें कोई कमी है ... – overcoder
एक एचडब्ल्यूएनडी पास करना जिसे आप नियंत्रित नहीं करते हैं, एक बहुत बुरा विचार लगता है। यह उन चीजों में से एक है जो संभवतः ठीक काम करेंगे - जब तक आपका कोड दैनिक wtf या "पुरानी नई चीज़" पर विच्छेदन नहीं हो जाता है। – snemarch
@overcoder, मैं इस बारे में चिंतित हूं कि क्या होता है यदि कोई अन्य प्रोग्राम एक ही काम करने का फैसला करता है ... – bdonlan