• आधुनिक Windows ऐप्स web-based framework पर निर्भरता की वजह से धीमे और भारी हो गए हैं, और पुराने Win32 दौर वाला operating system स्तर का नियंत्रण खो गया है
  • Win32 API में message loop और HRGN object के ज़रिए विंडो का आकार मनचाहे ढंग से तय किया जा सकता था, और non-standard window design आम थे
  • bitmap और layered window तकनीक का इस्तेमाल करके transparency और animation वाली मुक्त आकार की विंडो बनाई जा सकती थीं
  • लेकिन custom windows धीरे-धीरे गायब हो गईं क्योंकि उनमें सारी basic functionality हाथ से implement करनी पड़ती थी, और यूज़र्स की पसंद सरलता की ओर बदल गई
  • फिर भी Win32 आज भी window control और experimentation की आज़ादी देता है, और creative desktop software बनाने की संभावना बनाए रखता है

आधुनिक Windows ऐप्स की एकरसता और Win32 की खोई हुई आज़ादी

  • हाल के Windows desktop apps में ज़्यादातर React, Electron, Tauri जैसे browser wrapper के ऊपर चलते हैं, और धीमे तथा memory ज़्यादा खाने वाले जटिल web-based ढांचे में बदल गए हैं
    • एक साधारण notepad भी 50MB memory लेता है, जबकि शुद्ध Win32 C में लिखी वही functionality वाली app सिर्फ 1.8MB में चल जाती है
    • आधुनिक hardware पर भी Windows 11 boot होते समय memory usage 77% तक पहुंच जाता है
  • पहले जब सीधे Win32 API से programming की जाती थी, तब operating system स्तर का पूरा नियंत्रण हाथ में होता था
    • उस समय rectangular window तक सीमित रहने की ज़रूरत नहीं थी, और non-standard आकार की windows खुलकर बनाई जा सकती थीं
    • Windows XP के दौर में Windows Media Player समेत कई apps का रूप-रंग अलग और अनोखा होता था

अतीत की ‘अजीब आकार’ वाली विंडोज़

  • एक समय Windows apps को पहचान और व्यक्तित्व दिखाने के लिए कई तरह के आकारों में बनाया जाता था
    • media player hardware जैसे दिखते थे, desktop mascot स्क्रीन पर घूमते थे, और utility panel को instrument panel, खिलौने, alien console जैसी शक्ल दी जाती थी
    • विंडो का आकार rectangular होना ज़रूरी नहीं था, और UI का मकसद usability से ज़्यादा personality दिखाना होता था
  • आज ऐसे रूप कम दिखने का कारण यह है कि programmer अब विंडो को सीधे नियंत्रित नहीं करते
    • ज़्यादातर आधुनिक UI frameworks operating system को छिपा देते हैं, और developer सिर्फ सीमित rectangular area के भीतर ही काम करता है

Win32 की message-based संरचना और window control

  • Win32 programming का केंद्र event message loop है
    • GetMessage, TranslateMessage, DispatchMessage से बना loop हर व्यवहार की नींव है
    • “WM_CREATE”, “WM_PAINT”, “WM_SIZE”, “WM_DESTROY” जैसे messages को handle करके विंडो का व्यवहार तय किया जाता है
  • HRGN(Region Object) का उपयोग करके विंडो का आकार मनचाहे ढंग से बदला जा सकता है
    • SetWindowRgn से विंडो को कोई region दिया जाए तो वही हिस्सा वास्तविक विंडो माना जाता है
    • उदाहरण code में CreateEllipticRgn से elliptical window बनाई जाती है, और title bar के बिना drag functionality भी सीधे implement की जाती है
    • “WM_LBUTTONDOWN” के समय “WM_NCLBUTTONDOWN” को “HTCAPTION” के साथ भेजकर विंडो खिसकाने का व्यवहार नकल किया जाता है
  • यानी आकार बनाना आसान है, लेकिन framework जो basic features देता था उन्हें खुद implement करना ही असली चुनौती है

bitmap-आधारित windows और layered window

  • “drivenbyimage/main.c” उदाहरण में bitmap data से विंडो का आकार तय किया जाता है
    • “shape.bmp” लोड करके transparent color (magenta) को छोड़ बाकी pixels को window region बनाया जाता है
    • bitmap एक साथ स्क्रीन पर दिखने वाली image भी होता है और विंडो का वास्तविक आकार भी
    • पहले के skinned apps इसी तरीके से कुत्ता, spaceship, radio, character face जैसी कई आकृतियाँ बनाते थे
  • लेकिन bitmap-based region में किनारे कठोर होते हैं और semi-transparency संभव नहीं होती
    • मुलायम edges या animation के लिए layered window (WS_EX_LAYERED) की ज़रूरत होती है
  • “Animated/” उदाहरण में transparent alpha channel वाली 32-bit image को UpdateLayeredWindow से upload किया जाता है
    • GDI+ से memory bitmap पर sprite sheet draw करके frame बदले जाते हैं, और उसे desktop पर दिखाया जाता है
    • इसमें विंडो का आकार स्थिर नहीं रहता, बल्कि उस पल की pixel state ही विंडो का आकार बन जाती है
    • यह तरीका smooth transparency, frame-by-frame shape change, और natural animation को support करता है

custom windows की कठिनाई और सांस्कृतिक बदलाव

  • Win32 API से custom window बनाते समय हर बारीकी को खुद संभालना पड़ता है
    • drag, resize, close, keyboard input, DPI support जैसी वे सुविधाएँ जो सामान्य विंडो अपने-आप संभालती थी, उन्हें manually implement करना पड़ता है
    • prototype बनाना आसान हो सकता है, लेकिन उसे polished product में बदलने के लिए काफी लागत और मेहनत चाहिए
  • यूज़र्स ऐसे visual experiment की तुलना में stability और simplicity को ज़्यादा पसंद करने लगे
    • non-standard windows का रिश्ता अक्सर adware, toolbar, और बेकार utilities से जुड़ गया, जिससे उनकी छवि नकारात्मक हो गई
    • नतीजतन “अजीब आकार वाली विंडो” को serious software की बजाय खिलंदड़े तत्व की तरह देखा जाने लगा

Win32 की अब भी मौजूद संभावना और महत्व

  • इसके बावजूद Win32 आज भी सीधे नियंत्रण और experimentation की आज़ादी देता है
    • सिर्फ messages, handles, और drawing API के सहारे भी operating system स्तर का window control संभव है
    • ज़्यादातर मामलों में rectangular window व्यावहारिक है, लेकिन यह याद दिलाता है कि यह सिर्फ एक विकल्प है, कोई अनिवार्यता नहीं
  • उदाहरण code GitHub repository WierdApps में उपलब्ध है
    • इसमें elliptical window, bitmap-based window, और animated mascot जैसे तीन sample शामिल हैं
    • Win32 आज भी रचनात्मक और प्रयोगधर्मी desktop software बनाना संभव बनाता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.