windows - मैं कैसे बता सकता हूं कि कोई विंडो फ़ोकस है या नहीं?(Win32 एपीआई)




winapi hwnd (3)

Win32 एपीआई का इस्तेमाल करना (सी में है, लेकिन यह असंगत है) मैं कैसे बता सकता हूं अगर कोई दी गई विंडो (एचडब्ल्यूएनडी द्वारा पहचानी गई) फोकस है? मैं एक घटना के लिए देख रहे एक एप्लिकेशन को हुक कर रहा हूं, और जब वह घटना तब होती है तब मैं यह जानना चाहता हूं कि आवेदन पहले से ही फोकस हो गया है या नहीं। अगर ऐसा नहीं होता है, तो मैं खिड़की को फ्लैश करना चाहता हूं जब तक कि वह इसे ध्यान केंद्रित न करे।

वैकल्पिक रूप से, FlashWindowEx संरचना फ्लैग FLASHW_TIMERNOFG करता है, जब तक कि खिड़की पर फोकस करने पर फोकस सिर्फ फ्लैश नहीं होता है अगर खिड़की पहले से ही फोकस हो रही है? मैं अब यह परीक्षण नहीं कर सकता क्योंकि मैं अपने विकास के वातावरण में नहीं हूं, लेकिन मैं इस धारणा के तहत था कि यह वैसे भी फ्लैश करेगा, जो मैं बचने का प्रयास कर रहा हूं।

संपादित करें: इसके अलावा, यदि यह मामला है, तो एप्लिकेशन इस विंडो में डायरेक्टएक्स का उपयोग करता है।


क्या आप वास्तव में "फोकस" का मतलब है या क्या आपका मतलब है "सक्रिय?"

एक खिड़की पर फ़ोकस होता है - एक जो कुंजीपटल ईवेंट प्राप्त करने के लिए पहले होता है बाहरी विंडो (उपयोगकर्ता को स्क्रीन के चारों ओर खींच सकते हैं) "सक्रिय" है अगर इसके उप-वाहिनियों में से एक फ़ोकस होता है, लेकिन यह स्वतः ही फोकस कर सकता है या हो सकता है।


GetActiveWindow इनपुट फ़ोकस से संबंधित शीर्ष-स्तरीय विंडो वापस करेगा GetFocus विंडो का संचालन वापस करेगा जिसमें इनपुट फ़ोकस होगा।

यह लेख मदद कर सकता है:
http://www.microsoft.com/msj/0397/Win32/Win320397.aspx


GetWorldWindowWindow फ़ंक्शन का उपयोग करें Hwnd प्राप्त करने के लिए कि आप अभी ध्यान केंद्रित कर रहे हैं। उसके बाद आप इसे अपने आवेदन की खिड़की से जांचने के लिए इसकी जांच कर सकते हैं कि इसमें फोकस है या नहीं।





hwnd