سؤال

ولدي CView التي أود أن استضافة العارض ديريكتشو.

وأنا لم أكتب رمز الأصلي، وأنا ببساطة تنظيف وتحريك الرمز إلى VS2005. هذا استلزم ترقية بعض أدوات الطرف الثالث وذلك أحاول تغيير رمز قليلا دون وجود فهم كامل لDX / ديريكتشو.

والمشكلة هي أن بلدي التطبيق توقف عند تشغيل

hr = gcap.pFg->QueryInterface(IID_IVideoWindow, (void **)&gcap.pVW);
[trimmed some code]
gcap.pVW->put_Owner((OAHWND) m_pDockWnd->GetSafeHwnd());    // We own the window now

وm_pDockWnd هو CView. أستطيع أن أفعل ذلك عندما تكون في وضع المعاينة، ولكن ليس عندما تكون في وضع الالتقاط. في وضع الالتقاط عليه تعليق التطبيق.

إذا كنت لا تملك تجعل النافذة، لا توجد مشكلة (على الرغم من القبض على النافذة يملكها سطح المكتب، والتي لن تعمل بالنسبة لي).

وكما يبين القبض على النافذة مؤشر مشغولا عندما مملوك من قبل سطح المكتب - ربما انها في الواقع لا يعمل بعد ذلك إما، لكنه على الأقل ليس شنقا التطبيق. قبل تعليق يعني أن التطبيق لا يستجيب إلى إدخال المستخدم، ولكن المواضيع خلفية مواصلة تشغيل.

على تحديث : لكنا تستخدم نسخة قديمة من DirectX (أغسطس '06). أنا جمعت / مرتبط مقابل الاشياء ديريكتشو حزم مع SDK فيستا و.... لا الزهر.

هل كانت مفيدة؟

المحلول

ولقد حصلت على قرار لهذا الغرض.

وتيار الفيديو وبدء العمل من دون موضوع مضخة رسالة، وهذا كان يسبب نافذة الفيديو لتصبح غير متجاوبة. (اعتقد كان XP أكثر تسامحا من هذا، وربما نموذج جديد برنامج تشغيل العرض في ويندوز فيستا ملوث عنه.) على أي حال، مرة واحدة فعلت SendMessage إلى إطار التطبيق الرئيسي والتي التقاط الفيديو من هناك، كل شيء يبدو على العمل!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top