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




winapi hwnd (4)

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

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

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

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

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


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


जीकेओगर्स के अलावा GetActiveWindow का उपयोग करते हुए, आप उस विंडो के लिए एक बूलियन वैरिएबल भी बनाए रख सकते हैं जिसे आप जानना चाहते हैं अगर उसे ध्यान केंद्रित किया गया है या नहीं WM_SETFOCUS और WM_KILLFOCUS ईवेंट, या WM_ACTIVATE

WndProc() ..
case WM_SETFOCUS:
  puts( "Got the focus" ) ;
  break ;

case WM_KILLFOCUS:
  puts( "Lost the focus" ) ;
  break;

case WM_ACTIVATE:
  if( LOWORD(wparam) == WA_ACTIVE )
    puts( "MEGAZORD ACTIVATED kew kew kew (flashy-eyes)" ) ;
  else 
    puts( "I AM NOW INACTIVE." ) ;
  break ;

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

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







hwnd