
         


 ⠢ ObjectWindows
   ।⠢ ᮡ 㪮⢠  ObjectWindows
ॡ  ணࠬ  ⭮ ᯥ祭
⠭ ObjectWindows
  ᯮ짮 INSTALL
 README  ObjectWindows
  ObjectWindows
    Windows
    
襭, ᯮ㥬   
  襭    ObjectWindows
 易  ମ Borland
   ⠢塞 
    Borland

 I.   ObjectWindows

 1. ᫥ 
 ⠪ ਪ ணࠬ  Windows
  ⮨⢠ Windows
  ॡ
ꥪ⭮-ਥ஢ ணࠬ஢  Windows
  訩 䥩  Windows
     ନ஢  ଠ樨
     ࠣ஢ 㭪権 Windows
     ⮬᪨ ⢥  ᮮ饭
 Windows ணࠬ
   Windows
  ⢨  Windows   
"Hello, Windows" ("ࠢ Windows")
     ࠪ⨪ ᪠ ਪ ணࠬ
     ࠪ⨪  
   ᮧ ਪ ணࠬ

 2.   Windows
 ਪ ணࠬ ObjectWindows: ।⥫ 㦤
  ⥪ ⥩ ᮢ
  ⠫
   室 ⥪
     ணࠬ ObjectWindows, ᯮ騥 DLL
      䠩 ᮢ
 ਪ ணࠬ ObjectWindows: ᯥ䨪
  ᯮ짮   ᮧ ਫ ObjectWindows
  ᯮ짮 ⨫  ப  ᮧ ਪ ணࠬ
  ObjectWindows
 1:  Windows ணࠬ
  ॡ ਪ ணࠬ
     ।  ਪ ணࠬ
 2:   
   ⠪  ꥪ ?
     ਯ
     ⥫᪨  ୨ 
   ꥪ  .
  ⢥  ᮮ饭
  襭 ࠡ ਪ ணࠬ

 3. 뢮 ଠ樨  
 ⠪ ⥪ 뢮 ?
 3 : 뢮   ⥪⮢ ଠ樨
   ᮮ饭
  ⪠ ࠭
 4 : ᮢ   
   ६饭
    ᮮ饭 ६饭
 5 :  ⮫騭 
  롮  ࠭
      ࠭
    
 6 : 뢮 ᪮ ଠ樨
   ᮢ
  ࠭ 䨪  ꥪ
  ᮢ ࠭ ᪮ ଠ樨

 4.  
 
 7 :    
墠 ᮮ饭 
⢥  ᮮ饭 

 5. প 
 8 :  ᯫ뢠饣 
   ᯫ뢠饣 
  㭪 MakeWindow
  
    
  樠  
 9 : ࠭ ᪮ ଠ樨  䠩
  ᫥ 
  ⨥  ࠭ 䠩

 6. ᯫ뢠騥 
 10 : 뢮 ᯫ뢠饣  
ᯮ짮 㫥  ObjectWindows
  䨪  ணࠬ
   
 ࠢ ⮢  
   ⠪ ࠢ騥 
   ࠢ ⮢ 
  ࠫ騥 ꥪ   
  ࣠ ࠡ ࠢ ⮢
    ᮡ ࠢ ⮢

 2.  ObjectWindows

 7.  ObjectWindows
襭 ObjectWindows
 ObjectWindows
  Object
  TModule
  TApplication
  䥩 ꥪ
     TWindowsObject
   ꥪ
     TWindow
     TEditWindow
     TFileWindow
   ꥪ
     TDialog
     TFileDialog
     TInputDialog
  ࠢ騥 ꥪ
     TControl
     TButton
     TCheckBox
     TRadioButton
     TListBox
     TComboBox
     TGroupBox
     TStatic
     TEdit
     TScrollBar
  ꥪ MDI
     TMDIFrame
     TMDIClient
  ப稢騥 ꥪ
㭪樨 Windows API.
  ObjectWindows 뢠 㭪樨 Windows
    㭪 Windows
  ஢ ⨫ ⠭
   㭪権 Windows
     䥩 㭪樨 ࠢ 
     㭪樨 䥩  ᪨ ன⢠ (GDI)
     㭪樨 䥩  ⥬묨 ।⢠
  㭪樨   맮
     㭪樨 
        ᯮ짮 ⥫㠫  맮
饭 Windows
  ࠬ ᮮ饭 Windows
   ᮮ饭 Windows
     饭 ࠢ 
     樠樮 ᮮ饭
     饭 
     ⥬ ᮮ饭
     饭  ଠ樮  (Clipboard)
     饭  ⥬ ଠ樨
     饭 㫨஢ ࠢ騬 ⠬
     饭 㢥 ࠢ ⮢
     騥 ᮮ饭  ப⪨
     饭    짮⥫
     饭 ⨤㬥⠫쭮 䥩
  ࠡ⪠ ᮮ饭  㬮砭
  뫪 ᮮ饭
   ᮮ饭
  饭, ।塞 짮⥫

 8. ꥪ ਪ ணࠬ  
⮪ ਪ ணࠬ
樠 ਫ
  樠  
  樠   ਪ ணࠬ
  樠 ࢮ  ਪ ணࠬ
 ਪ ணࠬ
⨥ ਪ ணࠬ

 9. 䥩 ꥪ
TWindowsObject
祬 䥩 ꥪ ?
⭮襭 த⥫-  
  ᪨ ୨ 
    ୨ 
ࠡ⪠ ᮮ饭
  ⢥  ᮮ饭
   ᮮ饭  ᮮ饭 ୨ 
     ࠡ⪠  ᮮ饭
     ࠡ⪠ ᮮ饭 ୨ 
  ࠡ⪠ ᮮ饭  㬮砭

 10.  ꥪ
 Windows
樠  ᮧ  ꥪ⮢
  樠  ꥪ⮢
    ⮢
  饭 ଠ樨  ᮧ  樠樨
  
  ਡ ॣ樨
      ⨫ 
      
      
      梥 䮭
        㬮砭
ப稢 
  ਡ ப⪨
  ࣠樨 ப⪨  
  ਬ  ப⪮
  -ப⪠  ᫥ ⮯
  䨪  ப⪨  
  䨪  ப⪨
  ⠭ ࠧ ࠭
  ⨬ 㭪権- Paint  ࣠樨 ப⪨
 ।஢   ࠡ  䠩
   ।஢
   ࠡ  䠩

 11.  ꥪ
ᯮ짮 ᮢ 
ᯮ짮 ୥  ꥪ
  ஢  樠 ୨  ꥪ⮢
    믮 
        
  ⨥ ୥ 
  ᯮ짮    
     ।  Windows  襣 쭮 
    ࠢ騬 ⠬  ࠡ⪠ ᮮ饭
       ࠢ騬 ⠬ 
     ⢥  ᮮ饭 㢥 ࠢ ⮢
     ਬ 裡 /ࠢ騩 
  ᫮ ਬ ᯮ짮 
 
 

 12 ꥪ ࠢ
ᯮ짮 ꥪ⮢ ࠢ
  ஢  ᮧ ꥪ⮢ ࠢ
  ⮦  㤠 ࠢ ⮢
  ࠢ騥   ࠡ⪠ ᮮ饭
     㫨஢ ࠢ騬 ⠬ 
       ।०騥 ᮮ饭 ࠢ ⮢
 ࠢ  
ࠢ騥   ᯨ᪮
  ஢  ᮧ  ᯨ᪮
  䨪  ᯨ᪮
     ᯨ᪮
  祭 롮஢   ᯨ᪠
 ࠢ騥 
  ஢  ࠢ ⮢
     ࠢ騬 ⠬
  䨪  ࠢ ⮢
  ਬ: ਫ StatTest
ࠢ騥   
    ᮮ饭 
 ஢ન  ᥫ⨢ 
  ஢  ஢ન  ᥫ⨢ 
   ﭨ ᥫ⨢ 
  䨪 ﭨ ᥫ⨢ 
    ᮮ饭  ஢ન  ᥫ⨢ 
 㯯
  ஢  㯯
    ᮮ饭  㯯
  ਬ ணࠬ: BtnTest
 ப⪨
  ஢ ꥪ⮢  ப⪨
    ப⪨
  䨪  ப⪨
    ᮡ  ப⪨
  ਬ: SBarTest
㥬 ࠢ騥 
  ஢ ।㥬 ࠢ ⮢
   ଠ樮   樨 ।஢
    ।㥬 ࠢ騬 ⠬
  䨪 ।㥬 ࠢ ⮢
      ⥪
     ⠢ ⥪
     ਭ㤨⥫ 롮  ப⪠ ⥪
  ਬ ணࠬ: EditTest
஢ 
   ࠧ ஢ 
      ஢ 
     믠騥 ஢ 
     믠騥 ᯨ᪮ ஢ 
     롮 ⨯ ஢ 
  ஢ ஢ 
  䨪 ஢ 
  ਬ ਫ: CBoxTest
।  ࠢ ⮢
  ।  ।
  ஢ ࠢ ⮢  ࠧ襭 ।
  । 
  䨪 ।  ࠢ ⮢
  ਬ ।

 13. ஢ ꥪ ࠢ
䨪 ।। ࠢ ⮢
  䨪 ⨫ ᮧ
      ᤥ ।। ࠢ騩  㥬
  䨪 ।। ॠ権  ᮮ饭
      ⥫쭮 ࠡ⪨  ।। ࠢ饣
     
     室 ॠ樨 ।। ࠢ饣 
ᯮ짮 ஢ ࠢ饣 
  ࠡ⪠ ஢ ࠢ饣 
     ᠭ ஢ ࠢ饣 

 14. ꥪ MDI
 ਫ MDI
    MDI  ꥪ⮬
஢  MDI
  ஢  ࠬ MDI
  ஢ ୨  MDI
ࠡ⪠ ᮮ饭  ਫ MDI
ࠢ ୨  MDI
  ⨢ ୨ 
   ୨ 
ਬ ਫ MDI

 15. ꥪ,   ᯮ짮  ⮪
⥪ iostream
ॣ㦥  <<  >>
, 騥  ⢮  ⮪,  TStreamable
 ⮪
 ᮢ,   ⢮  ⮪
 ᮢ,   ⢮  ⮪
ᯮ짮  ⮪
  ⠭ 痢  ணࠬ  ⮪
   ⮪ ꥪ
  ᯮ짮 ⮪ ꥪ
㯭  ⮪
  ਤ ᨢ  ⢮  ⮪
  ந⥫쭠 㭪 , 饣  ⢮ 
  ⮪
  㭪- streamableName
  㭪-⥫,   ࠡ  ⮪

 3.   WINDOWS

 16. ࠢ 
ᯮ짮  
 Windows ࠢ 
  ਯ  
     ᮡ ॠ쭮 ०
     ᮡ 饭 ०
쭠  쭠 
ᯮ짮 쭮  ᪨ ।塞 
  饭    쭮 
  ᢮  뢠  쭮 
  ࠧ饭  䨪  쭮 
     쭮 
  砭  ணࠬ஢
ᯮ짮 쭮  ᪨ ।塞 
  饭    쭮 
  㣨 ᯮᮡ ஢  쭮 
  ᢮  뢠  쭮 
  ࠧ饭  䨪  쭮 
     쭮 
   쭮 뢠
  祭 ।०  筮 
  砭  ணࠬ஢

 17. ⢨ ᮢ
 ଠ樮  Windows
  ଠ  ଠ樮 
  饭    ଠ樮 
  祭    ଠ樮 
  প ८ࠧ
 ᮮ饭ﬨ  ᠬ
᪨  묨
  ନ
  ⠭ 
  ४饭 
  㭪樨-  묨
     
  ⨩ ८ࠧ 
    ࢥ   祭 
  믮  ᮢ  ࢥ
  ⥬ ⥬

 18.   GDI
⥪ ।⠢
  ࠢ ⥪⮬ ।⠢
   室  ⥪ ।⠢?
     ⮢ 䨪
     
      ⮡ࠦ
      祭
     ।⢠ ᮢ
।⢠ ᮢ
  騥 ।⢠
  ᪨ ।⢠
     ᪨ ࠭
     ᪨ 
     ᪨ 
।⠢ 䨪  
  ᮢ  
     ࠢ ⥪⮬ ।⠢
     맮  ᪨ 㭪権
  ᮢ 
  ⥣ 䨪
  ᯮ짮 । ᮢ
㭪樨 ᮢ GDI
  ᮢ ⥪
  ᮢ 
     Move To  LineTo
     Polyline
     Arc
  ᮢ 
     Rectangle
     RoundRect
     Ellipse
     Pie  Chord
     Polygon
ᯮ짮 
  ⠭ 
  ᮢ   
    ࠬ
  䨪 
     

 19.   ஡
 ᮢ
 ᮢ  믮塞 䠩
ᯮ짮  ᮢ
   ᠭ  ᮢ
    ࠡ  ஬ ᮢ
㧪 ᮢ  ਫ
  㧪 
  㧪 ⠡ ᥫ஢
  㧪  
  㧪 ஢  ⮣ࠬ
  㧪 ᮢ ப
  㧪 ⮢ ⮡ࠦ
  ᯮ짮 ⮢ ⮡ࠦ  ᮧ 
  ।⠢ ⮢ ⮡ࠦ  

 20. ⠭ 㪮騥 ਭ樯 ࠧࠡ⪨ ਫ
ਭ樯 ࠧࠡ⪨
  ।⠢ ॠ樨,  짮⥫
   짮⥫ ࠢ 室 ᮡ⨩
⠭ 譨   ० ࠡ
  饥 ।⠢
  ⢨     
  
   
  㣨 ᮣ襭 ࠧࠡ⪨
ᠭ  ணࠬ
   樨
      ᭮
     㣨 訡  ᮧ 
  ஢ઠ ॡ⥫ 

         

 2.1 ⠫ INCLUDE  㬮砭
 2.2 ⥪    
 2.3 DLL  ⥪ 
 2.4  ObjectWindows,  ॡ 䠩 ᮢ
 3.1   砥 ᮮ饭 "".
 3.2 饭, ᯮ㥬   4.
 7.1  ᮮ饭 Windows
 10.1   TWindowAttr.
 10.2 ਡ ॣ樨 
 10.3  ⠭    ।஢
 10.4 㭪樨-  ࠡ  䠩  䨪
             
 12.1 ࠢ騥  Windows, ন ObjectWindows
 12.2 ।०騥 ᮮ饭  ᯨ᪮
 12.3 騥 ⨫ ।㥬 ࠢ ⮢
 12.4 䨪   뢠  㭪樨-
 12.5 㭪樨-, ।塞 TScrollBar
 12.6   TListBoxData
 12.7   TComboBoxData
 14.1 ⠭ ⢨,   㭪樨- MDI
 17.1 ଠ  ଠ樮 
 18.1 騥 ।⢠ ᮢ
 18.2  RGB-祭 梥⮢
 18.3 ⠭ 蠣  ᥬ⢠ 
 19.1 ࠬ  ப  ᮢ
 20.1 祭 訡 ᮧ 

         

㭮 1.1 ࠭  ਫ Windows
㭮 1.2  ਫ Windows   Windows  
㭮 2.1  ਫ ObjectWindows.
㭮 2.2  ࢮ  襣 ਫ ObjectWindows
㭮 2.3  ਪ ணࠬ ⢥砥  ᮡ⨥
㭮 2.4  ਫ  ८। ॠ樥  襭
            ࠡ
㭮 3.1 뢮 न 窨 宦 㪠⥫ ""  
              .
㭮 3.2  ⮫騭 .
㭮 4.1 ਪ ணࠬ  ᮬ .
㭮 4.2 ਪ ணࠬ  ⥬ 
㭮 5.1 㯯 易 த⥫᪨  ୨ 
㭮 5.2 ਪ ணࠬ   䠩 .
㭮 6.1 ⥬  ᮧ  ਪ ணࠬ
㭮 7.1  ᮢ ObjectWindows
㭮 8.1 㭪- ⢫ 맮, ࣠ ⮪
            ਪ ணࠬ
㭮 8.2  
㭮 8.3 ᫥⥫쭠 樠 ஢ ਫ
㭮 10.1 ਡ 
㭮 10.2 ணࠬ, ᯮ  IBeamWindow.
㭮 10.3  ।஢
㭮 11.1 ਪ ணࠬ  
㭮 11.2 , ஢騩 ⨬  짮⥫
㭮 11.3  
㭮 11.4  
㭮 12.1   ࠢ騥 
㭮 12.2   ᯨ᪠
㭮 12.3   롮 짮⥫   ᯨ᪠
㭮 12.4  ⨯ ஢    ᯨ᪠
㭮 12.5 믠騩 ᯨ᪮ ஢ 
㭮 12.6  ࠢ騥 
㭮 12.7   ।㥬묨 ࠢ騬 ⠬
㭮 12.8 㥬 ࠢ騩  ᮧ  ࠬ
㭮 12.9   ࠧ묨 
㭮 12.10 ࠢ騩   ப⪨
㭮 12.11   ࠧ묨  ப⪨
㭮 14.1  ਬ ਫ MDI
㭮 15.1  ᮢ,   ⢮  ⮪ 
             ᯮ  ObjectWindows
㭮 16.1 ਬ 㯫⭥
㭮 18.1 ⨫   । ࠭
㭮 18.2 ⨫ 客  । 
㭮 18.3  ࠡ 㭪樨 TextOut
㭮 18.4  ࠡ 㭪樨 LineTo
㭮 18.5  ࠡ 㭪樨 Polyline
㭮 18.6  ࠡ 㭪樨 Arc
㭮 18.7  ࠡ 㭪樨 Rectangle
㭮 18.8  ࠡ 㭪樨 RoundRect
㭮 18.9  ࠡ 㭪樨 Ellipse
㭮 18.10  ࠡ 㭪樨 Pie
㭮 18.11  ࠡ 㭪樨 Chord
㭮 18.12  ࠡ 㭪樨 Polygon
㭮 19.1   ᪠, 騩  ᯫ
㭮 19.2  ⮢ ⮡ࠦ  ᮧ   蠡,
               . 19.1
㭮 19.3 , ᯮ饥 ⮢ ⮡ࠦ  ⢥  
             ᢮ 㭪⮢
㭮 20.1 ⠭⭠   CUA
㭮 20.2 㭪  , ४ CUA
㭮 20.3 㭪  ஢, ४ CUA
㭮 20.4 㭪  ᬮ, ४ CUA
㭮 20.5 㭪  樨, ४ CUA
㭮 20.6 㭪  ᪠, ४ CUA




    

    ObjectWindows ᯥ稢 ᮢ襭   ᯮᮡ
ᮧ ਪ ணࠬ  Microsoft Windows.  ᫥ ६
ணࠬ஢  । Windows ॡ  Microsoft C 
讣 ᫠ ⤥,  筮 ᫮, ਪ ⨫. 
१ 祣, ᮧ ணࠬ  Windows 﫮 ⭮⥫쭮
, ᫮  ய⫨ .   ਪ
ணࠬ த ObjectWindows ணࠬ஢  Windows ⠫
   ⨥.
    ணࠬ஢  Windows ॡ     
⮭⥩,  , ,     뫨 㬠  ⮣.
ਬ, 㫨஢  ⥪⮬  䨪    ࠧ
, ⢨  㣨 ணࠬ  筮 । 
㫨஢  祬 600 㭪ﬨ  䥩 ணࠬ஢
ਫ Windows (Windows Application Programming Interface API).
,    ᥣ ⮣  ⮫쪮 ᭨, 
᭮   ணࠬ    ⮣, ⮡ 㭪樮஢
 ਪ ணࠬ Windows  ⥬ 㡥,   ॠ 
 .
    ObjectWindows    믮.  ꥪ⭮ ਥ஢
⥪ ᮢ,  ନ 堭 ( ஢ ਪ
ணࠬ   ஢ ), ॠ㥬 묨 ਪ묨 ணࠬ
Windows. ObjectWindows 頥 ᮧ ணࠬ  Windows -
    - ᮣ饣, ⨢  饭 䥩  Windows;
    - ᯥ祭 堭 ࠢ   ࠡ⪨ ᮮ饭;
    -    ⮢  ஢ ਪ
ணࠬ  Windows.
     ⮬᪨ 砥   㭪樮 ,
   । ᭮ ᨫ  ᯥ᪨
ॡ 襩 ਪ ணࠬ.
    ObjectWindows  ।⠢   뢠饣 ନ஢
 ᪨ ⮢ ਪ ணࠬ  Windows. , ।⢮
䨪樨   ObjectWindows ᮢ,  ⢥ ᮪
६ ᮧ 襩 ਪ ணࠬ  ᯥ 祭 ࠧ
 ⭮ .

          ⠢ ObjectWindows

     ⠢ ObjectWindows ⮨   ᪥  
㪮:
    - ObjectWindows  ++. 㪮⢮ ணࠬ ( 㪮⢮).
    - ObjectWindows  ++. ࠢ筮 㪮⢮.
     ᪠   室 ணࠬ ObjectWindows  砫
ᠭ ਫ  Windows  ᯮ짮 ꥪ⭮-ਥ஢
室 ObjectWindows.   ᮤঠ   ਬ ணࠬ, 
  뫪   ObjectWindows  ++ 㪮⢮
ணࠬ,  ⠪ 㣨  ணࠬ,    
 ᯮ짮  쭥襬.  ᪠ ᮤঠ  䠩  (Help):
    - OWLWHELP.HLP  ⥬  Windows Help.
    - OWLTHELP.OWH  ᪮ THELP.

          ।⠢ ᮡ 㪮⢠  ObjectWindows

      ObjectWindows ᯮ   孨᪨ ⮤, 
 㪮⢮ ணࠬ 砥  ᥡ 讥 ⢮
᭨⥫쭮 ਠ.  ⮨   ⥩:
    -  1, ⢮  ObjectWindows, 뢠 ਭ樯 ᠭ
ਪ ணࠬ  Windows.  ।⠢ ᮡ 祡,
᫥騩   ᠭ  ७ ⥩ ਫ
ObjectWindows.
    -  2, ᯮ짮 ObjectWindows, 饭  ᭮
⠫쭮 ᠭ ⮢ ᠬ ObjectWindows.  砥  ᥡ
 娨 ᮢ    ⢮  । Windows.
    -  3, ணࠬ஢  Windows,  ᠭ ᯥ⮢
ணࠬ஢  Windows,  ObjectWindows  ন, ⠪
, 䨪,   ᠬ, ᯮ짮 ᮢ, ࠢ
, ࠧ     ࠢ騥 ப  Windows.
     "ObjectWindows  ++ ࠢ筮 㪮⢮"   ࠢ
ਠ  ᠬ ObjectWindows, ⨯ ObjectWindows, ⠭⠬
ObjectWindows, 㭪 Windows, ⨯ Windows ⠭⠬ Windows. 
ਠ ਢ  䠢⭮ 浪   㤮⢠ 짮 
.

         ॡ  ணࠬ  ⭮ ᯥ祭

      ObjectWindows  ᪨ 㬥⠫ ।⢮
 ᮧ ਪ ணࠬ  Windows,  ᭮ ॡ 
⭮ ᯥ祭  ਪ ணࠬ ObjectWindows ᮢ 
묨 ॡﬨ  Windows:
    - ⪨ ;
    - 2    ⨢ ;
    - ᮢ⨬  Windows ᪨ ᯫ;
    - Windows 3.0    ⠭⭮  ७ ० 
386.
      ஢ ਫ ObjectWindows ( 室 
ᠬ ObjectWindows)     Borland C++, 
ᮧ ணࠬ  Windows.

         ⠭ ObjectWindows

    ObjectWindows ⠢  ணࠬ ⮬᪮ ⠭
INSTALL.    ࠭ 䠩  ਡ⨢ ᪥ 
ᯮ㥬 孮  ᦠ,   易⥫쭮  ᯮ짮 
ணࠬ;     ᪮஢ 䠩 ObjectWindows  ᪥ 
 ⪨ . ணࠬ INSTALL ⮬᪨   ந
 䠩 ObjectWindows.  ⠭筮 ᪥  䠩
FILELIST.DOC  ࠢ ਢ ᯨ᪨  ਡ⨢ 䠩.
     砫 ⠫樨 ᤥ  ࠡ稥   
ਡ⨢ ᪮,   ਣ ᪨  ᭮ .
     ६  祭 ᮣ襭, 砥   ⠢
ObjectWindows,  諨   ॣ樮 ; 
࠭  祭 ଠ樨     
ObjectWindows.

    ᯮ짮 INSTALL

    ணࠬ INSTALL ᮧ ⠫  ࠭ 䠩 ObjectWindows 
६頥  䠩  ਡ⨢ ᪮   ⪨ .  
 室  ਢ .
     ⠭ ObjectWindows:
    1. ⠭ ⠫樮  ( 1)  ᪮ . 
᫥     (Enter):
     A:INSTALL
    2.   (Enter)   ⠭筮 ࠭.
    3.  뤠 ਣ襭.

          README  ObjectWindows

     README ᮤন ᫥ ଠ,     
祭  ਫ 㪮⢠.
     祭 㯠  䠩 README ᤥ ᫥饥:
    1. ⠭ ⠫樮  ObjectWindows  ᪮ . ᫨ 
㦥 ⠭ ObjectWindows,  ३  㭪 3.
    2.  :    (Enter).
    3.  README    (Enter).    ணࠬ
ᬮ 䠩, ᯮ  ࠢ ஬ ५  
५   ६饭  䠩.
    4.  Esc  室.

           ObjectWindows

     ⠢  䠩   ObjectWindows: OWLWHELP.HLP 
OWLTHELP.OWH. OWLWHELP.HLP ᯥ稢   Windows,  OWLTHELP.OWH
।⠢   । . ଠ   䠩 
 筮,  ᪫祭 ଠ ࠭.

      Windows

    OWLWHELP.HLP  䠩   ਪ ணࠬ  
Windows WINHELP.EXE.    ᮧ   Program
Manager  ᫥騬 ⥫ﬨ:
    - Description: ObjectWindows Help
    - Command line: WINHELP.EXE C:\BORLANDC\OWL\OWLWHELP.HLP
     ⨥  ""  ⮩  ⮬᪨ 㦠
䠩 OWLWHELP.HLP  ࠢ WINHELP.EXE. ᫨  ⠭
ObjectWindows   ⠫  㬮砭,   室  
⠫,  ஬ 室 䠩 OWLWHELP.HLP.

      

    ணࠬ THELP ।⠢ ᮡ १ ⨫, ᯥ稢
    ObjectWindows  ६ 믮 ਪ ணࠬ 
. ਬ,    ᢮ ਪ ணࠬ ObjectWindows 
⥣஢ । Borland C++   㧨 THELP   
 ࠡ  ਪ ணࠬ  㤥 㯭  
ObjectWindows.
    㧪 THELP ⢫   ப  ⥬ 
:
    THELP /FC:\BORLANDCOWL\OWLHELP.OWH
      㦠 THELP   䠩 OWLTHELP.OWH,  䠩 
ᯮ짮  Turbo Help.  맮 THELP ᫥  㧪, 
 5   ஢ . THELP ⨢  ⠥
    ᫮,  ஥ (  ண) ⠭
. ᫨  室 ᫮,  ᢥ稢 ࠭ ,
ᮮ⢥騩 ⮬ ⮯;  ⨢ 砥,   
 롮 㦭  ⮯.
    !!!    "稥" ,   㬮砭; ᬮ
䠩  THELP.DOC.
     ਢ ⪠ ࠢ   THELP:
-------------------------------------------------------------------
    ⢨
-------------------------------------------------------------------
 Tab       ६饭   ᫥饬 祢 ᫮
 Shift+Tab ६饭   ।饬 祢 ᫮
 Home      ३  砫 ப
 End       ३   ப
 Enter         ᢥ祭 祢 ᫮
            ⥪饬 ࠭ 
 Esc         THELP
 F1        뢥  
 Alt+F1    뢥  ⭮ 浪 ᫥ 20 ࠭ ,
             㦥 ᬠਢ
 Ctrl+F1   뤠 ࠭   "稬" 蠬 THELP
 Ctrl+P     ⥪ ਬ  ਪ ணࠬ
-------------------------------------------------------------------
       樨 THELP ⥬  ࠧ ࠬ஢ 
 ப.  ஡  楤 ᠭ  䠩 THELP.DOC.

         襭, ᯮ㥬   

       , ᯮ㥬   㪮⢥, 뫨 ᮧ 
 Borland's Sprint: The Professional Word Processor  ୮
ਭ PostScript.
      -   ᯮ  ।⠢ ⥪,
   ࠭   ணࠬ.  ⠪ ᯮ 
㪠  ,      .
      -   㪢 ᯮ  
⠭ (ਬ, WM_MOUSEMOVE).
      - 쪨  㪢 ᯮ  
䠩  ⠫ (ਬ, STEP1.CPP).
    [] -  ᪮  ⥪   ப  㪠뢠 
易⥫ ,    襩 ⥬.  ⠪
⨯    ᫮.
     (Bold) - १ࢨ஢ ᫮ ++,  㭪権, ᮢ 
   ⥪ (   ਬ ணࠬ) 뤥 
⮬.   ᯮ   権 ⨫  ப (⠪
 -W).
    ⠫ (Italic) -  ⠫ 㪠뢠  ⨨ ,
   ⥪. 䨪    ᥡ 
६    .  ⨯ ᯮ   뤥
। ᫮, ਬ  ନ.
    뤥 ⠫ (Keycaps) -   㪠뢠   襩
.  筮 뤥 ।    ,
   ; ਬ, " Shift+Ins  ⠢ 
  Clipboard".
      㪠뢠騬 楬 -   ᯮ  뤥
 ଠ樨 ,    易⥫쭮   .
    ਬ砭 ॢ稪 !!!
     ⮩   㤥 ᯮ짮 ᫮ " !!!".
    ਬ砭 ॢ稪 !!!
     㤥 뤥 ६ ᪫⥫묨  (!!!) 砭,
뭥ᥭ   .

    襭    ObjectWindows

         娨 ObjectWindows  ,
稭騥  㪢  (ਬ TWindow).    ᮢ  
ObjectWindows ⠪  । ᫥騥 易 ⨯:
    - Pclass, ⨯ 㪠⥫   class. (ਬ, PTWindow
।  㪠⥫  Window).
    - Rclass, ⨯ 뫪   class. (ਬ, RTWindow ।
 뫪  TWindow).
    - Rclass, 뫪  㪠⥫   class. (ਬ, RTWindow
।  뫪  㪠⥫  TWindow).
    - class, ⨯ 㪠⥫  ⠭ const a class. (ਬ,
PCTWindow ।  㪠⥫  const TWindow).
    - RClass, ⨯ 뫪  ⠭ const a class. (ਬ,
RCTWindow ।  뫪  const TWindow).
     稫  ⨯  祭  ᫮ 楤
ணࠬ஢  Windows. ਬ,  ⨢ 砥 ᪨
뢠 ⥪  Windows (DLL) ॡ  , 
    TWindow _FAR *           !!!  ⭮ Window.
,  ॡ  㪠⥫  Window, 
    TWindow _FAR * _FAR &    !!!  ⭮ RWindow.
 뫪  㪠⥫  Window.
    ᯮ짮 ⨯ P, R, RP, PC  RC 砥 ८ࠧ 襩
ਪ ணࠬ, ᫨    ᤥ   DLL. 
ப ᯮ㥬  ⨯  ਬ ணࠬ  ObjectWindows.

          易  ମ Borland

    ଠ Borland ।⠢ ᮡ ப  ࢨ  
⢥   , 易   த⮬. ,  
᫠   ॣ樮 ; ॣ஢ 짮⥫
 ࠢ  孨 প    ଠ 
  த  㣨 ᮯ ணࠬ த.

     ⠢塞 

     த ᮤন ப   :
    - 㪮⢠ ।⠢ 뢠 ଠ  ᥬ ᯥ⠬
ணࠬ. ᯮ    筨 ଠ樨;
    -   ᯮ짮 䠩 ࠪ⨢ .

      Borland

    ⤥ 孨᪮ প  Borland 㡫 ଠ樮
⥭  ࠧ ⥬  㯥  ⢥    .
    !!! 800-822-4269 (㪮) TechFax
    TechFax  㣫筮 ⮬᪮ ࠢ筮 㦡,
 뫠 孨 ଠ   䠪 ᯫ⭮.  
  ⥫䮭    㬥   .
    !!! 408-439-9096 () File Download BBS
    ஭   Borland File Download BBS   䠩,
ਪ ணࠬ  孨 ଠ,  ன   
   襣 .  ⮬  ॡ  ᯥ樠
஥.
     ଠ樮 㦡 CompuServe, GEnie  BIX  
孨 প ।⢮ .  ⠪⮢  ମ Borland 
祭 㯠  ଠ樮 ࢥ ᯮ  
᫥饩 ⠡.
-------------------------
 ࢨ      
-------------------------
 CompuServe  GO BORLAND
 BIX         JOIN BORLAND
 GEnie       BORLAND
-------------------------
     ஭ ᮮ饭  SYSOP  All.  砩 
਩ ; ᮮ饭   묨, ᫨  뫠
஭ ⮩. 砩    ଠ樨  饬
 ; ⤥ 孨᪮ প ⢥   ᮮ饭 
祭  ࠡ祣 .
    !!! 408-438-5300 (㪮) 孨᪠ প (Technical Support)
       孨 প (Technical Support), ᬮ
⥫쭮  䠩 README;    ࠧ ஡.  
ᮤন 筮  ଠ樨  ࠧ 騬 ஡.
᫨    訫 ,    易  ⤥
孨᪮ প  Borland  6.00  17.00. , 
  襣 .  㪠  ᫥  ᫥
ଠ:
    -  த, ਩    ᨨ;
    - ⨯     ⥩ 襩 ⥬;
    - 樮 ⥬    (ᯮ   VER 
⠭  ᨨ);
    - ᮤন  䠩 AUTOEXEC.BAT  CONFIG.SYS (ᯮ 
୥ ⠫ (\) 襣 㧮筮 ᪠);
    - ᮤন  䠩 WIN.INI  SYSTEM.INI (ᯮ 
⠫  Windows);
    -  ⥫䮭,  ஬    易   ६;
    - ᫨  ᠥ ன ஡, ࠩ ந
  蠣.

     I.   ObjectWindows
    -----------------------------------
     1. ᫥ 

     ⮩  뢠 ணࠬ஢  Microsoft Windows 
㯮஬  ꥪ⮭-ਥ஢ ணࠬ஢.  㧭 
 ⠢騬 ﬨ Windows ணࠬ    ࠡ⠥. 
 ॡ㥬 ᢮⢠ ਪ ணࠬ  Windows  
ꥪ⭮-ਥ஢ ணࠬ஢   ObjectWindows
⮬⨧ 襭    砥 믮 㣨.

          ⠪ ਪ ணࠬ  Windows

     㭪 1.1  ᭮  ਫ Windows. 
ᯥ譮   ᯮ짮 ObjectWindows     
⨬ ⠬.

    㭮 1.1 ࠭  ਫ Windows

    ਫ Windows  ᯥ樠 ⨯ ணࠬ,  
    - ࠭  ᯥ樠쭮 ଠ ᯮ塞 (.) 䠩;
    - 믮 ⮫쪮  Windows;
    - 筮 믮  אַ㣮쭮   ࠭;
    - 㤮⢮ 筮 ࠢ饬 䥩 짮⥫ 
뢮  믮 ⠭ ᯮᮡ;
    -  ᯮᮡ 믮 ६  㣨 Windows  -Windows
ணࠬ,  㣨  ᠬ ᥡ;
    -  ᯮᮡ 뢠  ࠧ   㣨
Windows-ணࠬ.

    ⮨⢠ Windows

    Windows ।⠢  २⢠   짮⥫  
ᮧ⥫ ணࠬ. २⢠  짮⥫   ᥡ:
    - ⠭  ।। 樨. ᫨   
ᯮ짮  ਪ ணࠬ  Windows,    
ᯮ짮  .
    -  室 ⠭ ன⢠  ࠩ  
ணࠬ. Windows ।⠢ ࠩ  প ਩
ன.
    - ⢨    ᠬ.
    - 筮:  믮 ᪮쪮 ணࠬ ࠧ.
    -   襩 . Windows ন 饭 ० 
 80286, 80386  80486;  ন 㠫  
 80386  80486.
    ⮨⢠  ࠧࠡ稪   ᥡ ᫥騥:
    - ᨬ  ன 䨪, ⮬ ᪨ ਪ
ணࠬ  ࠡ  ᥬ ⠭묨 ᯫ묨 ࠬ.
    - ஥ প ப 㣠 ਭ஢, ஢ 
㪠⥫ ன, ⠪  ""  ..
    -  ⥪ ᪨ ணࠬ;
    - 訩 ꥬ    ணࠬ;
    - প , , ⮢ ࠦ  ..

    ॡ

    ᮪ ⮨, ।⠢塞 Windows, ॡ 筮 ᫮
⭮ ᯥ祭: Windows 筮 ॡ  믮 ணࠬ,
ࠢ  ந⥫쭮   ணࠬ, 襥 ᪮
⭮ ᯥ祭,      . ᫨ 
 設  80286 ஬     ࠩ   2 , 
Windows 㤥 ࠡ ॢ室.

         ꥪ⭮-ਥ஢ ணࠬ஢  Windows

    ணࠬ஢  । Windows ॡ ⢠   묨
ﬨ.   ⮩ ணࠬ  Windows  
筮 ᫮ 祩. ObjectWindows 砥  , 
।  㭪樮஢ 襩 ਪ ணࠬ    
ଥ.
     ObjectWindows   ᯮ짮 ꥪ 
।⠢ 쭮 ᫮ ⮢ Windows ணࠬ.  ꥪ
ObjectWindows ନ ,  㤮⢮ ᥬ ॡ
, ᯥ稢  ᭮ 樨    ⢥  ᭮
ᮮ饭  ᮡ Windows.  ਫ   ObjectWindows
 ᯥ稢 ࠡ ᮮ饭,  筮 
  Windows ணࠬ.

    訩 䥩  Windows

    ObjectWindows ᯮ ꥪ⭮-ਥ஢  Borland
C++  ନ஢ ⥩ API Windows,    ⠫
ணࠬ஢  Windows.  १,    Windows
ணࠬ  ࠧ 訬 ⠬ ६  ࣨ.  ,
ObjectWindows ᯥ稢   :
    - ନ஢  ଠ樨;
    - ࠪ  㭪権API Windows;
    - ⮬᪨ ⢥  ᮮ饭.

    ନ஢  ଠ樨

    ObjectWindows ᮤন ꥪ,  । ᢮⢠  ࠭
  ,    ࠢ । ਪ
ணࠬ  Windows.  ਪ ணࠬ ObjectWindows 䥩
ꥪ 㯠  ।⠢⥫  䥩᭮  Windows.
 䥩 ꥪ  䥩  ࠡ  ᭮
裡,   ࠧ稥  .
    䥩 ꥪ 뢠   䥩 ꥪ⮬
।⢮ 맮 ()  㭪樨- Create. Create 뢠
ᮮ⢥ 㭪 Windows  ᮧ  䥩᭮ .
  䥩᭮ ꥪ, । 맮 Windows,
। 䨧᪨ ਡ ᮧ 䥩᭮ . Windows
頥 ਯ,  䨪, ᮧ 䥩᭮ ꥪ.
䥩 ꥪ ࠭  ਯ    
HWindow.
    㭪樨 Windows,    , ॡ । 
ਯ; ࠭ ਯ      
㯭. 筮,    ᯮ짮  ࠭
㬥⠫ । ᮢ  ଠ樨  ﭨ 
। .

         ࠣ஢ 㭪権 Windows

    ਪ ணࠬ  Windows ନ ᢮ 譨   
⥬ 맮    600 㭪権 , ⠢ Windows API. 
㭪   ࠧ筮 ᫮ ࠬ஢  ⨯.   
뢠  㭪 Windows ।⢥  Borland C++,
ObjectWindows 砥  , ⥬ ।⠢ 㭪権-
ꥪ⮢,  ࠣ  맮 㭪権.
     砫 ,  ࠬ  㭪権 Windows 㦥 ࠭
   䥩 ꥪ⮢. ⮬, 㭪樨-
 ᯮ짮    ।  㭪 Windows  ⢥
ࠬ஢.  , ObjectWindows 㯯 易 맮 㭪権
  㭪樨-,  㦨   ᮪
஢. ⮬ ⮣  ࠢ,   ᯮ짮
䥩  Windows.
      室 筮 ᨫ쭮 ᭨  ᨬ  ⥭
㭪権 API Windows,   ᪫砥   אַ 맮  API.
ObjectWindows ᮤন 襥   ஢: ᮪஢,
ꥪ⭮-ਥ஢ ᠭ ணࠬ  ᨬ ஫ 
᪮ ।.

    ⮬᪨ ⢥  ᮮ饭

    襬  Windows ணࠬ    ⮬,   
㪠뢠 । Windows   , 室 㬥 ॠ஢ 
⭨ ᮮ饭 Windows,   १⮬ ⢨ 짮⥫
(ਬ, ⨥  ""), 㣨 ணࠬ  㣨 筨.
,  Windows 뫠 襩 ணࠬ ᮮ饭  ࠧ, 
짮⥫   ""  ।  㪠⥫. 
ਪ ணࠬ  㤥  ⭨ ᮮ饭  祭
ᥣ ᪮쪨 . ࠡ⪠  ४ ⢥  ᮮ饭 
 䠪஬ ࠢ쭮 㭪樮஢ 襩 ணࠬ.
    ꥪ,   ᯮᮡ ᫥  ८। 
(㭪樨-),   㤮묨  襭  ⢥
 室騥 ⨬ (ᮮ饭 Windows). ObjectWindows  ᮮ饭
Windows  ॢ頥   맮 㭪権- Borland C++. ⮬,
ᯮ ObjectWindows,   । 㭪- 
⢥   ᮮ饭,  ஥  ணࠬ  ॠ஢.
ਬ,  짮⥫    "",  Windows
 ᮮ饭 WM_LBUTTONDOWN. ᫨  , ⮡  
ࠢ騩   襩 ணࠬ ⢥⨫   ⨥,  
। 㭪- WMLButtonDown,  祢 
ᮮ饭 WM_LBUTTONDOWN. ⥬,  뫪 Windows ⮣ ᮮ饭, 
ꥪ ⮬᪨ 맮 㭪-, । ࠭.
    -㭪樨 ⠪ ⨯ 뢠 㭪ﬨ ⢥  ᮮ饭.
  । ᮮ饭 Windows  㭪樥 ⢥ 
ᮮ饭 ᯮ짮  ஢ Borland C++, 뢠
㠫묨 ⠡栬 ᪮ ᯥ஢ (DDVT).  
᪨ ᯥ㥬 㭪樨-  ⠪  
楫᫥  ᯥ஢. ਬ, 
    virtual void Test() = [100];
Test ।  ᪨ ᯥ㥬 㭪- 
 ᮬ ᯥ஢ 100.
    ᫨  ᬮ 䠩 WINDOWS.H,   㢨,  ᮮ饭
Windows  ⥫  ⨯ WM_LBUTTONDOWN,  
⢨⥫쭮 ᯮ ⮫쪮 楫᫥ 祭, ⮬ 
 ᯮ짮 DDVT  ᮮ饭ﬨ Windows.
    ObjectWindows ࠢ ᮮ饭 Windows ⮩ 㭪樨, 祩 
ᯥ१樨 ࠢ 祭 ᮮ饭. ਬ,
    virtual void WMLButtonUp(RTMessage Msg) = [WM_FIRST + WM_LBUTTONUP];
     !!! 㬬 ⠭ WM_FIRST  WM_LBUTTONUP  楫᫥,
         ⮬ Windows ᯮ   䨪樨 ᮮ饭.
 㭪 void,  ⢥砥  ᮮ饭 Windows WM_FIRST +
WM_LBUTTONUP.   祣  - ObjectWindows   
  㭪 ⢥  ᮮ饭  ⮬᪨ 稭
᫥ ᮮ饭  . ObjectWindows ,  㭪樨 ⢥
 ᮮ饭  ⨯ ࠬ RTMessage. ,  RTMessage 
뫪  TMessage. ꥪ TMessage ᮤঠ  ଠ, 
Windows ।   ᮮ饭.
     !!!
     ᪮쪮 ࠭祭  ᯮ짮 ᪨
ᯥ㥬 㭪権-:
    -  ८।  ந  ᪨ ᯥ㥬
㭪樨    易⥫쭮 ᯮ짮   
ᯥ஢. ਬ, ᫥饥 । 訡筮:
    class TestBase
    {
      virtual void sample()  = [100];
    };

    class TestDerived : public TestBase
    {
      virtual void sample()  = [299];
    };
    !!!  । 訡筮, ⠪   ᯥ஢ ࠧ.

    -  ᪨ ᯥ㥬 㭪  娨 ᮢ 
 㭨  ᯥ஢. ਬ, ᫥饥 ।
訡筮:
    class TestBase
    {
      virtual void sample1()  = [100];
      virtual void sample2()  = [200];
      virtual void sample3()  = [100];
    };
    !!!  । 訡筮, ⠪    ᢮ 
ࠧ 㭪   ᯥ஢.

    - "筠" ( ᪨ ᯥ㥬) 㠫쭠 㭪 
     ८।  ந 
᪨ ᯥ㥬 㭪樥. ਬ, ᫥饥 ।
訡筮:
    class TestBase
    {
      virtual void sample();
    };

    class TestDerived : public TestBase
    {
      virtual void sample()  = [100];
    };
    !!!  । 訡筮, ⠪    ८।
 㭪 ᪨ ᯥ㥬.

    - ᪨ ᯥ㥬 㭪      
८।  ந  "筮" 㠫쭮 㭪樥.
ਬ, ᫥饥 । 訡筮:
    class TestBase
    {
      virtual void sample() = [100];
    };

    class TestDerived : public TestBase
    {
      virtual void sample();
    };
    !!!  । 訡筮, ⠪    ८।
᪨ ᯥ㥬 㭪 筮.

    -    ந   祬   ,
 ,   ந   ⢥ ᫥.
쪮     ந   ⢥
᫥   ᪨ ᯥ㥬 㭪樨. ਬ,
᫥饥 ।   ⨬:
    class A
    {
      virtual void AA() = [100];
    };

    class B
    {
    };

    class C : public A, public B
    {
    };
    !!!  ᪨ ᯥ㥬 㭪樨 室  ࢮ 
   ଠ쭮.

      ।  ⨬:
    class A
    {
    };

    class B
    {
      virtual void () = [100];
    };

    class C : public A, public B
    {
    };
    !!!  । 訡筮, ⠪  ன  ,  ,
 ᪨ ᯥ㥬 㭪樨-.

    -  ꥪ  㪠뢠 ।⢮ 㪠⥫  
ᯮ ⭮ ८। ⥪,    뢠
᪨ ᯥ㥬 㭪樨. ਬ, ᫥騩 ਬ 
訡:
    class Base
    {
      virtual void sample()  = [100];
    };

    int main(void)
    {
      Base b;
      Base *BasePtr = &b;

      BasePtr->sample();
    }
    !!!  ࠦ  訡, ⠪     뢠
᪨ ᯥ㥬 㭪樨- ।⢥ १
㪠⥫.

    - 㠫      ᪨ ᯥ㥬
㭪権-. ਬ, ᫥騩 ਬ  訡:
    class Base
    {
      virtual void sample()  = [100];
    };

    class derived : virtual public Base
    {
    };
    !!!  ।  訡, ⠪  㠫 
    ᪨ ᯥ㥬 㭪権-.

    ୠ⨢ ⮤ ⢥  ᮮ饭 Windows, ண
ObjectWindows  (  ணࠬ஢  Microsoft C ॡ
易⥫쭮),  ᯮ짮  ஢ switch 
 case   ᮮ饭 Windows, ॡ饣 ࠡ⪨ 襩
ணࠬ. 騩 ਬ ਫ Windows   ணࠬ  ; 
      switch  ஢ switch.

    switch (message)
    {
      case WMU_DDE_CLOSE:
        CloseMsgWnd();
        break;

      case WM_COMMAND:
        switch (wParam)
        {
          case IDM_QUIT:
            // 짮⥫ ࠫ QUIT  
            PostMessage(hWnd, WM_CLOSE, 0, 0L);
            break;

         case IDM_HOME:
            //   Home
            SendMessage(hWnd, WM_HSCROLL, SB_TOP, 0L);
            SendMessage(hWnd, WM_VSCROLL, SB_TOP, 0L);
            break;

         case IDM_ABOUT:
            // 짮⥫ ࠫ ABOUT  
            lpproc = MakeProcInstance(About, hInst);
            DialogBox(hInst, MAKEINTRESOURCE(ABOUT), hWnd, lpproc);
            FreeProcInstance(lpproc);
            break;
            ...

    !!!  ⮬ ਬ  -ꥪ⭮-ਥ஢ 室 
ॠ樨 ⢥⮢  ᮮ饭 Windows.

    祢,   200 ࠧ묨 ᮮ饭ﬨ Windows   switch
⠭  ࠪ᪨ ࠢ塞묨. ᯮ㥬 ObjectWindows DDVT
  .

          Windows ணࠬ

       ⮢ ணࠬ ᯥ祭, ⠪  ,
Windows,  ਪ ணࠬ  㣨 ਪ ணࠬ,
६    㣮, 㤥  , 
 襩 Windows ணࠬ   㦠饩  ।. 
⮩  ᬠਢ  Windows ணࠬ  ਢ ਬ
⨯筮 Windows ணࠬ, ᠭ  Botland C++  
ObjectWindows.

     Windows

     ६ ᯮ 믮塞 㭪樨 Windows   API 室 
 譨  ,  뢠 믮塞 
騩  ਫ:
    - KERNEL.EXE - ⢥砥  ࠢ   ᠬ, ஢
 ⢨  .
    - GDI.EXE - ⢥砥  뢮 䨪  ࠭  ਭ.
    - USER.EXE - ⢥砥  ࠢ ,  짮⥫ 
⢨.
     㫨   ⠢塞 ᨨ Windows. 
।,   짮⥫  Windows   㫨 㦥
㦥   .  㤥 ⠢ ணࠬ, 
ᯮ   㫨,   ᮤঠ   ᥡ.

    ⢨  Windows   

    - ࠭祭  ⢨ 樮 ⥬  
    ,     ᯥ譮 㭪樮஢
 ਪ ணࠬ.   ,  ணࠬ ࠡ⠥ 
⢨  襩 ਪ ணࠬ  ⠬ 樮
⥬.   ᠬ ⭮  Windows ணࠬ.   Windows
।⠢ ࠧ  㭪権 樮 ⥬,  ࠧ
᫮    Windows  ਪ ணࠬ. 
ணࠬ  ﭭ ⢮  樮 ⥬ (
 Windows).
Ŀ
   ਪ ணࠬ Windows  ^                         
           Ĵ
                                V                         
    ^       㫨 Windows: GDI, USER  KERNEL                                            
Ŀ                               ^  
 ^  V                Ĵ
Ĵ                               V  
 Vࠩ ன   ^ ࠩ ன Windows  ^  
Ĵ
 V                        V                             V  
          ਩ 㤮              


    "Hello, Windows" ("ࠢ Windows")

    ࠤ樮 ᯮᮡ १樨  몠  । 
ᠭ  ⮬ 몥   ⮩ । ணࠬ "Hello, World". 
ணࠬ ᮤন ⮫쪮 ᪮쪮 , 室  뢮 
࠭ ப "Hello, World".
    筮  Windows  ਤ ᤥ 筮  権, ⮡
⨣ १.   ᢥ ,   ,  ⥬
 冷 ⢨   㦠饩  ।,  ࠩ 
, 筮     㤠. ᫨  㤥   
,  襭 ⮩ ⮩  ਢ  ᮧ 筮 
ணࠬ.
     ந室   ⮣,  Windows   ॡ, 
 㤮⢮ ਪ ணࠬ ० 祬   
饭.  ⥩ ணࠬ ॠ 筮 訬 室
.  , ணࠬ, ᠭ   ObjectWindows,
⮬᪨ 㤮⢮ 襬   ॡ, 
ᮧ  뢮  . ⮬ ணࠬ HelloWorld 頥 
ਢ :

    !!!  ணࠬ HELLOAPP.CPP
    #include <owl.h>

    // ।塞 , 騩 ந  TApplication
    class THelloApp :public TApplication
    {
    public:
      THelloApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
                LPSTR lpCmdLine, int nCmdShow) : TApplication(AName,
                hInstance, hPrevInstance, lpCmdLine, NCmdShow) {};
      virtual void InitMainWindow();
    };

    //    MainWindow  THelloApp
    void THelloApp::InitMainWindow()
    {
       MainWindow = new TWindow(NULL, "Hello World!");
    }
    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
      LPSTR lpCmdLine, int nCmdShow)
    {
      THelloApp HelloApp ("HelloApp", hInstance, hPrevInstance,
                          lpCmdLine, nCmdShow);
      HelloApp.Run();
      return Hello.App.Status;
    }

    ࠪ⨪ ᪠ ਪ ணࠬ

     砫 ᯮ ਪ ணࠬ, Windows ।  
ࠬ.  ணࠬ ObjectWindows  ࠬ । 
ꥪ ਪ ணࠬ, ந   TApplication. 
ࠬ ⠪     ꥪ ਪ ணࠬ,
 ᯥ祭 㤮 㯠     ணࠬ.
      ਫ  ᫥饥 祭:
    - hInstance ࠭ ਯ  ਫ.
    - hPrevInstance ࠭ ਯ ।饣  ⮣ 
ਫ.
    - lpCmdLine ࠭ LPSTR  ப, ᮮ⢥饥  ப
᪠ ਫ,   䠩  樨. ਬ, "CALC.EXE
/M"  "WORDPROC.EXE LETTER1.DOC".
    - nCmdShow ࠭ 楫 ᫮, ।⠢饥 砫 ० ᯫ
  .  ᯮ  맮 㭪樨- Show.
      ਪ ணࠬ ObjectWindows  ᪮஢
ꥪ ਪ ணࠬ    TApplication.  襬
ਬ  ᯮ㥬 THelloApp.
     ࢮ  ਪ ணࠬ ObjectWindows, Run 뢠
InitApplication  ஢ 室 樠権  ᥣ
ਫ. Run 樠   ( ) 맮
InitInstance. ⥬ InitInstance 뢠 㭪- InitMainWindow
 ஢  樠樨 ꥪ  .
     祭, Run ᪠ 横  ᮮ饭 襩 ਪ
ணࠬ ObjectWindows.  Run ந室 ⮫쪮  襭
ணࠬ.   ਫ     Status,
     Windows, 筮 ⮬,    
 ࠭ 㭪樨 WinMain.

    ࠪ⨪  

      ਪ ணࠬ  , ஥  
᪥  .  ⢥⢥  뤠 짮⥫ ᯨ᪠
㯭  ().  ६ ᥠ ࠡ  ਫ  
ࠢ  䥩ᮬ    , 㯠  ⢥
⢥ ࠡ祩  ணࠬ.  㣨,  ᫮
ਫ, ᪮쪮   㯠  ⢥ ࠡ ⥩. 
,  ⨨ 짮⥫  ,  樠
 襭 ਫ.

          ᮧ ਪ ணࠬ

    ᪮  ।  ॡ   Windows
ணࠬ (ਬ, 樠  ),   ᥣ 稭
ᮧ 襩 ਪ ணࠬ  ।   楫 㦥
 Windows ணࠬ. ObjectWindows ।⠢ ப 
 ணࠬ; 롥    室  . ⥬ 
ਤ ன ᫥騥 ⠯:
    1.   ணࠬ .
    2.  ᮢ  ,    ⠪ .
    3.  ணࠬ.
    4. ⫠ ணࠬ.

     2.   Windows

    ,     ⥪ ObjectWindows,  ⮢
 ᠭ   ணࠬ ObjectWindows.  ᫥ ᪮쪨
  㧭  ᮧ ᪨, ࠪ⨢ Windows
ணࠬ, ন騥 , 㧪  ࠭ 䠩, 뢮 䨪
 ⥪  , , 騥 ᮡ⢥ ⥩訥 ⥬ .  
⨬,  ᪠   ᭮ ਭ樯 ᮧ ਫ 
Windows, ਬ, ࠡ⪠ ᮮ饭, ࠢ ﬨ 
த⥫᪨  "୨"   ⮬᪠ ᮢ 䨪.
     ⢨  Windows 㤥   10 蠣, 뢠 
  2  6:
    - 蠣 1: ⥩ Windows ணࠬ;
    - 蠣 2:   ;
    - 蠣 3: 뢮 ⥪  ;
    - 蠣 4: ᮢ   ;
    - 蠣 5:  ⮫騭 ;
    - 蠣 6: 뢮 䨪;
    - 蠣 7:    ;
    - 蠣 8:  ᯫ뢠饣 ;
    - 蠣 9: ᥭ ࠦ  䠩;
    - 蠣 10: ᯫ뢠饥  .
    ᫨   﫨  ⠫,   㬮砭, 
室 ⥪ ணࠬ  室  ⠫ EXAMPLES\STEPS
 ⠫ OWL.    STEP1.CPP, STEP2.CPP  ⠪ ,
ᮮ⢥  뢠    蠣.
     㭪 2.1  譨  ਫ, 砥   10
蠣 襣 ⢨  Windows.

    㭮 2.1  ਫ ObjectWindows.

          ਪ ணࠬ ObjectWindows: ।⥫
         㦤

     ⮣   筥,  易 ᤥ ᪮쪮  砭 
ணࠬ஢  ᯮ짮 ObjectWindows. ࢮ,   筮
  ⠫,  ⥬, ⮡    ᮢ
   室 䠩. ஥,   筮  
⠫ ⥪, , TLINK  ᬮ   室 襬
ਫ ⥪.  ᫥,   ᮧ 䠩 ᮢ,
ᮤঠ騩 ᮮ⢥騥  ObjectWindows,  ⥬ ਢ易 
䠩 ᮢ  襩 ਪ ணࠬ.

    ⥪ ⥩ ᮢ

    ⥪ ᮢ ObjectWindows   ⥪ ⥩
ᮢ  ⠫ CLASSLIB.  ꥪ ObjectWindows ᮢ⭮
ᯮ  Object (।塞  ⥪ ⥩ ᮢ)
 ᢮  .   ObjectWindows ⠪ ᯮ
 㣨   ⮩ ⥪.   ணࠬ
ObjectWindows   ᯮ짮   ⥩ ᮢ.

    ⠫

     ⠭  ++ 䠩  ,  STDIO.H, 襩
ਪ ணࠬ  ॡ ⥫ 䠩 
ObjectWindows, ਬ OWL.H.  ⮬ 砥  ᯮ⥫ ⨫ 
㤥 易 㪠뢠  ⮭宦.  ᠭ ணࠬ 
ᯮ짮 ⥪ ObjectWindows  易⥫쭮  , 
ࠩ , 䠩 OWL.H.  ᫮ ਫ ॡ 祭 
㣨 䠩 . ਬ, ணࠬ, ᯮ  TButton,
  BUTTON.. ਪ ணࠬ ObjectWindows  ᠬ
ObjectWindows ᭮뢠  ⥪ ⥩ ᮢ, ⠢塞
 ObjectWindows, ⮬  易⥫쭮    ᪠
砥 ⥪ ⥩ ᮢ ObjectWindows.
    ᥬ ਪ ணࠬ 室   ⠭ ⥪
Borland C++, ,  ᮧ  ᠬ  祭   .
஬ ⮣, ਫ ObjectWindows ॡ 㯠  ⠢塞
⥪ ⥩ ᮢ ObjectWindows  ⠭ ⥪
ObjectWindows.
     ᫥饩 ⠡ ਢ ᮧ ⠭묨 ⨫⠬ 
㬮砭  ⠫ ObjectWindows  Borland C++. ᫨ 
⠭筮 ⨫   㣨 ,   㦭 㤥 
ᮮ⢥騥   MAKE 䠩  䠩 ஥⮢.

     2.1 ⠫ INCLUDE  㬮砭
------------------------------------------------------------------------
                    ⠫ INCLUDE            ⠫ ⥪
                        㬮砭                㬮砭
------------------------------------------------------------------------
 ObjectWindows         \BORLANDC\OWL\INCLUDE      \BORLANDC\OWL\LIB
 ⥪            \BORLANDC\CLASSLIB\INCLUDE \BORLANDC\CLASSLIB\LIB
 ⥩ ᮢ
 Borlan C++            \BORLANDC\INCLUDE          \BORLANDC\LIB
------------------------------------------------------------------------

     室 ⥪

      ࠧ ⥪ ObjectWindows  ⥪
⥩ ᮢ -      : small (),
medium (।)  large (让).  ⥪ ᯮ  ⠫
⥪  ਢ  ᫥饩 ⠡:

     2.2 ⥪    
------------------------------------------------------
    ⥪     ⥪ ⥩
                ObjectWindows  ᮢ
------------------------------------------------------
 Small          OWLWS.LIB      TCLASSWS.LIB
 Medium         OWLWM.LIB      TCLASSWM.LIB
 Large          OWLWL.LIB      TCALSSWL.LIB
------------------------------------------------------

    ணࠬ ObjectWindows, ᯮ騥 DLL

    ᪨ 뢠 ⥪ (DLL), ⥪  
ObjectWindows  ⥪ ६ 믮 Borland C++ 㯭 
  ⠡ 2.3. ᫨  , ⮡  ਪ ணࠬ
ᯮ짮    DLL,    易   ᮮ⢥饩
⥪ .

     2.3 DLL  ⥪ 
---------------------------------------------
             DLL        ⥪ 
---------------------------------------------
 ObjectWindows  OWL.DLL    OWL.LIB
 Borland C++    BCRTL.DLL  CRTLL.LIB
---------------------------------------------
     !!!
      ᯮ짮 ,       DLL; , ᫨
 ᯮ  ࠩ   DLL,   易⥫쭮 
஢  ணࠬ    large (-ml)   樥
⥫㠫  맮 (-WS).  ⠪  易 
ਪ ணࠬ  ⥪ ⥩ ᮢ TCLASSDL.LIB. 
 DLL  ⥪ ⥩ ᮢ.

     䠩 ᮢ

     筮  ᮧ 䠩 ᮢ ᯮ । ᮢ,
  ᯮ짮   ᮢ  ப RC. 
ᮢ ObjectWindows 祭  㣮 䠩 ᮢ  Windows,
 ᪫祭  ⢨   砥 䠩, ᯥ
 ObjectWindows.  䠩 ᮢ * ७ﬨ .DLG  .RC)
⠢   ObjectWindows.    ObjectWindows
뫠   䠩  祭 ᮢ, ᯮ㥬   .

     2.4  ObjectWindows,  ॡ 䠩 ᮢ
----------------------------------------------------
         室 䠩() ᮢ
----------------------------------------------------
 TInputDialog  INPUTDIA.DLG
 TFileDialog   FILEDIAL.DLG
 TEditWindow   STDWNDS.DLG, EDITACC.RC, EDITMENU.RC
 TFileWindow   STDWNDS.DLG, FILEACC.RC, FILEMENU.RC
----------------------------------------------------
    ᫨ ਫ ObjectWindows ᯮ    ᮢ, 
㡥,  䠩 ᮢ  ⮣ ਫ 砥  ᥡ
ᮮ⢥騥 䠩 ᮢ ObjectWindows. ⥩訩 䠩 ᮢ 
ਪ ணࠬ, ᯮ饩  TInputDialog  TFileDialog, 
 ᫥騬:
    #include <window.h>
    #include <owlrc.h>
    rcinclude inputdia.dlg
    rcinclude filedial.dlg
    ...
    㣨 室 襬 ਫ   ᫥ 
ਢ묨  ४⨢.  ᮢ ObjectWindows  䠩 OWLRC.H
ᯮ  ⠫ 砥 䠩 ObjectWindows;  ⠫
 易⥫쭮   RC    ப. ᪮
䠩 WINDOWS.H 室  ⠫ 砥 䠩 Borland C++,  
⠫ ⠪ 易⥫쭮   RC    ப. 
 砥 ⠫ ᯮ   ப RC -i.
᪮쪮 砥 ⠫  ७ 樨 -i   
.

          ਪ ணࠬ ObjectWindows: ᯥ䨪

    㤨 ।⥫ 砭  ᮧ Windows ணࠬ  
⥪ ObjectWindows ( 㤥 뢠  ObjectWindows ணࠬ 
ਫ),   ३  ᯥ᪨ ⠬ ⮣ ᮧ.
      ᯮᮡ ᮧ ਪ ணࠬ ObjectWindows.
 ( ⮩) -    ᢮ 楫  
⠢塞 MAKE-䠩. ன - ᯮ짮  ஥⮢
⥣஢ । ࠡ⪨ () Borland C++. ⨩,  ᫥, -
 ᯮ짮 ⨫  ப.   㤨 ⮫쪮
ன  ⨩ ᯮᮡ, ⠪  ᯮ짮 MAKE-䠩  ᮢ 
 ᯮ짮 ⨫  ப.
     ⮩ 㬥樨  ।,     ⨫⠬,
室騬  Borland C++ (  ⨫  ப).  ⠪ 
   ᮧ Windows ணࠬ  饬.  ஡
ଠ  ⨬ ᠬ ਢ  㬥樨  Borland C++.

    ᯮ짮   ᮧ ਫ ObjectWindows

     ᮧ ஫ ObjectWindows   Borland C++,  
ᯮ짮 䠩 ஥. ஡ ଠ  䠩 ஥ ਢ
 㬥樨  . 騥 蠣 ஥ ஥ ਫ
ObjectWindows   ᥡ ᫥騥:
    -  襭 ᪮ 樨 ( 祭  筮 讣)
 ॡ㥬 䠩     
।஢ .
    -  䠩 ஥.
    -  ⨯ ਫ   Windows.
    - ᫨   襩 ਪ ணࠬ  ᯮ DLL,
DLL ⥪ ६ 믮 Borland C++  짮⥫ DLL, 
    ⥫㠫쭮 ⭮ 맮   
large.
    -    㣨 ॡ㥬 樨   騪.
    -  砥 ⠫.  㬮砭  ᫥騥 :
      C:\BORLANDC\OWL\INCLUDE,
      C:\BORLANDC\CLASSLIB\INCLUDE 
      C:\BORLANDC\INCLUDE
    -  ⠫ ⥪.  㬮砭  ᫥騥 :
      :\BORLANDC\OWL\LIB
      :\BORLANDC\CLASSLIB\LIB 
      :\BORLANDC\LIB
    -   ஥  室 䠩 襣 ਫ (
७ﬨ .CPP, .C, .ASM  ..).
    !!! ।० !    䠩 , 騥
७ . !
    -   ஥ 䠩 ᮢ .RC 襣 ਫ.  
஡ ଠ  䠩 ஥⮢ .  ਢ ਬ  
 䠩 ᮢ STEPS.RC.
    !!! ।० !    䠩 ᮢ  .DLG !
    - ᫨   ᯮ짮 ObjectWindows ᪨ 易 
訬 ਫ,   ⥪ ObjectWindows ⠪, ⮡ 
ᮮ⢥⢮ ᯮ㥬  . ਬ,  OWLWS.LIB
   ਫ small.  ⨢ 砥, ᫨  
ᯮ짮 ᪨ 뢠 ⥪ (DLL) ObjectWindows
(OWL.DLL),   ⥪  DLL ObjectWindows, OWL.DLL.
    -  ⨬    襣 ਫ ⥪
⥩ ᮢ ObjectWindows. ਬ,  ਫ  
 medium  TCALSSWM.LIB. ⨬ ⥪ ⥩
ᮢ  ਫ, ஥ ᯮ DLL ObjectWindows, DLL
⥪ ६ 믮 Borland C++  짮⥫ DLL
ObjectWindows,  TCLASSDL.LIB.
    -    ᪨ 易 ⥪ ६ 믮
Borland C++  訬 ਫ.  㬥 ࠧ 襣 . 䠩. 
⮣    ஥ ⥪  BCRTL.LIB.
    -   ਪ ணࠬ.  ஥⮢  ஢
 ஥  稥  樨 室 䠩 襣
ਫ  䠩 ᮢ .RC; ⥬ 騪 ᪮ ஬
ꥪ 䠩 .OBJ  ⥪;   ,  䠩   DLL 
 ᮮ⢥騥 .

    ᯮ짮 ⨫  ப  ᮧ ਪ ணࠬ
    ObjectWindows

    ᫨  樨  뢠 襣 ਫ ObjectWindows 
 ᯮ짮   ப Borland C++,  
ᠬ  㤥 ।஢  䠩 䨣樨 ( ᮧ ,
᫨   ᮧ)   㦭 ⠫ 砥 䠩 
⥪.   ॡ㥬 ⠫  䠩 䨣樨 ᯮ
४⨢ -i  -I.
      뢠 襣 ਫ ந ᫥饩 ப
  権:
    BCCX -WE myprog.cpp owlws.lib tclassws.lib
    ⮩  砫  ணࠬ MYPROG.CPP  ⥬
ந室 뢠   OWLWS.LIB  TCLASSWS.LIB.
     !!!
    ᫨  ᯮ   訬 ਫ DLL ObjectWindows, DLL
⥪ ६ 믮 Borland C++  짮⥫ DLL
ObjectWindows,    易⥫쭮 ந   樥
 ப -WS. ⨬,   ᯮ짮 DLL ObjectWindows 
 ᮧ  ਫ    large. ਬ,
    BCCX -WS -ml myprog.cpp owl.lib tclassdl.lib bcrtl.lib
 MYPROG.CPP  ⥬ 뢠   ⥪  OWL.LIB
 BCRTL.LIB  ⥪ ᪮ 뢠 TCLASSDL.LIB.
      易⥫쭮 ⪮஢ 䠩 ᮢ ਫ.
 ப  ⮣ 㤥  ᫥騩 :
    RC -i c:\borlandc\owl\include -i c:\borlandc\include myprog.rc
       myprog.exe
    ⨬,   ,     ⠫ 砥
䠩   ப RC,  ᮧ ६ ।   INCLUDE
     ᮮ⢥ ⠫. ਬ,  
 ।  ᫥騬:
    SET INCLUDE=c:\borlandc\owl\include;c:\borlandc\include
    RC myprog.rc myprog.exe
     SET   ࠧ饭  襬 䠩 AUTOEXEC.BAT.
       RC  䠩 ᮢ .RC   䠩
ᮢ .RES  ⥬     䠩 ਪ ணࠬ.
⮬ ᥩ ࠡ  ᮧ ᯮ塞  䠩 ਪ
ணࠬ.

          1:  Windows ணࠬ

     筥 ᮧ 襩 ਪ ணࠬ  ᠭ ⥩襩
ணࠬ ObjectWindows,   㤥  易⥫ 蠣 
ᮧ ᥩ 襩 樮 ணࠬ.  ணࠬ, 
室  䠩 STEP1.CPP,  ࠭  ࠢ 窠 
ᮧ  ணࠬ  ObjectWindows.  蠣  ਫ
ᮧ    .

    ॡ ਪ ணࠬ

     Windows   , ஥   
ணࠬ. 짮⥫ 蠥 ࠡ ਪ ணࠬ ⨥
 .  ਫ ObjectWindows   筮 
 ꥪ⮬.  楬  ꥪ ਪ ணࠬ,
 ᮧ  뢮  , ࠡ뢠 ᮮ饭 Windows 
蠥 ࠡ ਪ ணࠬ. ꥪ ਪ ணࠬ
  ꥪ⮭-ਥ஢ ⥫ ᠬ ਪ
ணࠬ. 筮 ⮬, ObjectWindows ।⠢  ,
  ..  室  ⠫ ணࠬ஢  Windows.
     ணࠬ ObjectWindows  ।   ਪ
ணࠬ,  ந室  ⠢塞  TApplication.
 ⮣ ந  (ꥪ ਪ ணࠬ)
  WinMain (窠 室  Windows ணࠬ).  ᮣ襭,
⨯ (   ᮢ) 筮 稭  㪢 ,  㪠⥫
 ⨯ -  㪢 .  ᮧ  ਫ   뢠
TMyApp.
     ਢ  㭪 襣 ਫ:

    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
      LPSTR lpCmdLine, int nCmdShow)
    {
      TMyApp MyApp("Simple ObjectWindows Program", hInstance,
                   hPrevInstance, lpCmdLine, nCmdShow);
      MyApp.Run();
      return MyApp.Status;
    }
    !!!  ࠣ  䠩 STEP1.CPP.

     ࢮ  WinMain  ꥪ ਪ ணࠬ
ᮧ  ਫ. ப "Simple ObjectWindows Programm"
(" ணࠬ ObjectWindows") ।   ᥭ 
⢥ 祭    Name. 㣨 ࠬ,
। WinMain, ⠪    ࠭ 
  ꥪ ਪ ணࠬ. MyApp.Run 뢠 
᪠ ਫ ObjectWindows.  ᫥  頥
⮣  (  Status ꥪ ਪ ணࠬ).

    ।  ਪ ணࠬ

     ਫ   ⠭⭮  ObjectWindows
TApplication த   ( ᪮쪮 ᮢ ஦ 
TApplacation).     ८।  ࠩ  
㭪- InitMainWindow. InitMainWindow  ꥪ
   ६ 樠樨 ਫ ObjectWindows. ਢ
।  TMyApp:

    class TMyApp : public TApplication
    {
    public:
      TMyApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance, LPSTR
             lpCmdLine, int nCmdShow) : TApplication(AName, hInstance,
             hPrevInstance, lpCmdLine, nCmdShow) {};
      virtual void InitMainWindow();
    };
    !!!  ࠣ  䠩 STEP1.CPP.

     ꥪ       MainWindow
ꥪ ਪ ணࠬ. ,  ꥪ ਪ ணࠬ
 ꥪ⮬  ,    ꥪ  易 ᪨.
 ⭮襭  뢠 ୮ 뢠.
।
TMyApp::InitMainWindow ᫥饥:

    void TMyApp::InitMainWindow()
    {
      MainWindow = new TWindow(NULL, Name);
    }
    !!!  ࠣ  䠩 STEP1.CPP.

    ꥪ    TMyApp    
 TWindow. । ࠬ NULL 㪠뢠,    
  襣 ਫ; ன ࠬ ।  . 
।   Name ꥪ ਪ ணࠬ,  
⮬ ६ ⠭  祭 "Simple ObjectWindows Programm". 
ꥪ   㤥 ᪮஢   ᮢ, ந
 ᮢ ObjectWindows.   2   ᪮஢  
  ᭮  ந .  㭪 2.2 
譨  祭 .

    㭮 2.2  ࢮ  襣 ਫ ObjectWindows

     ⮬ 蠣 ਫ  뢮 ⮥ , ஥ 
६,  ࠧ, ᨬ஢, ஢  뢠.
 ਢ  ⨭ ணࠬ   1:

    #include <owl.h>

    class TMyApp : public TApplication
    {
    public:
      TMyApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance, LPSTR
             lpCmdLine, int nCmdShow) : TApplication(AName, hInstance,
             hPrevInstance, lpCmdLine, nCmdShow) {};
      virtual void InitMainWindow();
    };

    void TMyApp::InitMainWindow()
    {
      MainWindow = new TWindow(NULL, Name);
    }

    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
      LPSTR lpCmdLine, int nCmdShow)
    {
      TMyApp MyApp("Simple ObjectWindows Program", hInstance,
                   hPrevInstance, lpCmdLine, nCmdShow);
      MyApp.Run();
      return MyApp.Status;
    }

          2:   

    ணࠬ, ᮧ   1, ⮨   ꥪ⮢: ꥪ
ਪ ணࠬ  ꥪ . ꥪ ਪ ணࠬ, MyApp,
 ஬  TMyApp, ந  TApplication. ⥫
 ꥪ , ᮤঠ騩    MainWindow ꥪ
ਪ ணࠬ, 㪠뢠   TWindow, 㯯 
ObjectWindows. 筮  ।     ᮡ⢥
 ,  ࠦ ᯥ  襩 ਪ ணࠬ
ࠪ⨪.  ⮬ ࠧ  ᮧ ꥪ  , ⥬
। ᯥ樠쭮  , ந  TWindow.

     ⠪  ꥪ ?

      1  ,  ꥪ ਪ ணࠬ 㫨
⠭ ࠪ⨪ Windows ணࠬ,   
.  TApplication ॠ ᭮ ࠪ⨪ 襩 ਪ
ணࠬ ObjectWindows.
    筮,  ꥪ 㫨 室 ࠪ⨪
,  ᯮᮡ 
    - 뢮   ࠧ;
    - ॠ樨  ᮡ;
    - ࠢ ୨ ;
    - ⨥  㯮冷祭 ०.
      ObjectWindows ন   ࠪ⨪.
     ᯥ祭 襩    襩 ணࠬ, 
 㤥 ᮧ   , ந  ⠢塞 
ObjectWindows.    ᫥ 㭪樨- 
   ᮢ,  ⠪   .
ꥪ⭮-ਥ஢ 室 ࠤ   ﭭ "뢠
".

    ਯ

      ꥪ ,  ࠩ ,   :
HWindow, Parent  ᯨ᮪  "୨" . HWindow ᮤন ਯ
. ਯ 뢠 䥩 ꥪ, ⠪  , 
,  ࠢ騩 ꥪ   ᮮ⢥騬  䥩
⮬.    ஬ ᫥  ઠ  襬 ,
 ⠢   थ஡.   ।  ப 
䨪樨 襣 , ⠪   ਯ  䨪樨
.
     ࠡ  묨 ꥪ⠬   易⥫쭮  㫨஢
।⢥  ਯ஬ . ,  室 
।⢥ 맮 㭪権 Windows. ਬ,  뫪 
ᮮ饭  뢠 㭪 API Windows MessageBox. 㭪 MessageBox
ॡ  ਯ த⥫᪮   ᮮ饭. 
ਢ 맮 MessageBox     㭪樨-
ந  . ଠ  㭪 Windows API ᮤন
  4 "㭪樨 Windows" 㪮⢠ "ObjectWindows  ++. ࠢ筮
㪮⢮".
    MessageBox(HWindow, "Do you want to save?", "Drawing has changed",
               MB_YESNO | MB_ICONQUESTION);

    ⥫᪨  ୨ 

    設⢮    ᨬ  㣨:  易 
  易. ਬ,   蠥 ࠡ 襩
ਪ ணࠬ,   ࠢ塞     㭨⮦.
Windows ⠭ ⭮襭    ⭮襭 
"த⥫"  "쬨". ⥫᪮  ⢥⢥  ᢮ ୨
. ObjectWindows ।⠢     
ꥪ  ࠭ 裡  ᢮ த⥫᪨   ᢮ ୨
.
      Parent ᮤন  ꥪ த⥫᪮ .
  த⥫,  אַ ᫥ ⮣ ᫮,  ᪮॥  .
    쥩 ⮩    ᯨ᮪  ୨ ,
 ᮤন ᯨ᮪ 㪠⥫  ୨   , ᫨ 
.  㤥  ୨    8.

          ꥪ  .

    ,   㦥  ।⠢  ⮬,  ᮤঠ 
ꥪ,   ।   , ந  
Window, 㯠騩  ⢥   ᮧ  ਪ
ணࠬ. ࢮ,     TMyWindow  ᠭ
.

    _CLASSDEF(TMyWindow)
    class TMyWindow : public TWindow
    {
    public:
      TMyWindow(PTWindowsObject AParent, LPSTR ATitle) :
        TWindow(AParent, ATitle) {};
    };
    !!!  ࠣ ணࠬ  䠩 STEP2.CPP.

    ⨬,     ந   ।
 ࠪ⨪,   뢠   
(TWindow).
    ஥, 塞 TMyApp::InitMainWindow ⠪, ⮡  ஢
TMyWindow ,   TWindow,    ਪ ணࠬ.

    void TMyApp::InitMainWindow()
    {
      MainWindow = new TMyWindow(NULL, Name);
    }
    !!!  ࠣ ணࠬ  䠩 STEP2.CPP.

        ॠ   InitMainWindow 
⥬,  室  ।      TMyApp.
ꥪ ਪ ணࠬ 뢠 -㭪樨  ꥪ
 ᮧ  䥩᭮    뢮   ࠭. 
   ⮬ ᯮ.
    , TMyWindow  ।  ᢮  , 
᫥  TWindow  TWindowsObject. 㣨 ᫮  ਥ 
  ਪ ணࠬ  ᭮.  ᫥饬 ࠧ 
 ᪮쪮  ᢮.

         ⢥  ᮮ饭

      ᯮᮡ     ꥪ - 
  ॠ஢  ᮮ饭 Windows. ਬ,  ⨨
짮⥫    襩 ਪ ணࠬ   
"" ᮮ⢥騩  ꥪ 砥  Windows ᮮ饭
WM_LBUTTONDOWN.  ᮮ頥  ꥪ,    짮⥫ 
 ᮮ⢥  "".  ⮩ 樨 ⠪ ।
न 窨,   . ( ଠ ᯮ   6
 㪮⢠.) 筮,  짮⥫  ࠢ
 "", ꥪ   砥  Windows ᮮ饭
WM_RBUTTONDOWN.
    騬 蠣     , 饥 ஬
TMyWindow,  ⢥   ᮮ饭   - . 
墠  ॠ஢  ᮮ饭 Windows   ।
㭪- 襣     ⨯ 砥
ᮮ饭  ஥ 室 ⢥.  㭪樨- 뢠
㭪ﬨ-⠬ ⢥  ᮮ饭.  ।
㭪- ⢥  ᮮ饭   ᮮ饭  ஥ 
 ॠ஢. (᫨   । ⢥  ।
ᮮ饭,  ObjectWindows 㤥 ࠡ뢠  楤ன, ਭ⮩ 
㬮砭).  㪠  ,   㭪- 
㭪樥-⮩ ⢥  ᮮ饭,     
ᯥ஢  㦤    㪮⢥. ⨬,  
㭪樨  ࠥ  祭,  ⮫쪮  ᯥ஢.
  㭪権 ⢥  ᮮ饭  ६  ᮮ⢥
ᮮ饭 Windows  뢠   ᨬ ન.

    class TMyWindow : public TWindow {
    public:
    ...
    virtual void WMLButtonDown(RTMessage Msg) =
      [WM_FIRST + WM_LBUTTONDOWN];
    ...
    };
    !!!  ࠣ ணࠬ  䠩 STEP2.CPP.

    Msg  뫪   TMessage (㪮祭  ⨯
RTMessage ObjectWindows), ᮤঠ饩 ଠ  ந襤襬 ᮡ⨨. (
⮩   ஡  㧭   3). ᥬ
㭪-⠬ ⢥  ᮮ饭 । RTMessage   
⨯  void.
     砫, । 㭪樨- ⢥  ᮮ饭 ⮫쪮
⢫騥 뢮  ᮮ饭, 饣  ⨨ ᮮ⢥饩
 "". ,     ⢥.
ਢ । 㭪樨- ⢥  ⨥  :

    void TMyWindow::WMLButtonDown(RTMessage)
    {
      MessageBox(HWindow, "You have pressed the left mouse button",
                 "Message Dispatched", MB_OK);
    }
    !!!  ࠣ ணࠬ  䠩 STEP2.CPP.

    㭮 2.3  ਪ ணࠬ ⢥砥  ᮡ⨥

    !!!  室  ணࠬ ⮣  ਢ   
.

         襭 ࠡ ਪ ணࠬ

      ணࠬ ४頥 ࠡ   ⨨ 
""   ࠢ饣   ,  쪨  
 孥  㣫.   ਪ ணࠬ 뢠 
᫥ 믮 ⮣ ⢨.    㤮  
 ணࠬ,    ᫮  ਬ⨢.
    ਬ,  - 蠥 ࠡ ਪ ணࠬ 
࠭ १⮢ 襩 ࠡ.  ਪ ணࠬ 
易 । 짮⥫ ࠭ १  ࠡ, ᫨ 
 뫨  ࠭.        ணࠬ
ObjectWindows.   ⢨ ணࠬ   ⨥ 
""  室.
     ⪥   ObjectWindows ਫ, 뢠
㠫쭠 㭪- CanClose 襣  ਪ ணࠬ.
㭪 CanClose  㭪樥 BOOL,  㪠뢠  ᮣᨥ
(TRUE) 짮⥫  ਪ ணࠬ.  । 
㬮砭, ᫥㥬  TApplication 㭪- CanClose 뢠
㭪- ꥪ   CanClose.
     設⢥ 砥 ꥪ   蠥, 뢠 
ਫ.
       , TMyWindow, ᫥ 㭪-
CanClose  TWindowsObject.  砥    ୨ , 
뢠 㭪- CanClose   . ᫨ ୨ 
 (  襬 砥),    頥 TRUE. 
䨪樨   襩 ਪ ணࠬ  
८। 㭪- CanClose    :

    BOOL TMyWindow::CanClose()
    {
      return MessageBox(HWindow, "Do you want to save?",
        "Drawing has changed", MB_YESNO | MB_ICONQUESTION) == IDNO;
    }
    !!!  ࠣ ணࠬ  䠩 STEP2.CPP.

      ⪥   ਪ ணࠬ  뤠 
 ᮮ饭 "Do you want to save?" ("   ࠭?"). ⨥
 Yes 頥 FALSE  ।頥 ⨥   ਪ
ணࠬ. ⨥  No 頥 TRUE  蠥 ࠡ ணࠬ.
 㭪 2.4  १ ࠡ ஢ ணࠬ.

    㭮 2.4  ਫ  ८। ॠ樥  襭
                ࠡ

     ਢ  ⨭ 襩 ਪ ணࠬ   2:

    #include <owl.h>

    class TMyApp : public TApplication
    {
    public:
      TMyApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance, LPSTR
             lpCmdLine, int nCmdShow) : TApplication(AName, hInstance,
             hPrevInstance, lpCmdLine, nCmdShow) {};
      virtual void InitMainWindow();
    };

    _CLASSDEF(TMyWindow)
    class TMyWindow : public TWindow
    {
    public:
      TMyWindow(PTWindowsObject AParent, LPSTR ATitle) :
        TWindow(AParent, ATitle) {};
      virtual BOOL CanClose();
      virtual void WMLButtonDown(RTMessage Msg)
        = [WM_FIRST + WM_LBUTTONDOWN];
      virtual void WMRButtonDown(RTMessage Msg)
        = [WM_FIRST + WM_RBUTTONDOWN];
    };

    BOOL TMyWindow::CanClose()
    {
      return MessageBox(HWindow, "Do you want to save?",
        "Drawing has changed", MB_YESNO | MB_ICONQUESTION) == IDNO;
    }

    void TMyWindow::WMLButtonDown(RTMessage)
    {
      MessageBox(HWindow, "You have pressed the left mouse button",
                 "Message Dispatched", MB_OK);
    }

    void TMyWindow::WMRButtonDown(RTMessage)
    {
      MessageBox(HWindow, "You have pressed the right mouse button",
                 "Message Dispatched", MB_OK);
    }

    void TMyApp::InitMainWindow()
    {
      MainWindow = new TMyWindow(NULL, Name);
    }

    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
      LPSTR lpCmdLine, int nCmdShow)
    {
      TMyApp MyApp("Simple ObjectWindows Program", hInstance,
                   hPrevInstance, lpCmdLine, nCmdShow);
      MyApp.Run();
      return MyApp.Status;
    }
    !!!  STEP2.CPP

          3. 뢮 ଠ樨  

     ⮩   த ᮢ襭⢮ 襩 ਪ
ணࠬ,  ᫥ ॠ樨  3  筮 ᫨誮
ਬ⨢  窨 ७ . ࢮ   ᤥ,  뢥
⥪    襩 ணࠬ. ⥬,  ८ࠧ㥬  ணࠬ
 讥 ᪮ ਫ, ᯮᮡ ⢫ 뢮  
 . ᫥ ⮣  ⠢  ᮢ 뢥
 ଠ,   ⮬ ⮫騭 ,  , 稬
 ࠭ 䨪  䠩  ᫥饩 㧪.

          ⠪ ⥪ 뢮 ?

       ⥪ 뢮  ।⠢ 孮 ,
।祭  뢮 ଠ樨. ⥪ 뢮 室 Windows
 ᮢ  ।  ᪮  ⥪⮢ ଠ樨.
ਯ ⥪ 뢮,  䨪,  易⥫쭮
। 㭪樨 "ᮢ" 䥩 ᪨ ன Windows
(GDI).
    । 뢮  ,    ⥪ 뢮.  砫
 뢮  ࠭, 맮    㭪権- 
ꥪ 㭪 Windows GetDC:
    TheDC = GetDC(HWindow);
    GetDC 頥 ਯ ⥪ 뢮 (।塞  Windows
⨯ HDC),   ⥯ । 㭪 Windows GDI. ਢ
᪮쪮 ਬ஢ 맮 GDI:
    LineTo(TheDC, 30, 45);
    Rectangle(TheDC, 100, 100, 200, 200);
    TextOut(TheDC, 20, 20, "Sample text", 11);
    ᫥ 襭 뢮 ⥪  䨪  易 ᢮
⥪ 뢮. ᯥ祭 ᢮ ⥪ 뢮 
  .  ⮫쪮  稫 뢮, ᢮ 祭
⥪.
    ReleaseDC(HWindow, TheDC);
     !!!
    ᫨   ᢮  祭 ⥪ 뢮,  ᪮ 
௠  ( । Windows     ⥪⮢),  
ணࠬ  ਩,   ᠭ .  ਩
襭 ࠡ 襩 ਪ ணࠬ  祭 4-5 ࠧ  
⢫ 뢮  ࠭, ᠬ ⭮ 稭 
᢮ ⥪ 뢮.
    ⥪ 뢮 믮 ᪮쪮  㭪権. ࢮ, 
࠭,   ⢫ 뢮 ⥪  䨪  ।
࠭  .   䨪 뢮 㭪ﬨ GDI १ 
࠭   ண 祭 ⥪ 뢮.
    ⥪ 뢮 ⠪ ন  㬥⠫ ।
뢮 (࠭, 窠,   ), ᯮ㥬  맮
㭪権 GDI.  । ਬ, ࠭  ⥪ 뢮 ࠭
㤥 ᯮ짮  ᮢ   맮 㭪樨 LineTo;
ᮢ  㤥  ࠪ⨪ ࠭ ࠭ (
梥  ਭ). 筮, ࠭  ⥪ 뢮 窠 㤥
ᯮ짮 㭪樥 Rectangle  ᪨  אַ㣮쭮
 ᯫ  . ࠭  㤥 ᯮ짮 㭪樥 TextOut
 뢮 ப "Sample Text".
        ⥪ 뢮  㬥⠫ ।⢠
  譥  뢮 ଠ樨. ਬ,  
 ᯮ짮   蠡, ࠭ 㣮 梥 
ࠧ ⨫ . 롮  ࠭    5.

          3 : 뢮   ⥪⮢ ଠ樨

    뢮 ⥪    襩 ਪ ணࠬ  㤥
⢫ ᮣ᭮ ᠭ  : 砫 稬 ⥪
뢮, ⥬ ந ᮡ⢥ 樨 뢮, , , ᢮
⥪ 뢮.  楫 ᤥ  ணࠬ  ᭮, 㤥
뢮 ⥪  ⢥  ⨥   "".  뫪
 ᮮ饭 (     2),  㤥 뢮 न
窨  ன 室 㪠⥫ ""  ⨨  .
     ਬ   ࠧ   ⥬ न Windows.
ਬ, "(20,30)" 뢮  砥,   ""  
窥, ᯮ  20 ᥫ ࠢ  30 ᥫ   孥
 㣫  뢮  (  짮⥫).  뢮
 窥 宦 㪠⥫ ""   .

    㭮 3.1 뢮 न 窨 宦 㪠⥫ ""  
                  .

    ,  ᮡ⨥    ਢ  樨
ᮮ饭 WM_LBUTTONDOWN, ஥ ࠡ뢠 㭪樥-⮩
⢥  ᮮ饭 WMLButtonDown.

     ᮮ饭

      2  㧭,  㬥 Msg, । 㭪樨-
⢥  ᮮ饭 뫪   TMessage (㪮祭  ⨯
RTMessage), ᮤন ଠ  ந襤襬 ᮡ⨨.   ࠭
   LParam  WParam (⨯ LONG  WORD ᮮ⢥⢥).
    Msg.LParam  ᮤন  ᪠ ଠ樨,  -  襬,
ன -  襬 ᫮. LParam    ꥤ 
ᮡ  LP,    Hi  Lo ⨯ WORD. ⮬
  ᯮ짮 Msg.LP.Hi  Msg.LP.Lo  뫪  訥 
訥 ᫮ Msg.LParam. 筮, WParam   
ꥤ  ᮡ c WP.  Windows । ᯮ
 Hi  Lo  WP.
     砥 WMLButtonDown Msg.LP.Lo ᮤন न  窨 , 
Msg.LP.Hi - न . ⮡ ⠢ WMLButtonDown 뢮 न
窨    ८ࠧ Msg.LP.Lo  Msg.LP.Hi  ⥪ 
  㭪樨.  ⮬ ਬ  ஥ 뢮 ப
ᯮ 㭪 sprintf.
     ⮫쪮  ᮧ 뢮 ப   뤠   ࠭ 
,  뫠  .  ⮣  뢠 Windows 㭪
TextOut  ।祩  ⥪ 뢮, न 窨 (Msg.LP.Lo 
Msg.LP.Hi), ப S   ப strlen(S).  㤥 ⠪  
᢮ ⥪ 뢮.

    void TMyWindow::WMLButtonDown(RTMessage Msg)
    {
      HDC DC;
      char S[10];
      sprintf(S, "(%d,%d)", Msg.LP.Lo, Msg.LP.Hi);
      DC = GetDC(HWindow);
      TextOut(DC, Msg.LP.Lo, Msg.LP.Hi, S, strlen(S));
      ReleaseDC(HWindow, DC);
    }
    !!!  ࠣ ணࠬ  䠩 STEP3.CPP.

    ⪠ ࠭

         㭪   ਪ ணࠬ 뢮
⥪ - 㭪 ⪨ ࠭. ⨬,  ᫨   
ࠧ   뢠  뢠 ,  뢥 ⥪
㤠. ,    ਭ㤨⥫쭮  ࠭  ⢥
 롮 㭪    ⢨ 짮⥫, ਬ ⨥
 "".
     㤥    ⢥  ⨥ ஢  "". 
ॠ樨 ⮣  ८। 㭪- WMRButtonDown ⠪,
⮡  뢠 Windows 㭪 InvalidateRect  㬥⠬ 
 ᥣ . ᪮     㬥 訢 ᠬ
ᥡ,   ⮫쪮 頥  짮⥫:

    void TMyWindow::WMLButtonDown(RTMessage)
    {
      InvalidateRect(HWindow, NULL, TRUE);
    }
    !!!  ࠣ ணࠬ  䠩 STEP3.CPP.

          4 : ᮢ   

       㦥  ᫥⥫쭮 ⢨  뢮
ଠ樨 (祭 ⥪ 뢮, ᮡ⢥ 뢮  ᢮
⥪ 뢮),   ᮧ  ᫮, ࠪ⨢
 ਪ ணࠬ.  ⮩ ᥪ樨  ᮧ 
ணࠬ ᮢ   .
    㥬 ᫥騥 蠣:
    1. ⢥  ⨥   ""   ६饭
㪠⥫    㭪୮    ६饭  ᫥饣
ᮢ   ᯫ譮 .
    2. ⢥  ⨥ ࠢ  "" 뢮  ,
饣 짮⥫  ⮫騭 .
    3. ᮢ  ᢮ ᮤন, ⥬ ࠭ 祪  뢮
   ⢥  ᮮ饭 Paint.
     ᯥ譮 ॠ樨  蠣 室   ६饭
 Windows.

     ६饭

    㤥    ॠ樨 Windows  ᮡ "". 
㦥   2,   ᯮ짮 প DDVT, ⨥
ᮩ  "" ਢ  뤠 ᮮ饭 WM_LBUTTONDOWN  맮
㭪樨- WMLButtonDoown.   ⮬ 㪮⢥  ॠ
⢥   ᮮ饭   뤠  ᮮ饭  뢮  ࠭
⥪⮢ ଠ樨.  ⠪ ,  ⨥  ࠢ  ""
ਢ  뤠 ᮮ饭 WM_RBUTTONDOWN  맮 㭪樨-
WMRButtonDoown.  ⢥砫   ⨥ ⪮ ࠭.   ⢥
ॠ ⮫쪮  砫   "".  
ࠪ⨢ ਪ Windows ணࠬ ॡ, ⮡ ,  
 "", ६頫  㪠⥫  ࠭  ᮢ  
אַ㣮쭨,  ࠧ饭  ।  ᪨ ꥪ⮢.
 ᮧ  ᪮ ணࠬ   墠 ᮡ
६饭  ⢥   ᮢ .
     ॠ ⢥⮬      ᮮ饭. 
짮⥫ ६頥 ""    ,  ਭ ᮮ饭
WM_MOUSEMOVE.  짮⥫ ᪠   "", 
ந室 ਥ ᮮ饭 WM_LBUTTONUP. 筮  砥 
ᮮ饭 WM_LBUTTONDOWN, ⥬  ᮮ饭 WM_MOUSEMOVE    
ᮮ饭 WM_LBUTTONUP. 筠 ᪠ Windows ணࠬ ⢥砥 
ᮮ饭 WM_LBUTTONDOWN 樠樥  뢮 ( 祭
⥪ 뢮).  ᮮ饭 WM_MOUSEMOVE  ॠ 뢮 
६饭 ᪮ ଠ樨, , ,  ᮮ饭 WM_LBUTTONUP
 ॠ 襭  뢮 (᢮ ⥪ 뢮).
     ᫥饩 ⠡ ਢ   砥 ᮮ饭 
ᮡ "".

     3.1   砥 ᮮ饭 "".
-------------------------------------------------------------------
 饭        ⨥
-------------------------------------------------------------------
 WM_LBUTTONDOWN   짮⥫    "".
 WM_RBUTTONDOWN   짮⥫  ࠢ  "".
 WM_MOUSEMOVE     짮⥫ ६⨫ "".
 WM_LBUTTONUP     짮⥫ ⨫   "".
 WM_RBUTTONUP     짮⥫ ⨫ ࠢ  "".
 WM_LBUTTONDBLCLK 짮⥫     "".
 WM_RBUTTONDBLCLK 짮⥫   ࠢ  "".
-------------------------------------------------------------------

      ᮮ饭 ६饭

     ᫥饩 ⠡ ਢ ⢥  ᮮ饭 ६饭 
ᮧ  ணࠬ ᮢ :

     3.2 饭, ᯮ㥬   4.
-------------------------------------------------------------------------
 饭      
-------------------------------------------------------------------------
 WM_LBUTTONDOWN  ࠭. ⥬  ⥪ 뢮  
                  DragDC. 樮஢ ࠭ ᮢ  ,
                 ன  .
 WM_MOUSEMOVE   ᮢ   ।饩 窨  ⥪饩 窨,
                ᫨  ""   .
 WM_LBUTTONUP   ᢮ DragDC.
-------------------------------------------------------------------------
     ਫ ࠭,  ᮮ饭 WM_LBUTTONDOWN ᥣ ᫥
ᮮ饭 WM_LBUTTONUP,    ᮮ饭 WM_MOUSEMOVE  . 
 砥 ᮮ饭 WM_LBUTTONDOWN    ⥪ 뢮 
᢮   ᮮ饭 WM_LBUTTONUP.  㤥 ᯮ짮 
⥪ 뢮   権 뢮  짮⥫  
 "".
    ⠭ 祭 ⥪ 뢮   ᢮ 
易⥫ ᫮ ࠢ쭮 㭪樮஢ 襩 ணࠬ. ,
      ᭮.  TMuWindow, 
 , ।    BOOL   ButtonDown.
WMLButtonDown ⠭   TRUE,  WMLButtonUp  FALSE. ᫥ ⮣ 
 ஢ 祭 ButtonValue  祭  ᢮ ⥪
뢮.
     ਢ  㭪樨- ⢥  ᮡ "":

    void TMyWindow::WMLButtonDown(RTMessage Msg)
    {
      InvalidateRect(HWindow, NULL, TRUE);
      if ( !ButtonDown )
      {
        ButtonDown = TRUE;
        SetCapture(HWindow);
        DragDC = GetDC(HWindow);
        MoveTo(DragDC, Msg.LP.Lo, Msg.LP.Hi);
      }
    }

    void TMyWindow::WMMouseMove(RTMessage Msg)
    {
      if ( ButtonDown )
        LineTo(DragDC, Msg.LP.Lo, Msg.LP.Hi);
    }

    void TMyWindow::WMLButtonUp(RTMessage)
    {
      if ( ButtonDown )
      {
        ButtonDown = FALSE;
        ReleaseCapture();
        ReleaseDC(HWindow, DragDC);
      }
    }
    !!!  ࠣ ணࠬ  䠩 STEP4.CPP.

     !!!
    MoveTo  LineTo  ᪨ 㭪ﬨ Windows API, 
६ ⥪  뢮     ⥪饩 樨,
ᮮ⢥⢥.  ॡ । 㪠⥫  ⥪ 뢮, ⮬
TMyWindow ࠭   ᢮   DragDC. (,  
⢫塞 뢮  ।⢥  ,   ⥪ 뢮).
    ᫨ 㪠⥫ "" ६頥  । TMyWindow, ᮮ饭
WM_MOUSEMOVE 뫠    ⮬ 砥,   㪠⥫
樮  ᥤ .  ந室 - ⮣,  TMyWindow
墠뢠 室  "" १ 饭  SetCapture. (
 "" ᢮ १ 맮 ReleaseCapture).
    ,   । ꥪ  TMyWindow  
㭪権- WMMouseMove  WMLButtonUp:

    virtual void WMLButtonDown(RTMessage Msg)
     = [WM_FIRST + WM_LBUTTONDOWN];
    virtual void WMLButtonUp(RTMessage Msg)
     = [WM_FIRST + WM_LBUTTONUP];
    !!!  ࠣ ணࠬ  䠩 STEP4.CPP.

          5 :  ⮫騭 

     饬    ᮢ ⮫쪮 ⮭ . 
ࠤ樮, ᪨ ணࠬ   ⮫騭 㥬
. 쭮,    ᠬ ⮫騭 ,  ⮫쪮 ࠭,
 ந ᮢ. ࠭,   窨,   
 㬥⠫묨 ।⢠ ᮢ, ।⠢塞묨
⥪⮬ 뢮.  ⮬ 蠣   롨 
㬥⠫쭮 ।⢠  ⥪ 뢮   ᮧ 
ਪ ணࠬ ⠭  ⮫騭 㥬 .
     ⠪  ᯮ짮   ( TInputDialog) 
ᯥ祭 堭  짮⥫ ⮫騭 .  㭪 3.2
 ⨢஢  .

    㭮 3.2  ⮫騭 .

    롮  ࠭

     ॠ樨  ⮫騭 㥬   室, 
砫, 㧭    䨪 Windows  ⥪ 뢮 
⭮.
    㬥⠫묨 ।⢠ ᮢ, ᯮ㥬묨  ⮡ࠦ
⥪⮢  ᪮ ଠ樨,  ࠭, 窨  .
ᠭ  ⮢ ᮢ ࠭   Windows 
䥩 . ⮬  ⨯ ⮢  
 ਯ஢. ,  ᮢ  ।⠢ ꥪ⠬
ObjectWindows. ⥫쭮, ⮫쪮  襩 ணࠬ 
⢥⢥  ᮧ  㤠 ᯮ㥬 㬥⠫
। ᮢ.
     !!!
    ⠢ 㬥⠫ ।   ⥫쭮
ந⥫쭮 室  Windows.
    ।⠢ 㬥⠫ ।⢠ ᮢ   㤮,
 ⥪ 뢮  宫.  ⮫쪮 騩   㬥⠫
।⢠ (窨)  ⥪ 뢮 (宫),   롨ࠥ 㦭
।⢮  稭 ᮢ. 筮, Windows ணࠬ  
㬥⠫쭮 ।⢮ ᮢ  ⥪ 뢮.    
 ᮢ   ⥪    롮 㬥⠫쭮 ।⢠
ᮢ ?  ⥪ 뢮   ᢮ ⠢ 
㬥⠫ ।, ਭ  㬮砭: ⮭  ࠭,
⮫    ⥬ .  襬 ਫ  롥६ 
ᮢ     ⮭ ࠭.
     蠣 ॠ㥬  襬 ਫ প  .
প   ।  䠩  INPUTDIA.H. 
   室 䠩 ..   ।,   ।
   䠩 .RC.    ।  䠩
INPUTDIA.DLG. 稬  䠩   䠩 .RC.  STERS.RC ᮤন 
। ᮢ, ᯮ㥬  ᮧ  ਪ ணࠬ.
 ⮬ 蠣 䠩 ᮢ .RC 룫廊 ⠪
    #include "windows.h"
    #include "owlrc.h"
    rcinclude inputdia.dlg
    騬 蠣   TMyWindow    ࠭
ਯ 㬥⠫쭮 ।⢠ ࠭,   㤥
ᯮ짮  뢮 䨪.  襩 ணࠬ ࠭稬 ⮫쪮
ᮢ  ⮡ࠦ ,  ⮫쪮  祭 ⮫騭 
 ⥪騩  ६. ࠭, ᮮ⢥騩 ⮩ ⮫騭,
㤥 ࠭     TMyWindow, 뢠 ThePen. 
⠪ ᮧ 㭪- SetPenSize, ⢥  ᮧ
 ࠭  㤠 ண.   TMyWindow ⥯
㤥 룫拉 ⠪:

    _CLASSDEF(TMyWindow)
    class TMyWindow : public TWindow
    {
    public:
      HDC DragDC;
    BOOL ButtonDown;
    HPEN ThePen;
    int PenSize;
    TMyWindow(PTWindowsObject AParent, LPSTR ATitle);
    ~TMyWindow();
    virtual BOOL CanClose();
    void SetPenSize(int NewSize);
    virtual void WMLButtonDown(RTMessage Msg)
     = [WM_FIRST + WM_LBUTTONDOWN];
    virtual void WMLButtonUp(RTMessage Msg)
     = [WM_FIRST + WM_LBUTTONUP];
    virtual void WMMouseMove(RTMessage Msg)
     = [WM_FIRST + WM_MOUSEMOVE];
    virtual void WMRButtonDown(RTMessage Msg)
     = [WM_FIRST + WM_RBUTTONDOWN];
    };
    !!!  ࠣ ணࠬ  䠩 STEP5.CPP.

     樠樨      
 窨 ७ ⠭ ࠭,  ।   㤠
࠭.

    TMyWindow(PTWindowsObject AParent, LPSTR ATitle)
       : TWindow(Aparent, ATitle)
    {
       ButtonDown = FALSE;
       PenSize = 1;
       ThePen = CreatePen(PS_SOLID, PenSize, 0);
    }

    TMyWindow::~TMyWindow()
    {
      DeleteObject(ThePen);
    }
    !!!  ࠣ ணࠬ  䠩 STEP5.CPP.

      㭪- WMLButtonDown ⠪, ⮡  롨ࠫ
⥪騩 ࠭ (ThePen)  ᫥ 祭 ⥪ 뢮.

    void TMyWindow::WMLButtonDown(RTMEssage Msg)
    {
      InvalidateRect(HWindow, NULL, TRUE);
      if ( !ButtonDown)
      {
        ButtonDown = TRUE;
        SetCapture(HWindow);
        DragDC = GetDC(HWindow);
        SelectObject(DragDC, ThePen);
        MoveTo(DragDC, Msg.LP.Lo, Msg.LP.Hi);
      }
    }
    !!!  ࠣ ணࠬ  䠩 STEP5.CPP.
    !!!  MoveTo  MessageBox, SelectObject  㭪樥 Windows
API.

     ࠭

    ᠭ  㭪- 롨ࠥ  ⥪ 뢮 㦥 ࠭
ᮧ ࠭.  ᮧ  ࠭  室 ।
᫥ 㭪- SetPenSize:

    void TMyWindow::SetPenSize(int NewSize)
    {
      DeleteObject(ThePen);
      ThePen = CreatePen(PS_SOLID, NewSize, 0);
      PenSize = NewSize;
    }
    !!!  ࠣ ணࠬ  䠩 STEP5.CPP.

     !!!
      ᯮᮡ ᮧ ࠭   ⮫騭  맮
Windows 㭪樨 CreatePen:  ࠭ ਯ ࠭  ThePen.
 ।饣 ࠭  ⮬ 砥  祭  蠣:
᫨   㤠 ,   ਢ  த⨢ 室 
Windows   ࠡ.

      

    ⨥ ࠢ  ""  㤮 ᯮᮡ ⨢樨
।⢠  ⮫騭 .  ८। 㭪-
WMRButtonDown ⨢   ,   
। ObjectWindows.    㯠   
, 騩  ⥪⮢ ப  짮⥫.
     ⮫쪮 ꥪ   ᪮஢,   ᪠ 
맮 TModule::ExecDialog   . ExecDialog, ᯮ㥬
  ꥪ⮢, 筠 MakeWindow,  ᯮ 
   ꥪ⮢ ।⠢   .
 㭪樨 ᮧ 䥩 , ⮫쪮 ᫨ 䥩 ꥪ
  ஢७. ExecDialog, , 頥 祭 ⮫쪮 ᫥
⮣,  짮⥫   ⨥   Cancel. ᫨
짮⥫  ,  InputText   짮⥫
ଠ樥. ᪮  訢 ᫮ ⮫騭 ,   
८ࠧ 饭 ⥪  ᫮,  ।  맮 SetPenSize.
 ࠧ,  짮⥫ 롨ࠥ  ⮫騭 , 㤠
 ࠭  ᮧ .

    void TMyWindow::WMRButtonDown(RTMessage)
    {
      char InputText[6];
      int NewPenSize;

      sprintf(InputText, "%d", PenSize);
      if ( GetApplication()->ExecDialog(new TInputDialog(this, "Line
                                        Thickness", "Input a new
                                        thickness:", InputText, sizeof
                                        InputText)) == IDOK )
      {
        NewPenSize = atoi(InputText);
        if ( NewPenSize < 0 )
          NewPenSize = 1;
        SetPenSize(NewPenSize);
      }

          6 : 뢮 ᪮ ଠ樨

      㤥 㤨,  㧭,  뢥   
 㭪権 Windows  TextOut  LineTo 䨪  ⥪ 砧
  ࠧ஢  ⨨ . 㤠   ?
    ࠢ쭥 㤥 㫨஢  "  뫨  砫 ?". 
  ࠭ ⥪      ⨯ ६. 
⮫쪮 ᪨  뫨 ᫠  ࠭   㭪権 Windows,
 㦥       ᮢ.  ॠ樨
ᮢ ᪮ ଠ樨  ,   ࠭ 䨪 
 㣨 ⨯ ; ꥪ    室  ⮩
. ꥪ  ࠭   ᫮  ଠ, 
  ࠡ뢠     .

     ᮢ

     ࠦ     ॡ , 
⢫ ᮢ, Windows 뫠 襩 ਪ ணࠬ
ᮮ饭 WM_PAINT. ਬ, ᮮ饭 WM_PAINT 뫠   
   ॡ 짮⥫  ᢮ ࠧ 
뢠. ObjectWindows 墠뢠 ᮮ饭 WM_PAINT  뢠
㭪- 襣  WMPaint.
    ObjectWindows । 㭪- WMPaint,  뢠
㠫 㭪 Paint, ⢫ 室  ⠭ 
⪨   ᫥ 맮. ८। Paint  , ந 
TWindows,  楫 ᮢ 襣  ࠦ.
      ⢥ ࠧ稥  뢮 䨪 
㭪樨- Paint   㣨 ,  ⢥  ⢨ "".
ᯮ㥬  ᮢ ⥪ 뢮 ।  ࠬ PaintDC,
⮬ 襩 ணࠬ     ᢮ . , 
 㤥    PaintDC 㬥⠫쭮 ।⢮ ᮢ.
     ᮢ ᮤন 襣 ,  ⢨
⢫塞  ਣ쭮 ᮢ  DragDC,   ᯮ짮
PaintDC.  䥪 㤥    ᮢ   ࠧ, ஥
⢫﫮 짮⥫.  㤥 祭 宦  १
㤨:  ॠ쭮   ObjectWindows ?  ᯥࢠ  
࠭ ᪨ , 室  襩 㭪樨-
Paint.

    ࠭ 䨪  ꥪ

      4  ,   ࠦ ࢮ砫쭮  ⢥ 
ᮮ饭 WM_MOUSEMOVE.  ᮮ饭 ᮤঠ ⥪饥  㪠⥫
"",     न 窨  ࠦ .  ᮢ
ᮥ 祪, 뫠   ⨬ ᮮ饭. 砥
न 祪   ᪨ 묨, 室묨 
ᮢ .
     ।⠢  祪  㤥 ᯮ짮 ꥪ TPoint,
, ந  Object. (   ᯮ짮   
,   ꥪ,   㤥 ࠭  ꥪ TPoint   
⥩஢ ⥪ ⥩ ᮢ,   ,  ᢮ ।,
ॡ ꥪ, ந  Object.  ⮣,  ᫥ 蠣 
  TPoint 㭪樨-).
     㤥 ࠭ ꥪ TPoint    TMyWindow,
뢠 Points. Points 㤥  ஬ ⨯ TPointArray,
  稬  ⥩୮  Array.  㤥 ᯮ짮
TPointArray,   Array, ⠪   饬    TPointArray 
, 㯭  Array.   ꥪ Array ( ந 
Array )  ᪨ 㢥稢騬,   祭 㤮
 ࠭ ६ ᫠ 祪. ꥪ Array  㣨 ⥩
 ᠭ  㬥樨  襬 . ਢ 
। TPoint:

    class TPoint: public Object {
    public:
      int X, Y;
      TPoint(int AX, int AY) {X = AX, Y = AY;}
    ...
    };

     ਢ  । TPointArray:

    _CLASSDEF(TPointArray)
    class TPointArray : public Array
    {
      TPointArray(int upper, int lower = 0, sizeType aDelta = 0) :
                  Array(upper, lower, aDelta) {};
      void DeleteAll();
    ...
    };
    !!!  ࠣ ணࠬ  䠩 STEP6.CPP.

    ﭥ ⥯    TMyWindow c 
⮩  Points:

    _CLASSDEF(TPointArray)
    class TPointArray : public Array
    {
    ...
      PPointArray Points;
    ...
    };
    !!!  ࠣ ணࠬ  䠩 STEP6.CPP.

    ,  Points    TMyWindow 
㤠   TMyWindow.

    TMyWindow::TMyWindow(PTWindowsObject AParent, LPSTR ATitle)
      : TWindow(AParent, ATitle)
    {
      ButtonDown = FALSE;
      PenSize = 1;
      ThePen = CreatePen(PS_SOLID, PenSize, 0);
      Points = new TPointArray(50, 0 , 50);
    }

    TMyWindow::~TMyWindow()
    {
      delete Points;
      DeleteObject(ThePen);
    }
    !!!  ࠣ ணࠬ  䠩 STEP6.CPP.
       WMLButtonDown  WMMouseMove  ⠭ Points.

    void TMyWindow::WMLButtonDown(RTMessage Msg)
    {
      Points->DeleteAll();
      InvalidateRect(HWindow, NULL, TRUE);
      if ( !ButtonDown )
      {
        ButtonDown = TRUE;
        SetCapture(HWindow);
        DragDC = GetDC(HWindow);
        SelectObject(DragDC, ThePen);
        MoveTo(DragDC, Msg.LP.Lo, Msg.LP.Hi);
        Points->add(* (new TPoint(Msg.LP.Lo, Msg.LP.Hi)));
      }
    }

    void TMyWindow::WMMouseMove(RTMessage Msg)
    {
      if ( ButtonDown )
      {
        LineTo(DragDC, Msg.LP.Lo, Msg.LP.Hi);
        Points->add(* (new TPoint(Msg.LP.Lo, Msg.LP.Hi)));
      }
    }

    !!!  ᠭ ⥪ ⥩ ᮢ  祭
ଠ樨  ࠡ ArrayIterator.
    WMLButtonUp  ॡ 䨪樨.  TMyWindow::WMLButtonDown 
砫     Points 頥  ꥪ⮢ Toint
맮 㭪樨- TPointArray::DeleteALL:

    void TPointArray::DeleteAll()
    {
      RArrayIterator PoitIterator = (RArrayIterator)initIterator();

      while ( int(PointIterator) != 0 )
      {
        RObject AnObject = PointIterator++;
        if ( AnObject != NOOBJECT )
          detach(AnObject, 1);      // ࠧꥤ  㤠
      }
      delete &PointIterator;
    }
    !!!  ࠣ ணࠬ  䠩 STEP6.CPP.

    ᮢ ࠭ ᪮ ଠ樨

      Points ,    ணࠬ 
ࠦ TMyWindow ᮢ   묨 ᥤ 窠.
 ᮧ  TMyWindow 㭪- Paint,  㤥 
⢨  㭪権- WMLButtonDown  WMMouseMove, ᯮ
  Points.  ਢ । 㭪樨-
Paint:

    void TMyWindow::Paint(HDC DC, PAINTSTRUCT&)
    {
      RArrayIterator PointIterator =
                     (RArrayIterator)(Points->initIterator());
      BOOL First = TRUE;

      SelectObject(DC, ThePen);
      while ( int(PointIterator) != 0 )
      {
        RObject AnObject = PointIterator++;
        if ( AnObject != NOOBJECT )
        {
          if ( First )
          {
            MoveTo(DC, ((PTPoint)(&AnObject))->X,
                       ((PTPoint(&AnObject))->Y);
            First = FALSE;
          }
          else
            LineTo(DC, ((PTPoint)(&AnObject))->X,
                       ((PTPoint(&AnObject))->Y);
        }
      }
      delete &PointIterator;
    }
    !!!  ࠣ ணࠬ  䠩 STEP6.CPP.
     ⢫ ᮢ   襩 ਪ ணࠬ
࠭    Points 㪠⥫  TPointArray.  ᮢ
짮⥫ ,  砥 ᮮ饭 WM_MOUSEMOVE, ᮤঠ饥
न 㪠⥫ "".   ᪮஢ ꥪ TPoint,
ᮤঠ騥  न,    TPoint  ᨢ Points. ⥬,
 室 ᮢ ,    ᮢ 㦭
, ᮥ 窨 TPoint.



     4.  

    設⢮ ਪ Windows ணࠬ ন   ⠢
᢮  .  ᯥ稢 짮⥫ ࠧࠧ
 롮, ⠪  File|Save (|࠭), File|Open
(|)  Help ().  ⮩      ਪ
ணࠬ ⠭⭮ .
      । 롮   祭   "": 
 ᮡﬨ, 樠㥬묨 짮⥫. ⢥  롮  
祭  ⢥  㣨 ⢨ 짮⥫.  ⮩  
襬 ᫥騥 易⥫ 蠣    ਪ ணࠬ:
    1. ᠭ    .
    2. 㧪    ꥪ  .
    3. । ⢥  롮  .
    4.  ਪ ணࠬ  祭 ᯮ塞 䠩.
    5.     ᯮ塞 䠩.

          

     ਪ ணࠬ, ॠ饩 - , 易⥫쭮 
室 ᥪ  ᯥ䨪樨,  ᮤন ⥪ 㭪⮢  
  㭪⮢   㭪⮢.  ਫ ⠪
ন "稥"  (뢠 ᥫࠬ)  㭪⮢
.  롮   "" 㭪  Edit|Paste, 
⢫   ⢨,     Shift+Ins ("稥"
  ⮣ 㭪).
       ᥫ    室  ணࠬ 
++.    ⤥쭮 ᯥ䨪樨, 뢠 ᮬ.
Windows ࠭   ⭮  㤮   .
    ਪ ணࠬ ⢫  ᢮ ਪ९ ᠬ
 䨪 ᮢ.  䨪 ।⠢ ᮡ
楫 ᫮, ਬ 100,  ப, ਬ "MyMenu". ਪ
ணࠬ ࠧ砥 㭪   䨪 , ᢠ
  㭪.
     ᮧ   ᯮ । ᮢ  RC,
 ᮢ  ப.  䠩 STEPS.RC ᮤঠ 
室 ଠ  室 襩 ਪ ணࠬ  .
᫨  ᯮ  Borland C++,     䠩 STEPS.RC 
஥ 襩 ਪ ணࠬ,  ⥬  ⮬᪨ ࠭᫨
  ᯮ짮 RC. ਢ ᮤন 䠩 STEPS.RC:

    #include <windows.h>
    #include <owlrc.h>
    #include "steps.h"

    rcinclude inputdia.dlg
    rcinclude filedia.dlg

    COMMANDS MENU LOADONCALL MOVEABLE PURE DISCARDABLE
    BEGIN
      POPUP "&File"
      BEGIN
        MenuItem "&New", CM_FILENEW
        MenuItem "&Open", CM_FILEOPEN
        MenuItem "&Save", CM_FILESAVE
        MenuItem "&Save&As", CM_FILESAVEAS
      END
      MenuItem "&Help", CM_HELP
    END

     㭪 4.1  譨  ⮣  (䨪 ᮢ
"COMMANDS"), 饣 㭪 HELP (䨪  CM_HELP)  File,
᫥  㭪⠬ New, Open, Save  SaveAs (䨪 
CM_FILENEW, CM_FILEOPEN, CM_FILESAVE  CM_FILESAVEAS, ᮮ⢥⢥).
㭪  孥 ஢ 饣 㭪,  ਬ File,  
᢮ 䨪 ,  롮 ⠪ 㭪 ਢ ⮫쪮  
 㭪⮢. ᫨ 㭪  孥 ஢   ᮡ⢥
㭪⮢,  ਬ Help,    ᢮ 䨪   
뢠 믮  ⢨.

    㭮 4.1 ਪ ணࠬ  ᮬ .

    ᪮  ᮧ  ணࠬ ObjectWindows  ⠪ 
ࠢ   ,    室 ॠ뢠
  ⢥ ꥪ.  ⮣, ᤥ  ਡ⮬ 
,  ਡ  .   7     
 .

          7 :    

     ⬥砫 ,  ਪ ணࠬ   ⤥
ꥪ⮬, 楬 ண   . ᪨,  
 ꥪ,   ਡ  .  ࠭   Menu
   ꥪ Attr.  ⮩  ࠭
ਡ ᮧ .  ⠭ ਡ , । ⠫
ਡ⮢, 맮 AssignMenu   襣 .
     , ࠭  䠩 STEPS.RC,  䨪 
"COMMANDS".  襬 砥 맮 AssignMenu 㤥 룫拉 ᫥騬
ࠧ:
    AssignMenu("COMMANDS");
    ᫨     ᯮ 楫᫥ 䨪
ᮢ,    ᯮ짮 ॣ㦥 㭪-
AssignMenu:
    AssignMenu(100);
      ਢ ᠭ  TMyWindow. ⨬, 
 TMyWindow 뢠  ⢫ 樠樨,
室    ꥪ⮢.

    TMyWindow::TMyWindow(PTWindowsObject AParent, LPSTR ATitle)
      : TWindow(AParent, ATitle)
    {
      AssignMenu("COMMANDS");
      ButtonDown = FALSE;
      PenSize = 1;
      ThePen = CreatePen(PS_SOLID, PenSize, 0);
      Points = new TPointArray(50, 0 , 50);
    }
    !!!  ࠣ ணࠬ  䠩 STEP7.CPP.
      ᢥ稢     ,  
㭪 4.1. , ⮡ 롮 㭪⮢  ਢ  ⢫
 ⢨,   ॠ ⠢訥 蠣.

         墠 ᮮ饭 

     짮⥫ 롨ࠥ 㭪   ,  ᯮ
ᥫ,   砥  ᮮ饭 Windows.  ࠡ⪨
뫠  ᮮ饭,  ObjectWindows ।
㭪樨- ⢥  .  㭪権- ⢥ 
 ᯮ ᯥ樠쭮 , 饥 :
    virtual void CMFileNew(RTMessage Msg) = [CM_FIRST + CM_FILENEW];
,  CM_FIRST  ⠭⮩, ।塞  ObjectWindows, 
⠭, ।⠢ 䨪 ᮮ⢥饣 㭪 . 
⮬ ਬ  CM_FILENEW, ।塞  OWLRC.H (⮬    
।). , ᫨  ।  ᮡ⢥ 㭪 , 
 㤥  Help,   ।  ⠭, ਬ #define
CM_FIRST 201.    ⠭ 䨪஢ ᮢ  䠩
,  ⥬, ⮡      䠩 .  .RC. ⨬,
  䨪樨 㭪樨- ⢥   ᯮ
ᯥ樠쭮 ७ CM_FIRST.  ⠩   ७ WM_FIRST,
ᯮ㥬  䨪樨 㭪権- ⢥  ᮮ饭 .
    ᥬ 㭪-⠬ ⢥ ।  ⢥ ࠬ 뫪
  TMessage (⨯ RMessage). ,    
ᯮ 쭮 ।. Msg.WParam ᮤন 䨪 ࠭
㭪 ,    㦥 .     
Msg.LP.Hi, ᮤঠ 1, ᫨ ᮮ饭 ᫠  ᯮ짮
ᥫ. Msg.LPLo ᥣ ᮤন 0.
         㭪樨- ⢥ 
ᮮ饭  ᯮ짮 ⠭ 䨪஢ ᮢ, ᠭ
. ⨬,  CM_HELP ।  䠩 STEPS.H,    OWLRC.H.

    virtual void CMFileNew(RTMessage Msg) = [CM_FIRST + CM_FILENEW];
    virtual void CMFileOpen(RTMessage Msg) = [CM_FIRST + CM_FILEOPEN];
    virtual void CMFileSave(RTMessage Msg) = [CM_FIRST + CM_FILESAVE];
    virtual void CMFileSaveAs(RTMessage Msg) = [CM_FIRST + CM_FILESAVEAS];
    virtual void CMFileHelp(RTMessage Msg) = [CM_FIRST + CM_FILEHELP];
    !!!  ࠣ ணࠬ  䠩 STEP7.CPP.

         ⢥  ᮮ饭 

         㭪  㭪-, 
뢠   롮. ਬ,  롮 㭪  Help 뢠
㭪- CMHelp.   㤥 뢮  ᮮ饭:

    void TMyWindow::CMHelp(RTMessage)
    {
      MessageBox(HWindow, "Feature not implemented", "Help", MB_OK);
    }
    !!!  ࠣ ணࠬ  䠩 STEP7.CPP.
     㭪 4.2  ⢥ 襩 ਪ ணࠬ  롮 㭪
 Help.

    㭮 4.2 ਪ ணࠬ  ⥬ 

     ⮬ ⠯   ॠ஢  롮 㭪  File|New
⪮ ࠭.  ⮣  ᫥ 㭪- CMFileNew:

    void TMyWindow::CMFileNew(RTMessage)
    {
      Points->DeleteAll();
      InvalidateRect(HWindow, NULL, TRUE);
    }
    !!!  ࠣ ணࠬ  䠩 STEP7.CPP.
     㭪- 㤠  ࠭ 窨  ᮢ뢠
࠭.  ⠭ , ⠪    窨  ⠥.
     ᮮ饭 CM_OPEN, CM_SAVE  CM_SAVEAS  
㭪樨-,  CMHelp.   ८।  
믮  ⢨.
     ணࠬ ॠ樨 ⢨ ⮣ 蠣 室  䠩
STEP7.CPP.

     5. প 

     Windows ணࠬ  , 樨஢  ,
ࠧ ⨯  ꥪ⮢ (, ࠢ騥   ). 
᪫祭  ,  , 뢠 ୨, 
⢥ த⥫᪮ (஦饥) .  த⥫᪮  
 ᪮쪮 ୨ .
     த⢥ ⭮襭   뫨  
ਪ ணࠬ  ᮮ⢮ 易 த⥫᪨  ୨  
 ,  ࢨ த⥫.  ⮬ ᮮ⢥ 設⢮ 
㯠  ୨   ,   த⥫  㣨. 㯯
易 ୨  த⥫᪨   襩 ਪ ணࠬ,
  饬  ॠ ⮫쪮 筮,  
㭪 5.1.
      ⨯ ୨ .  -  ᨬ ୨
.  ⨯ ᠬ ࠢ ᢮ 譨   ⮯. 
ᮮ饭  ᯫ뢠騥   ।⠢⥫ﬨ ⮣ ⨯. 㣮
⨯ -  ᨬ ୨ .  ⨯   孮
᢮ த⥫᪮   ।   . ࠢ騥
, ⠪     ᮮ饭,   㣨 ⨯
୨   ।⠢⥫ﬨ ⮣ ⨯.  ⮬  
ᮧ  ⨯ ᨬ ୨ : ᯫ뢠騥   
.
                  ਪ ணࠬ
                    (TMyApplication)
                          ^
                          
                       <䠩 
                     (TMyWindow)           (TFileDialog)
                          ^
                          
 ।㥬>    <ġ ᯨ᪠
 ࠢ騩         (THelpWindow)         (TListBox)
                ^       ^
 (TEdit)                      Ŀ
                                  
                     
            (TButton)           ࠢ騩 
                                  (TStatic)

    㭮 5.1 㯯 易 த⥫᪨  ୨ 

     த⥫᪨  ୨   ⭮襭 .
ਬ,   8     . 楯  
Windows  筠 楯樨 ,  ୮ 裡, 
ꥪ⭮-ਥ஢ ணࠬ஢. ᪨,  ⮬ 㪮
ꥪ ୥   筮 ࠭    ꥪ⮢
த⥫᪮ .      易⥫,  
訬 ⨫ ணࠬ஢,  ਢ  襬   
⮩ প ணࠬ.

          8 :  ᯫ뢠饣 

        ணࠬ ᯫ뢠饥 , ஥ 
 롮 㭪  Help.    㦨 ᭮ 襩 ⥬
,  㤥 ॠ  쭥 .   ᮧ
ᯫ뢠饥 , 饥 ஬ Window.   10  ᮧ
     묨 묨 ﬨ.
    ᪮   㤥 "" 塞  (⫨  
),  ᬮਬ,   ꥪ    ᮧ 
뢮.

     ᯫ뢠饣 

      7  ॠ஢  롮 㭪  Help 뤠祩 
ᮮ饭.  ⮬ 蠣,     ⮩ ꥪ ᯫ뢠饥 
HelpWindow.  ஬ १   祭   窨
७ 來,   ⢮  ⥩   
  10.
     ⮫쪮 ८। CMHelp  ᮧ  :

    void TMyWindow::CMHelp(RTMessage)
    {
      PTWindow HelpWindow;

      HelpWindow = new TWindow(this, "Help system");
      HelpWindow->Attr.Style |= WS_POPUPWINDOW | WS_CAPTION;
      HelpWindow->Attr.X = 100;
      HelpWindow->Attr.Y = 100;
      HelpWindow->Attr.W = 300;
      HelpWindow->Attr.H = 300;
      GetApplication()->MakeWindow(HelpWindow);
    }
    !!!  ࠣ ணࠬ  䠩 STEP8.CPP.
     ᥪ "樠  ꥪ⮢"   ஡
ଠ樨  ᮧ  ꥪ⮢.

    㭪 MakeWindow

    ꥪ TModule । 祭  㭪- MakeWindow.
MakeWindow ⢫  室 ⢨  ᭮ 뢠
䥩᭮    ꥪ⮬.  ""  , 
MakeWindow ஢  訡   쥧 ஡, 
ᠭ ⥬. MakeWindow ⢫   蠣.
    1. ஢ઠ  ⨬ 䥩᭮ ꥪ.  ⮣ 뢠
㭪 ValidWindow,  ஢  ࠭஢ 室 襩
ਪ ணࠬ  ࠭ ,   ⨢ 砥, 
⪠뢠 ஢  ꥪ.
    2. ᫨ 䥩 ꥪ ᪮஢ ᯥ譮,  MakeWindow
⠥ ᮧ  樨஢  , ⥬ 맮
㭪樨- ꥪ Create. Create ᯮ ଠ 
  ꥪ  㢥 Windows  ⨯ ᮧ
䥩᭮ . ᫨     ᮧ,  뤠 
ᮮ饭  訡.
    ᫨  ஢ઠ  ⨬,  ᮧ 䥩᭮ ,
稫 㤠筮,  MakeWindow 㤠 ⨬  ꥪ 
頥 NULL.  ⨢ 砥, 頥 㪠⥫  䥩
ꥪ, ।   ࠬ.
    맮 MakeWindow    ᯮᮡ ᮧ
䥩 ⮢. 맮 Create ,  ஢ન 室  
᫥ 訡,  ,   ४.

           

       뢠饬 ,  筮  ⠥  ࠭
 祭 ⪮ ஬⪠ ६,  ।祭  ⢫
 ।  ,  ਬ 롮 ਭ  ⠭
࠭ 㬥.      ਪ ணࠬ 
    ࠭ 䠩.
      ᯫ뢠饥 ,    ᨬ ୨
. 楯㠫쭮,    ᮢ  ᠭ ࠭
 ᯫ뢠饣 .    ,  
 ⢥ ࠧ:
    -   ந室   TDialog,    Window. 
 TDialog  Window ந室  TWindowsObject.
    - 筮   ॡ  ᮢ, 뢠  ࠧ,
⮯  譨 .
    -   筮 믮    
 祭. ਬ,  ᮮ饭 CanClose, ᮧ  
2,  ࠭祭 ⨯ , 饣 ⢥ 짮⥫
""  "". ᬮ ⠪   , 訢騩 騭
   5.
        ॠ  ObjectWindows  , 
,  䠩 .  । ᮬ TFileDialog,
騬 ந  TDialog.  䠩   
 ,   訢 짮⥫  롮 ࠭塞 
㦠 ᪮ 䠩. ਬ, ⥪⮢  ᯮ
    뢠  ࠭塞 㬥. 
㤥 뤠  䠩   ⢥  롮 権 
File|Open  File|SaveAs.  䠩    ᮮ饭
"Feature not implemented" ("।⢮  ॠ").   9 
  ॠ묨 䠩  ᬮ ࠭  뢠  
࠭  १ ॠ .  ॠ ⮫쪮  
.  㭪 5.2  譨   䠩 .

    㭮 5.2 ਪ ணࠬ   䠩 .

      

     ࠭ 楫 ꥪ  䠩   
  த⥫᪮ ,  ࠧ   ꥪ 
䠩 .  㤥 ࠭ ⮫쪮 ,   㤥
ᯮ짮   䠩 :  䠩.  㤮 ਥ.
 ࠭  ꥪ⮢,       ,
 ࠭ ,   室묨  樠樨
ᮮ⢥饣 ꥪ.
     ஢  䠩  室  ࠬ:
த⥫᪮ , 䨪⮢    䠩. ।
䨪 ᮢ 㪠뢠  ⠭ ⨯ 䠩 :
""  "" (SD_FILEOPEN  SD_FILESAVE).  ࠭
䠩 㤥 饭  । ࠬ  䠩.  ࠬ
⠪ ᯮ  ।  䠩  㬮砭  䠩
 ࠭,   । 蠡 䠩  㬮砭 
䠩  .
     ᠭ TMyWindow 룫廊 ਬ୮ ⠪:

    class TMyWindow : public TWindow
    {
    ...
      char FileName[MAXPATH];
    ...
    };

    樠  

     ᨬ  ।  TFileDialog 䨪
,    ন ⨥  ࠭ 䠩.
  ॠ   ,   㭪
5.2.     ࠭ 䠩   ࠧ:
    1.   䠩     Cancel (⬥),  
࠭ 䠩  Save  Cancel.
    2.  ࠭ 䠩 ࢮ砫쭮 뢠 ⥪饥  䠩 
 ।஢ ஢  .
    ਢ  ⥪ 㭪- MFileOpen  CMFileSaveAs:

    void TMyWindow::CMFileOpen(RTMessage)
    {
      if ( GetApplication()->ExecDialog(new TFileDialog(this,
           SD_FILEOPEN, strcpy(FileName, "*.PTS"))) == IDOK )
        MessageBox(HWindow, FileName, "Open the file:", MB_OK);
    }

    void TMyWindow::CMFileSaveAs(RTMessage)
      if ( GetApplication()->ExecDialog(new TFileDialog(this,
           SD_FILESAVE, FileName)) == IDOK)
        MessageBox(HWindow, FileName, "Save the file:", MB_OK);
    }
    !!!  ࠣ ணࠬ  䠩 STEP8.CPP.
     ⥪ 襩 ਪ ணࠬ   8 ਢ  䠩
STEP8.CPP.
      ᯮ짮 TApplication::MakeWindow  "᭮" ᮧ
䥩 ⮢, ⠪ ᯮ TApplication::ExecDialog 
᭮ ᮧ  ᯮ  .  MakeWindow,
ExecDialog 뢠 ValidWindow  祭 ࠭⨩,  ஢
ꥪ   諮 ᯥ譮.  ᫨  ⠪,  ExecDialog
뢠 㭪- ꥪ   Execute. ᫥ ࠡ⪨
   ᫨   訡, ExecDialog 頥 祭,
饭 Execute. ᫨  ந諠 訡,  頥 IDCANCEL, 
 ணࠬ ନ  ᫨  짮⥫ ⪮᮫ 
.     砥, ExecDialog 㤠 ꥪ  
 .
    ᯮ짮 ExecDialog  ᠬ  ᯮᮡ
樠樨  .   맢 Execute ,  
ᮯ殮  । ᪮     ⥬.

          9 : ࠭ ᪮ ଠ樨  䠩

    ,  TMyWindow  ।⠢  ⥪饩   
 (  Points),       䠩
(䠪᪨,  䠩 ⮪)    ⭮.  ⮬  
    ࠭ ଠ樨  , 
 㭪樨-    ࠭ 䠩 .PTS.

    ᫥ 

     室 ᫥  ࠪ⨪ ᮢ: 室 
࠭ 䠩 , 㦥  䠩  騩 .  
।⠢  ࠪ⨪  ਡ BOOL  TMyWindow,  ⮬ 
  ⠬ :

    class TMyWindow : public TWindow
    {
    ...
       BOOL IsDirty, IsNewFilw;
    ...
    };

    IsDirty ਭ 祭 TRUE, ᫨ ⥪饥 ࠦ 
"窠". ("窠" 砥,   室 ࠭, -
ᥭ      ᫥ ࠭,  - ⮣,
    ࠭﫮).  짮⥫ 稭 ᮢ
(WMLButtonDown),   ⠭ IsDirty  TRUE.  짮⥫
뢠  䠩,  ࠭  騩,   ⠭
IsDirty  FALSE.  ⨨ 짮⥫ ਪ ணࠬ
(CanClose),   ஢  IsDirty  뢥  ᮮ饭
⮫쪮  砥,   ࠢ TRUE.
    IsNewFile ਭ 祭 TRUE ⮫쪮  砥,   뢥
  ࠧ ᫥ 롮 짮⥫  File | New (CMFileNew). 
⠭  FALSE 直 ࠧ,  䠩  (CMFileOpen) 
࠭ (CMFileSave  CMFileSaveAs). CMFileSave ᯮ IsNewFile 
।,   䠩  ࠭  (FALSE), , 㦭 
짮⥫ 롨  䠩  䠩  (TRUE).
     ਢ ᠭ 㭪樨- CanClose 
㭪権- ࠭  㧪 䠩.  ⮬   
,  ᪫祭 㧪  ࠭ 䠩.  ࠭
䠩 ॠ   㭪樨- SaveFile,  
 -  OpenFile.

    BOOL TMyWindow::CanClose()
    {
      if ( !IsDirty )
        return TRUE;
      return MessageBox(HWindow, "Do you want to save?", "Drawing has
                        changed", MB_YESNO | MB_ICONQUESTION ) == IDNO;
    }

    void TMyWindow::CMFileNew(RTMessage)
    {
      Points->DeleteAll();
      InvalidateRect(HWindow, NULL, TRUE);
      IsDirty = FALSE;
      IsNewFile = TRUE;
    }

    void TMyWindow::CMFileOpen(RTMessage)
    {
      if ( GetApplication()->ExecDialog(new TFileDialog(this,
           SD_FILEOPEN, strcpy(FileName, "*.PTS"))) == IDOK )
        OpenFile();
    }

    void TMyWindow::CMFileSave(RTMessage)
    {
      if ( IsNewFile )
        SaveFileAs();
      else SaveFile();
    }

    void TMyWindow::CMFileSaveAs()
      if ( IsNewFile )
        strcpy(FileName, "");
      if ( GetApplication()->ExecDialog(new TFileDialog(this,
           SD_FILESAVE, FileName)) == IDOK)
        SaveFile();

    void TMyWindow::CMFileSaveAs(RTMessage)
    {
      SaveFileAs();
    }

    void TMyWindow::SaveFile()
    {
      ofpstream os(FileName);

      os << Points;
      os.close();
      IsNewFile = IsDirty = FALSE;
    }

    void TMyWindow::OpenFile()
    {
      ifpstream is(FileName);
      if ( is.bad() )
        MessageBox(HWindow, "Unable to open file", "File Error", MB_OK |
                   MB_ICONEXCLAMATION);
      else
      {
        Points->DeleteAll();
        is >> Points;
        is.close();
        IsNewFile = IsDirty = FALSE;
        InvalidateRect(HWindow, NULL, 1);
      }
    }
    !!!  ࠣ ணࠬ  䠩 STEP8.CPP.

    ⨥  ࠭ 䠩

     ᮧ ।⢮    ࠭ 䠩 .PTS.  ⥭ 
 ᨢ Points ⠥ ⮩ ࠡ⮩,    ஬. 
 믮  ࠡ ॥, ᫨ ᤥ Points ⮪
ᨢ.
     蠣,  ⢥ ᫥  Array  TStreamable.

    _CLASSDEF(TPointArray)
    class TPointArray : public Array, public TStreamable
    {
    public:
      TPointArray(int upper, int lower = 0, sizeType aDelta = 0)
        : Array(upper, lower, aDelta){};
    ...
    protected:
      virtual void write( Ropstream );
      virtual Pvoid read( Ripstream);
    ...
    };
    !!!  ࠣ ணࠬ  䠩 STEP9.CPP.
    㭪樨- write  read  TPointArray 뢠 
뤠   ⥭   TPointArray.  㭪樨-,
ਢ , ⢫ ⢨⥫쭮 ⥭   祪 
TPointArray:

    Pvoid TMyWindow::read(Ripstream is)
    {
      TWindow::read(is);
      is >> Points;
      return this;
    }

    void TMyWindow::write(Ropstream os)
    {
      TWindow::write(os);
      os << Points;
    }
    !!!  ࠣ ணࠬ  䠩 STEP9.CPP.
     㣨 㭪樨-  ।  ⮣, 
TPointArray 㤥  ⮪. ⠢訥 ⮤    䠩
STEP9.CPP, 室饬  ⠫ \EXEMPLES\STEPS.  ᬮਬ
஡  ⮪ 㭪樨-   15.   ⠯ 
筮  ⮫쪮 奬  ⮤.

          6. ᯫ뢠騥 

      ⮢  ᫥    ਪ
ணࠬ  । ObjectWindows: ⥬ .   ।⠢
⥬   ⤥ ணࠬ  襩 ணࠬ, 
뢠    ६.   ⮨ Windows ணࠬ 
 ⢥묨 ,   믮  㭪権.
 ⥬    ᮧ ਪ
ணࠬ  । ObjectWindows   ᮪ ⥯ 㦥⢥ 
짮⥫.

          10 : 뢮 ᯫ뢠饣  

      8      襩 ਪ ணࠬ 
Help. 롮 ⮣  ਢ  뤠 ⮣ , 饣
஬ TWindow.  ⮬    ⮥   
THelpWindow, ஥  ଠ  ᯮ짮 ࠢ ⮢
Windows, ন  ObjectWindows:  ᯨ᪮,  ப⪨,
।㥬 ࠢ ।,  ࠢ ।,  
஢ .   ᮧ,  । ⥬  
⤥쭮 㫥.  ⮬,    ⥫  
⥪  㫥.  㭪 6.1  祭 ⥬
,  ।⠢ ⪨ ᠭ  ࠢ
⮢, ন ObjectWindows.

    㭮 6.1 ⥬  ᮧ  ਪ ணࠬ

         ᯮ짮 㫥  ObjectWindows

      㤮 堭  ।
㭪権- .  ᮡ   ணࠬ஢ 
Windows,    । ।  ( ꥪ⮢ 
ObjectWindows)   ਫ  㣮.   ந ⥬
   THelpWindow  ࠭  ।  䠩
HELPWIND.CPP.

    䨪  ணࠬ

     ਪ ணࠬ 㦤 ⮫쪮   :
    -   HELPWIND.CPP  䠩 ஥ ਫ 
make-䠩;
    - ६饭   ⠭ ਡ⮢  HELPWIND.CPP 
TMyWindow::CMHelp.   室 ⥯   THelpWindow.
    ,  롮 짮⥫ 㭪  Help,  ਪ
ணࠬ ⢥砥 ᮧ THelpWindow.  砥,   
।  THelpWindow.   ᤥ  㫥 HELPWIND.CPP.

     

     HelpWind ⢫ ⮫쪮 । 䥩  ॠ樨
 THelpWindow.   ࠧ,    ᯮ짮
㣨 ਪ묨 ணࠬ ObjectWindows. ,   ,  
㫥. ਢ ⥪  HelpWind (஡  
):

    #ifndef __HELPWIND_H
    #define __HELPWIND_H

    #ifndef __OWL_H
    #include <owl.h>
    #endif

    #ifndef __LISTBOX_H
    #include <listbox.h>
    #endif

    #ifndef __EDIT_H
    #include <edit.h>
    #endif

    #define ID_LISTBOX 101
    #define ID_BUTTON1 102
    #define ID_BUTTON2 103
    #define ID_EDIT 104

    _CLASSDEF(THelpWindow)
    class THelpWindow : public TWindow
    {
    public:
      PTListBox ListBox;
      PTEdit Edit;
      THelpWindow(PTWindowsObject AParent);
      virtual void SetupWindow();
      virtual void HandleListBoxMsg(RTMessage Msg) =
         [ID_FIRST + ID_LISTBOX];
      virtual void HandleButton1Msg(RTMessage Msg) =
         [ID_FIRST + ID_BUTTON1];
      virtual void HandleButton2Msg(RTMessage Msg) =
         [ID_FIRST + ID_BUTTON2];
      virtual void FillEdit(Pchar SelString);
    };
    #endif
    !!!  ࠣ ணࠬ  䠩 HELPWIND.H

    #include <stdlib.h>
    #include <stdio.h>
    #include <dos.h>
    #include <string.h>
    #include <owl.h>
    #include <static.h>
    #include <edit.h>
    #include <listbox.h>
    #include <button.h>
    #include "helpwind.h"

    THelpWindow::THelpWindow(PTWindowsObject AParent) :
       TWindow(AParent, "Help System")
    {
    ...
    }
    void THelpWindow::SetupWindow()
    {
    ...
    }
    void THelpWindow::HandleListBoxMsg(RTMessage Msg)
    {
    ...
    }
    void THelpWindow::HandleButton1Msg(RTMessage)
    {
    ...
    }
    void THelpWindow::HandleButton2Msg(RTMessage)
    {
    ...
    }
    void THelpWindow::FillEdit(Pchar SelString)
    {
    ...
    }

    !!!  ࠣ ணࠬ  䠩 HELPWIND.CPP

          ࠢ ⮢  

      8  㧭  ⨯ ୨ : ᨬ  ᨬ. 
⠪       ⨯ :   ᯫ뢠騥
.    ࠢ騥 ,  ⭮  ⨯
ᨬ ୨ .  ࠢ騥      
⢥ த⥫᪮ . ,     ᨬ
୨ , த⥫᪨   ண    襩
ਪ ணࠬ. ⮬,   㤥 ६ ୨ 
த⥫᪨ .

     ⠪ ࠢ騥 

    ࠢ騥  ।⠢ ᮡ  ன⢠, 騥
   짮⥫᪨ 䥩    . ਬ,
   Cancel   䠩   ࠢ騬
⠬,    ᯨ᪮, ᯮ㥬   䠩. 
 襩 ਪ ணࠬ   ࠢ ⮢,  
      .
      ⨯ ࠢ ⮢, 騥  ᯨ᪮,
 ப⪨, ।㥬 ࠢ騥 , 
ࠢ騥 ,   ஢ .   ,
  㭪 6.1, ᮤন  ᯨ᪠ (让   孥
 ), ।㥬 ࠢ騩  (让   
 ),  ࠢ騩  (⥪ "Help Information:") 
  (Help  Cancel).  ப⪨   ।㥬
ࠢ饣    ᯨ᪠,    ꥪ⠬ 
⪨.  ப⪨   ᯮ  易⥫쭠
 㣨 ࠢ ⮢  ,  ᠬ⥫쭮 ।⢮ 
ᯮ ࠩ ।.
     ObjectWindows TControl ॠ ࠪ⨪, 騥
騬   ࠢ  ꥪ⮢. ந   
। ࠪ⨪, 騥 㭨묨  ⨯ ࠢ
,    ।⠢. ਬ, TEdit  TListBox
। , ࠪ୮  ।㥬 ࠢ ⮢ 
 ᯨ᪮, ᮮ⢥⢥.   ,  TControl ந室
 TWindow. ࠢ騥 ,  ⢨⥫쭮,  
ᯥ樠஢묨 .

     ࠢ ⮢ 

     ࠢ騥   ᥡ ,  
ணࠬ஢,   ⫨稥  ࠢ騬 ⠬ 
 , ਬ  䠩 ,  ࠢ  
, ਬ  .   ࠪ⨪ ࠢ ⮢
  । ᮢ . Windows ᮧ ࠢ騥
  ᯮ । ᮢ;   易⥫쭮
뢠  ꥪ⠬ ObjectWindows.  ࠢ騥   
易  ꥪ⠬ ObjectWindows,   ࠢ 
।⢥ १ 맮 㭪権 Windows.
    !!!   易 ࠢ騩 , ।  䠩
ᮢ,  ꥪ⮬ ObjectWindows.   11 "뢠 ࠢ
ꥪ⮢".
    ࠢ騥  , , ᥣ ।⠢ ꥪ⠬
ObjectWindows. ⥫᪮  㫨 ᢮ ࠢ騬
⠬ ।⢮ ⮣  㭪権-, ।塞
ࠢ騬 ꥪ⠬ ObjectWindows. ਬ,  祭 ⥪⮢
ଠ樨,  짮⥫ ࠫ   ᯨ᪠, 뢠
㭪- ꥪ  ᯨ᪠ GetSelString.   
 ꥪ⠬, ࠢ騩 ꥪ  ᮮ⢥騩  
. ࠢ騩 ꥪ   ࠢ騥  뢠
।⢮   ࠢ饣 ꥪ HWindow,    
.  ࠢ騩   㭨 䨪, 
ᯮ த⥫᪨    䨪樨  ࠡ⪥ ᮡ⨩
ࠢ ⮢, ⠪  ⨨ 짮⥫ .  ᭮,
  । ⠭, ᮮ⢥騥  䨪
ࠢ ⮢:

    #define ID_LISTBOX 101   // 䨪  1-  ᯨ᪠
    #define ID_BUTTON1 102   // 䨪  1-  ()
    #define ID_BUTTON2 103   // 䨪  2-  (Cancel)
    #define ID_EDIT 104      // 䨪  ।.ࠢ.-

    ࠫ騥 ꥪ   

    뢠 祭 㤮 ࠭ 㪠⥫  ࠢ騩 ꥪ (
㣮 ୥ ),     ꥪ. , 
室 ⮫쪮  ୨ ,    쭥襬
ࠡ뢠 ।⢥ 맮  㭪権-.  襬
砥,  ⮫쪮  ᯨ᪠  ।㥬 ࠢ騩 .
THelpWindow 㤥 ࠭    ࠢ ꥪ⮢  ⤥쭮
 . ਢ  । ꥪ THelpWindow:

    _CLASSDEF(THelpWindow)
    class THelpWindow : public TWindow
    {
    public:
      PTListBox ListBox;
      PTEdit Edit;
      ...
    };
    !!!  ࠣ ணࠬ  䠩 HELPWIND.H
     ⮫쪮 ࠢ騥 ꥪ ᪮஢,   ࠡ뢠
   㭪権-. ਬ, 맮 ListBox->AddString 
 ப  ᯨ  ListBox.     
ࠢ騬 ꥪ⠬  ୨    ࠭  
   㭪権- Next  Previous  TWindowsObject. 
 㤮, 㤥 ᯮ짮  ⮣  .

    ࣠ ࠡ ࠢ ⮢

      , 騩 ࠢ騥 ꥪ,  ।
, ᮧ騩  ࠢ騥 ꥪ.   ८।
⠪ SetupWindow,  ᫥  Window,  㦨  砫쭮
⠭  ࠢ ꥪ⮢. THelpWindow ८। SetupWindow
 砫쭮 ⠭ ᯨ᪠,  ⠭ 롮  ୥ 
ᯨ᪠. ⨬,  THelpWindow::SetupWindow 砫 뢠
TWindow::SetupWindow,  뢠 TWindowsObject::SetupWindow, ,  ᢮
।, 뢠 TWindowsObject::SetupWindow,   ᮧ ,
㥬  ୨  THelpWindow.
     ਢ ।   .  蠣
 뢠 DisableAutoCreate, 㭪,    ⥫
 맢    ᮡ⢥ ᯫ뢠 . 
⠭ 䫠, 㪠뢠騩,  ᮧ ᯫ뢠饣   易
 ᮧ  த⥫᪮ .   筮  ᢮⢥
ᯫ뢠騬 .
    ᫥ ⮣,  THelpWindow ⠭ ਡ ᢮
⮯  ࠧ஢.   THelpWindow  㭪樮쭮 
  ᢮ ୨ , ⮬ ஢ THelpWindow 
 祭  砭 ஢  ୨ .
THelpWindow । this   ࠬ   
ࠢ饣 . (this  㪠⥫  㥬 ꥪ
THelpWindow).  ࠬ஬   ࠢ饣 
 䨪 ⮣ ࠢ饣 . ⥫
ࠬ   ⮯  ࠧ. ⨬,  Listbox  Edit
१ࢨ஢  ᫥饣 ᯮ짮.

    THelpWindow::THelpWindow(PTWindowsObject AParent)
    {
      DisableAutoCreate();
      Attr.Style |= WS_POPUPWINDOW | WS_CAPTION;
      Attr.X = 100;
      Attr.Y = 100;
      Attr.W = 300;
      Attr.H = 300;
      ListBox = new TListBox(this, ID_LISTBOX, 20, 20, 180, 80);
      new TButton(this, ID_BUTTON1, "Help", 220, 20, 60, 30, TRUE);
      new TButton(this, ID_BUTTON2, "Cancel", 220, 70, 60, 30, FALSE);
      Edit = new TEdit(this, ID_EDIT, "", 20, 180, 260, 90, 40, TRUE);
      new TStatic(this, -1, "Help Information:", 20, 160, 160, 20, 0);
    }
    !!!  ࠣ ணࠬ  䠩 HELPWIND.CPP
    ᫥ ᮧ  ,  믮 砫 ⠭ 
 뢠 THelpWindow::SetupWindow. ⠭ ந ⥬
ᮧ  ࠢ ⮢  樠樨  ᯨ᪠.
     砫, THelpWindow::SetupWindow 뢠 TWindow::SetupWindow,
 ᮧ ୨   . ⥬,  뢠
㭪樨- ListBox  樠樨  롮 ᯨ᪠. (ࠢ騥
  ᮧ 뢮 ⮬᪨, ⠪   㬮砭
⠭ ⨫ ᮧ WS_VISIBLE).

    void THelpWindow::SetupWindow()
    {
      TWindow::SetupWindow();
      ListBox->AddString("List Boxes");
      ListBox->AddString("Buttons");
      ListBox->AddString("Check Boxes");
      ListBox->AddString("Radio Buttons");
      ListBox->AddString("Group Boxes");
      ListBox->AddString("Scroll Bars");
      ListBox->AddString("Edit Controls");
      ListBox->AddString("Static Controls");
      ListBox->AddString("Combo Boxes");
      ListBox->SetSelIndex(0);
    };
    !!!  ࠣ ணࠬ  䠩 HELPWIND.CPP
    맮  THelpWindow  㭪樨- SetupWindow
   ࠢ쭮 뢮 ࠢ ⮢  
.  ᯨ᪠ 㤥 ப稢    , 
⢨  ந室  㤥.  ᫥饬 ࠧ  ।
ॠ 襩 ணࠬ  ᮡ ࠢ ⮢.

      ᮡ ࠢ ⮢

      㦥 ,  ⢥砥  ᮡ , ।
㭪権- ⢥   ᮮ饭.  㤥 ⢥ 
ᮡ ࠢ ⮢, । 㭪権- ⢥ 
ᮮ饭, 饬  ୥ 䨪.  䨪樨 ⠪
㭪樨- 㤥 ᯮ짮 㬬 ⠭ ID_FIRST 
䨪 ࠢ饣 ,   :

    _CLASSDEF(THelpWindow)
    class THelpWindow : public TWindow
    {
    public:
    ...
      virtual void HandleListBoxMsg(RTMessage Msg) =
         [ID_FIRST + ID_LISTBOX];
    ...
    };
    !!!  ࠣ ணࠬ  䠩 HELPWIND.CPP
    ID_FIRST  ⠭⮩, ।塞  ObjectWindows.  ⮬
ਬ, ID_LISTBOX  䨪஬ ୥ ࠢ饣
  ᯨ᪠ த⥫᪮  TMyWindow. HandleListBoxMsg
। ⢥   ᮮ饭, 뫠 TMyWindow 
ࠢ饣   ᯨ᪠.
    ࠢ饥 ।⢮ 뫠 ᮮ饭 ᢮ த⥫ 直 ࠧ,
  ᮮ⢥饣 ᮡ.  ᮡ   ⨯
୥ ࠢ饣 .  ଠ樮 ᮮ饭 頥
த⥫᪮   ⨯ 襣 ᮡ. ਬ,  ᯨ᪮
뫠 ᮮ饭 LBN_SELCHANGE  롮 ,   ᮮ饭
BN_CLICKED  ⨨.
     㭪-⠬ ⢥  , 㭪-⠬
⢥  ࠢ騥 ᮡ । ࠬ Msg ⨯ RTMessage.
Msg.LP.Hi ᮤন  ⨯ 襣 ᮡ. Msg.LP.Lo ᮤন
ਯ  ࠢ饣 . Msg.WParam ᮤন 䨪
ࠢ饣 .
    ᮪ ᮮ饭, ।  ᮮ饭 ࠢ ⮢
ਢ   "ObjectWindows  ++. ࠢ筮 㪮⢮.". 
來   㭪- ⢥  ࠢ騥 ᮡ
HandleListBoxMsg.  ਢ ।  THelpWindow,
뢠饥 ⨯ 㭪権-:

    _CLASSDEF(THelpWindow)
    class THelpWindow : public TWindow
    {
    public:
      PTListBox ListBox;
      PTEdit Edit;
      THelpWindow(PTWindowsObject AParent);
      virtual void SetupWindow();
      virtual void HandleListBoxMsg(RTMessage Msg) =
         [ID_FIRST + ID_LISTBOX];
      virtual void HandleButton1Msg(RTMessage Msg) =
         [ID_FIRST + ID_BUTTON1];
      virtual void HandleButton2Msg(RTMessage Msg) =
         [ID_FIRST + ID_BUTTON2];
      virtual void FillEdit(Pchar SelString);
    };
    !!!  ࠣ ணࠬ  䠩 HELPWIND.H
      ,  THelpWindow  ॠ஢  ᮮ饭 
᢮ ࠢ ⮢.  ⨨  Cancel (ID_BUTTON2) 
 뢠. 樨 HandleButton2Msg 㤥 룫拉 ᮢᥬ
:
    void THelpWindow::HandleButton2Msg(RTMessage Msg)
    {
      CloseWindow();
    }
     뫠 ⮫쪮  ⨯ ᮮ饭, BN_CLICKED  BN_DBLCLICKED.
 襬 砥  室 ஢  祭 ᮮ饭, ⠪
   뢠   砥.
     ⨨   (ID_BUTTON1)   ஢  㭪
 ᯨ᪠ ࠭,   ।㥬 ࠢ騩 
(ID_EDIT) ᮮ⢥騬 ⥪⮬. ⮬, HandleButton1Msg 뢠 
 ᯨ᪠ (ID_LISTBOX) GetSelString,  뤠 ⥪ ࠭
㭪 ᯨ᪠.  ⥪ ।  ।  㭪-
FillEdit. । FillEdit 室  䠩 HELPWIND.CPP.

    void THelpWindow::HandleButton1Msg(RTMessage Msg) {
      char SelString[25];

      ListBox->GetSelString(SelString, sizeof (SelString));
      FillEdit(SelString);
    }

      ॠ஢  㥬 ᮮ饭   ⨨
  㭪  ᯨ᪠ ।⢥  ।㥬
ࠢ饣  ⥪⮬.    ᯨ᪠ 뫠 讥
⢮ ᮮ饭,   ।㥬 ࠢ饣  
 ஢  ᮮ饭. ᫨  祭 LBN_DBLCLK,  짮⥫
   , ,  ࠡ⪨ ᮮ饭   ᯨ᪠
뢠 DefWndProc.

    void THelpWindow::HandleListBoxMsg(RTMessage Msg) {
      char SelString[25];

      if (Msg.LP.Hi == LBN_DBLCLK)
      {
        ListBox->GetSelString(SelString, sizeof (SelString));
        FillEdit(SelString);
      }
      else DefWndProc(Msg);
    }

    ࠢ騥 ꥪ  ObjectWindows ন ࠧ
㭪樨-. 맮  㭪権,  ⢥  ࠢ騥 ᮡ,
㤥 ⢫ 樨  訬 .

     2.  ObjectWindows
     7.  ObjectWindows

    ObjectWindows ।⠢ ᮡ ப  ᮢ, 
 ᮧ Microsoft Windows ணࠬ, ᠭ  몥 ++.
     ⮩   ᠭ 娨 ᮢ ObjectWindows. ⠫
 饭 ⠫쭮 ᠭ ࠧ ⥩ 娨.
       ᠭ 娨 ꥪ⮢,  ⮩  ਢ
᭮ ਭ樯 ணࠬ஢  । Windows,  ᯮ짮
ᮢ, 맮 Windows API  祭  ࠡ⪠ Windows ᮮ饭.

         襭 ObjectWindows

         娨 ObjectWindows  ,
稭騥  㪢  (ਬ TWindow).    ᮢ  
ObjectWindows ⠪  । ᫥騥 易 ⨯:
    - Pclass, ⨯ 㪠⥫   class. (ਬ, PTWindow
।  㪠⥫  Window).
    - Rclass, ⨯ 뫪   class. (ਬ, RTWindow ।
 뫪  TWindow).
    - Rclass, 뫪  㪠⥫   class. (ਬ, RTWindow
।  뫪  㪠⥫  TWindow).
    - class, ⨯ 㪠⥫  ⠭ const a class. (ਬ,
PCTWindow ।  㪠⥫  const TWindow).
    - RClass, ⨯ 뫪  ⠭ const a class. (ਬ,
RCTWindow ।  뫪  const TWindow).
     稫  ⨯  祭  ᫮ 楤
ணࠬ஢  Windows. ਬ,  ⨢ 砥 ᪨
뢠 ⥪  Windows (DLL) ॡ  , 
    TWindow _FAR *           !!!  ⭮ Window.
,  ॡ  㪠⥫  Window, 
    TWindow _FAR * _FAR &    !!!  ⭮ RWindow.
 뫪  㪠⥫  Window.
    ᯮ짮 ⨯ P, R, RP, PC  RC 砥 ८ࠧ 襩
ਪ ணࠬ, ᫨    ᤥ   DLL. 
ப ᯮ㥬  ⨯  ਬ ணࠬ ObjectWindows.
    㭪樨- ⢥  ᮮ饭,  ਭ⮬ ᮣ襭,
  ᮮ饭,    ⢥,   ᨬ
ન. ਬ, 㭪-, ⢥  ᮮ饭
WM_KEYDOWN, 㤥   WMKeyDown,  㭪, ⢥  ᮮ饭
CM_FILEOPEN, CMFileOpen.

          ObjectWindows

    ObjectWindows ।⠢ ᮡ ⥪,   娨
ᮢ,    ᯮ짮, ஢  . 
 1  "ObjectWindows  ++. ࠢ筮 㪮⢮."  
 ᠭ ᮢ,     㭪権-.

    㭮 7.1  ᮢ ObjectWindows

    Object                                          TStreamable
       ^                                               ^
   Ŀ   Ŀ
                                                         
 TModule        TWindowsObjectĿ      TScroller             
   ^                       ^                               
                 Ĵ   
 TApplication             
                TDialog   TWindow
                   ^          ^
                         Ŀ
    TFileDialogĴ   TControl   TMDIFrame   TEditWindow   TMDIClient
                       ^                          ^
    TInputDialogĴ                              
                       TScrollBar         TFileWindow
    TSearchDialog    
                        
                        TStatic
                            ^
                            
                          TEdit
                        
                        TListBox
                            ^
                            
                          TComboBox
                        
                        TGroupBox
                        
                        TButton
                             ^
                             
                           TCheckBox
                             ^
                             
                           TRadioButton

    Object
    Object   ᮬ   ஦ ᮢ
ObjectWindows  ।  ⥪ ⥩ ᮢ. Object 
뢠 TObject, ⠪    ⥪ ⥩
ᮢ,     稭  㪢 .

    TModule
    ᪨ 뢠 ⥪ ObjectWindows (DLL) 
 TModule,  㯠  ꥪ⭮-ਥ஢ ᭮
 筮  (DLL). ਫ ObjectWindows 
 TApplication, 騩 ந  TModule. TModule
। 騥 ࠪ⨪  㫥: ⥪  ਫ.
㭪樨- TModule ᯥ稢 প ࠢ 
  ࠡ 訡.

    TApplication
      । ࠪ⨪, 易⥫   ਫ
ObjectWindows.  ਫ ObjectWindows 㤥 ந 
TApplication ᢮ ᮡ⢥  ਪ ணࠬ.  ⢥砥,
 㣨 饩,  樠 ꥪ  . ꥪ
ਪ ணࠬ ⠫쭮 뢠   8 "㫨  ꥪ
ਪ ணࠬ".

    䥩 ꥪ

    ⠢訥 ꥪ  娨 ObjectWindows 筮  
䥩 ꥪ.  뢠 䥩묨   稭, 
,  ।⠢  짮⥫᪮ 䥩  Windows, 
 , 㯠 ᢮ த ஬  襩 ਪ ணࠬ
 । Windows. 䥩 ꥪ ⠫쭮 뢠   9
"䥩 ꥪ".

    TWindowsObject
    TWindowsObject   ᮬ,  ।  
⨯ 䥩 ꥪ⮢ ObjectWindows: ,    ࠢ騥
.  ।⠢ ப  㭪権-, ࠢ
ᮧ, ࠡ⪮ ᮮ饭  㭨⮦  ꥪ⮢.

     ꥪ

     ꥪ ।⠢  ⮫쪮 ᮡ⢥묨  ᪮
।,   ⠪ 設⢮  ⮢ ⮩ ।, ⠪ 
ࠢ騥 ।⢠.

    TWindow
    TWindow   ᮬ 饣 祭,  
 ।⠢ , ᯫ뢠騥  ୨  ਪ
ணࠬ.  Window  ⮡ࠦ  ଠ, 
  㤥  ࠪ⨪ Window  ந  
.

    TEditWindow
    ந  Window, TEditWindow । ,  
।஢ ⥪  .

    TFileWindow
    ந  TEditWindow, TFileWindow । , 
 ।஢ ⥪    ন 㧪 
࠭ ⥪⮢ 䠩.

     ꥪ

     ꥪ 㦠  ᠭ ࠪ⨢ 㯯, 
ᮡ, 㯯 ࠢ ⮢, ⠪  ,  ᯨ᪮ 
 ப⪨.  ꥪ ⠫쭮 뢠   11
" ꥪ".

    TDialog
         ந ᮢ, ࠢ
  Windows.  ꥪ 뢠  ᠬ
,   ᪠     
. 㭪樨- ᯥ稢    
 ࠢ騬 ⠬.
    !!!      뢠 .

    TFileDialog
    TFileDialog   ᮬ, 祭   
ਪ ணࠬ.  । , 騩 짮⥫
 䠩   楫, ਬ, , ।஢ 
࠭.

    TInputDialog
      ।     짮⥫
⢥ ⥪⮢ 㭪.

    ࠢ騥 ꥪ

         ࠢ騥  
짮⥫    롨 樨. ࠢ騥 ꥪ
ᯥ稢 㤮   ᯮᮡ ࠡ  ᥬ ⨯ ࠢ
⮢, ।塞  Windows. ࠢ騥 ꥪ ⠫쭮 뢠
  12 "ࠢ騥 ꥪ".

    TControl
    TControl  ࠪ ᮬ,  㯠  騩
    ࠢ ꥪ⮢,   ᯨ᪮ 
.  । 㭪樨-, ᮧ騥 ࠢ騥  
ࠡ뢠騥 ᮮ饭   ந ᮢ.
    !!!  㭮 12.1  ਬࠬ  ࠢ ⮢.

    TButton
     TButton ।⠢  Windows.

    TCheckBox
    ந  TButton,  TCheckBox ।⠢ 
஢ન Windows. 㭪樨- ⮣  ࠢ  ﭨ.

    TRadioButton
    ந  TCheckBox,  TRadioButton ࠢ ᮧ 
㭪樮஢ ᥫ⨢  Windows.

    TListBox
     TListBox ।⠢  ᯨ᪮ Windows.  
ࠢ ᮧ  롮஬   ᯨ᪮ Windows,  ।
㭪樨-  樨  㭪⠬.

    TComboBox
    ந  TListBox, TComboBox ।  ஢
 Windows. ஢  ।⠢ ᮡ 易 
ᮡ  ᯨ᪠  ।㥬 ࠢ騩 .

    TGroupBox
     TGroupBox ।⠢ 㯯  Windows.

    TStatic
    TStatic ।⠢ 㭪樨-,  ⠭, 뤠
  ⥪ ᪮ (⮫쪮  뢮) ࠢ饣 .

    TEdit
    ந  TStatic, TEdit ন ७ 
ࠡ⪨ ⥪  ।㥬 ࠢ ⮢ Windows.

    TScrollBar
    TScrollBar । 㭪樨-,  ࠢ ࠧࠬ 
ᯮ 㪠⥫ ⠭⭮  ப⪨.

    ꥪ MDI

    Windows ॠ ⠭ ࠢ ᪮쪨   
.  ⠭ 뢠 ⨤㬥⠫ 䥩 (MDI).
ObjectWindows ।⠢ ।⢠ ⠭  ࠢ  MDI. MDI
ꥪ ஡ 뢠   14 "MDI ꥪ".

    TMDIFrame
    TMDIFrame ᯥ稢 ࠢ쭮 㭪樮஢   
 ਪ ணࠬ  ᮮ⢥⢨  ᯥ䨪樥 MDI Windows.

    TMDIClient
    TMDIClient ᯥ稢 ⥫ প   MDI. ꥪ
짮⥫᪮  MDI  ꥪ⮬,   ⢨⥫쭮
ࠢ  짮⥫  MDI, ᮤঠ饩 MDI 
("㬥").

    ப稢騥 ꥪ

    TScroller  ꥪ⮬ ObjectWindows,  樠
 ப⪨ , ᯥ稢 ⥬ ᠬ ⮬⨧஢ ப
뢮   ⥪⮢  ᪮ ଠ樨. TScroller ⠪
ப稢 ᢮ , ᫨ 짮⥫ ६⨫ "" 
७    짮⥫; ⮬, TScroller ࠡ⠥
      ப⪨.

         㭪樨 Windows API.

      600 㭪権, 室  Windows API. ਪ
Windows ணࠬ 㫨 ।,  ᢮ 譨  
⢥砥   짮⥫, 맮 ᮮ⢥ 㭪権 Windows.
, ᯮ ObjectWindows,   ᮧ , ᢥ 
  ࠢ騥   ।⢥ 맮 㭪権 Windows.

    ObjectWindows 뢠 㭪樨 Windows

     㭪樨- ObjectWindows 뢠 㭪樨 Windows. 
ObjectWindows  㡫 ;  ⮫쪮 । 
㭪樨 Windows  ᭮ ꥪ⭮-ਥ஢ 室.  
, ObjectWindows ᨫ쭮 頥   ᫥
ࠬ஢, ॡ㥬 㭪 Windows.  ᥣ ObjectWindows
⮬᪨  ࠬ, ⠪  ਯ   䨪
୨ , ࠭       ꥪ⮢.
    ਬ,  㭪樨 Windows ॡ  ਯ  
   ந 樨.  㭪樨 筮 뢠 
㭪権-  ꥪ. ꥪ ࠭ ਯ 易 
     HWindow, ⮬   । 
⢥ ࠬ, ᢮   室   
 ࠧ. ਯ  (  㣠 ॡ㥬 Windows ଠ)
㫨 ꥪ⮬. ⮬,  ObjectWindows 㯠 
ꥪ⭮-ਥ஢ 䥩   ꥪ⭮-ਥ஢ Windows
API.

      㭪 Windows

     㭪樨 Windows API 㯭  ணࠬ ObjectWindows. (
 6 "㭪樨 Windows"   "ObjectWindows  ++. ࠢ筮
㪮⢮."   䠩 WINDOWS.H,  ਢ ᯨ᮪  㭪権).
ਬ,   뢠 㭪 Windows MessageBox  뢮
 ᮮ饭:

    Reply = MessageBox(HWindow, "Do you want to save?",
                       "File has changed", MB_YESNO | MB_ICONQUESTION);

     㭪樨 Windows   頥 祭.  砥 
MessageBox, 頥 祭  楫 ᫮, ஥
࠭  Reply. 祭 ⮣ 楫 ᫠ 㪠뢠  ⢨,
஥ ந 짮⥫    ᮮ饭. ᫨
짮⥫   Yes,  १ ࠢ ⠭ IDYES,
।塞  Windows. ᫨ 짮⥫   No,  १
ࠢ ⠭ IDNO.
    㭪樨 Windows ॡ ।  ⢥ 㬥⮢ ࠧ
⠭ WORD  DWORD.  ⠭ ᮮ⢥ ࠧ ⨫,
頥 祭, 䨪ࠬ  .. ᯮ  ⠭ 
 ணࠬ.  ᤥ   ⠥묨  묨,  ⠪
ᨬ묨    ᨩ Windows. ਬ, ࠧ 
ଠ⨢  ।  ᮮ饭  ⨯ MB_YESNO |
MB_ICONQUESTION,   00024. MB_YESNO, IDYES  㣨 ⠭
।  䠩 WINDOWS.H.
    ᫨  ᬮ  WINDOWS.H,   㢨,  㭪 MessageBox
 

    int FAR PASCAL MessageBox(HWND, LPSTR, LPSTR, WORD);

    !!!     WINDOWS.H   ਪ ணࠬ; 
⮬᪨ 砥  䠩 OWL.H.
     int    .    FAR, PASCAL, HWND,
LPSTR  WORD ?   묨 ⨯, ।塞묨  WINDOWS.H. FAR 
PASCAL ᮢ  far  pascal (WINDOWS.H ⠪ ।  
묨 㪢  nera, void  long).  㭪樨 Windows API 
㭪ﬨ FAR PASCAL  ᪫祭 㭪樨 wsprintf, 饩 ⨯ FAR cdecl.
     㭪樨 ॡ  ᫮  , ਬ,
⥫ ⮢ (LONGFONT)  ᮢ  (WNDCLASS). 筮  ⢥
ࠬ 㭪権 Windows । 㪠⥫   . ᮪
㯭  ਢ   "ObjectWindows  ++. ࠢ筮
㪮⢮.".

    ஢ ⨫ ⠭

    㭪樨 Windows, ᮧ騥 䥩 , 筮 ॡ
  ⨫ ࠬ஢ ⨯ WORD  DWORD. Windows
। ⭨ ⨫ ⠭,    ᯨ᮪ ਢ   7
"⠭ Windows"   "ObjectWindows  ++. ࠢ筮
㪮⢮.". 䨪 ⠭ ⨫   㪢
᪮ 䨪, ᫥騬   ᨬ ન 
⥫쭮 . ਬ, WS_POPUP  ⠭⮩ ⨫  
ᯫ뢠  ("WS_" 砥 "⨫ ").
    ,  ᮧ  ⨫,   ।⢮
ᯮ짮  뢠 OR - |.  ਬ MessageBox, 
। MB_YESNO | MB_ICONQUESTION  ࠬ ⨫.  ⨫ ᮧ
 ᮮ饭   , Yes  No,   .
      ,   ⨫  ᪫騬.
 ⠪ ⨫ ਢ  뤠 ।᪠㥬 , ,
⥫ १⠬.

     㭪権 Windows

     ⮬ ࠧ 㦤  㭪権 Windows, 㯭  
ਪ ணࠬ ObjectWindows.

    䥩 㭪樨 ࠢ 
     㭪樨 ࠢ ᮮ饭ﬨ, 㫨   
,  ᮧ ⥬ 뢮.  ⥣ 砥 㭪樨 
, ஢   ଠ樮  (Clipboard).

    㭪樨 䥩  ᪨ ன⢠ (GDI)
     㭪樨 뢮 ⥪, 䨪  ⮢ ⮡ࠦ  ࠧ
ன⢠,  ࠭  ਭ. 㭪樨  易  -
 ⨯ ன⢠,   ᨬ묨  .

    㭪樨 䥩  ⥬묨 ।⢠
     㭪樨 ࠢ ப ஬ ⥬ ।, 
। , 䥩  樮 ⥬, ࠢ
ᠬ  ⢨.

    㭪樨   맮

    㭪樨   맮  㭪ﬨ, ।塞묨
짮⥫,  뢠 譨  ⭮襭  襩 ணࠬ
ணࠬ. 筮, Windows 뢠    㭪権  
맮  १   ন  Windows ᫨
ꥪ⠬, ਬ ⠬  .    ⠪  
Windows,   ।   ⭮ 맮  ⥬, ⮡
Windows  "뢠  " ।⢮ 맮 襩 㭪樨 
 맮.
     맮 㭪樨   맮,  ન , 
뢠  ⥪, ⫨  ⥪ 襩 ணࠬ - 筮
 Windows. ⮬,  楫 ᯥ祭 㯠 㭪樨  
맮   ६ 襩 ணࠬ ( ࠧ饭  ᥣ
 襩 ணࠬ)  ᯮ짮 ਥ, 騩 , 
ᥣ  ⠭  筮  ᥣ , ᮮ⢥騩
襩 ணࠬ.  Windows  ⮣ ᯮ ।⢠, 뢠
"ਢ離 ".  । Windows ⢨⥫쭮 
襩 㭪樨   맮,  ।  ਢ離 .
ਢ離   ⠭ ॣ ᥣ  ⠪,
⮡  㪠뢠   ᥣ ,  ⥬, । ࠢ 襩
㭪樨   맮. ਢ離 ஢  㭪権  묨
맮 ᮧ 㭪樥 Windows MakeProcInstance,   :

    FARPROC ThunkPtr = MakeProcInstance((FARPROC) MyCallback,
                                         GetApplication()->hInstance);
     㬥 㭪樨 MakeProcInstance  㪠⥫  
㭪   맮. ன - ਯ஬  襩
ਪ ணࠬ.
     㭪樨  묨 맮  ᯮ஢ 
ᯮ짮 祢 ᫮ _export. ਬ,   
㭪   맮 

    BOOL FAR PASCAL _export MyCallBack(HWND hWnd, DWORD lParam);

     Windows 㭪樨  묨 맮 । ᯮ짮
᫥⥫쭮 맮 ᪠,  ⮬   祢 ᫮
PASCAL.
    ᪮ Windows 㭪樨  묨 맮 뢠  ।
ObjectWindows   뢠  । ++,   ᯮ짮
᪨ 㭪樨- ++  ⢥ 㭪権  묨
맮. ᪨ 㭪樨- ᯮ  ࠬ
(this),   । Windows. ᪨ 㭪樨-,
,  ᯮ ⮣ 㪠⥫ this , ⮬, 
ᯮ짮  㭪樨  묨 맮. 易⥫쭮 ᯮ
祢 ᫮ PASCAL   ᪨ 㭪権- 
묨 맮, ᫨   뢠 Windows.

    㭪樨 

     㯮ॡ Windows 㭪樨  묨 맮 -  ,
 뢠  १ 㭪権  Windows.  㭪樨
  㬥஢,  横, । ⨯ ⮢ 
⥬ Windows. ਬ,   ७㬥஢    ⥬, 
ᯥ ஫ ⥪   .  ᯮ짮  㭪権
  । Windows  襩 㭪樨   맮 ᠭ
 ᯮᮡ. Windows 㭪樨,  ॡ 㭪権   맮,
 EnumChildWindows, EnumClipboardFormats, EnumFonts, EnumMetaFile,
EnumObjects, EnumProps, EnumTaskWindows  EnumWindows.
    , ਬ,    ᪠ 㭪- ++
TMyWindow::ActOnWindow,   ᫥騬 ࠧ:

    class TMyWindow
    {
    ...
      static BOOL FAR PASCAL _export TMyWindow::ActOnWindow(HWND hWnd,
             DWORD lParam);
    ...
    };

      ।  㭪  㭪   맮  맮
Windows 㭪樨 EnumWindows:

    FARPROC lpEnumWinFunc;
    ...
    lpEnumWinFunc = MakeProcInstance((FARPROC) TMyWindow::ActOnWindow,
                    GetApplication()->hInstance);
    ReturnVal = EnumWindow(lpEnumWinFunc, aLongVal);
    FreeProcInstance(lpEnumWinFunc);

     맮  㭪権      
த ,     砭.  襬 ਬ,
᪠ 㭪- TMyWindow::ActOnWindow 㤥 ந
 ⢨  ,  । ਯ஬. ࠬ
aLongVal ।⠢ ᮡ  祭, ஥ 맮 EnumWindows
롨ࠥ  ।  㭪   맮.

    ᯮ짮 ⥫㠫  맮

       ⥫ ⢨  맮 MakeProcInstance 
FreeProcInstance, ᫨  ⪮  ணࠬ  樥
"⥫㠫  맮".    ஫  
襣 , । DS == SS; 㣨 ᫮,  㬮砭 ᥣ
 ᮢ  ᥣ⮬ ⥪;     맮 㭪権
MakeProcInstance  FreeProcInstance. ।騩 ਬ  ᯮ짮
⥫㠫  맮 㤥 룫拉 ⠪:

    ReturnVal = EnumWindow((FARPROC) TMyWindow::ActOnWindow, aLongVal);

         饭 Windows

     Windows ।,  ந諮 ᮡ⨥, ஥  
ਪ ணࠬ,   뫠 ⮩ ਪ ணࠬ ᮮ饭.
 ஬ ⢮ ࠧ ⨯ ᮮ饭, 室 
᫥ 筨:
    - 짮⥫, ६饭  ⨥ ""  ⨥ 
,  ᮮ饭 ᮡ 짮⥫;
    -  ணࠬ  뫠 ᮮ饭 ᠬ ᥡ;
    -  ணࠬ  뢠 㭪樨 Windows, १⮬ 
 祭 㣨 ᮮ饭 Windows;
    - ਪ ணࠬ  뫠 ᮮ饭 㣮 ਪ
ணࠬ १ ᪨  묨 (DDE);
    - ᠬ ⥬ Windows  뫠 ࠧ ᮮ饭 襩
ਪ ணࠬ.
    ਪ ணࠬ Windows ⢥砥  ਥ  ⢥  ᫠ 
ᮮ饭.  ६ ⮣  ਫ  뢠 㭪,
।  ⢥  饥  ᮡ⨥, ஥ ࠣ
 .
    ObjectWindows ࠢ   ਥ  ࠡ⪮ ᮮ饭.
ObjectWindows ⠪ ।⠢  砥 ᮮ饭 ࠡ 
㬮砭.   ⮫쪮 । ⢥  ᮢ騥  襣
ਫ  ਭ묨  㬮砭.  ⮣  , ந 
⠢塞  ObjectWindows,    । ᯥ樠
㭪樨- ⢥  ᮮ饭.
     ਢ ⮥ । 㭪樨-, 
⢥砥  ⨥   "".  ।  
।  TMyWindow, ந   ObjectWindows Window.

    class TMyWindow : public TWindow {
    public:
    ...
       virtual void WMLButtonDown(RTMessage Msg) =
         [WM_FIRST + WB_LBUTTONDOWN];
    ...
    };

     ଠ   饩   㭪権- ⢥
 ᮮ饭. ⮤ ++  㭪権-  ७ 
ࠧ襭 ᯮ짮 楫᫥ 䨪, 易 
⠬-㭪ﬨ 㠫쭮 ⮤. - ⮣, ObjectWindows
 ⮡ࠦ ᮮ饭 襩 ਪ ணࠬ 
㭪樨- ⢥.
    ਬ, ᫨  , ⮡  TMyWindow   
⨨  "",  ।  ᢮⢮  㭪樨-
⢥  ᮮ饭:

    void TMyWindow::WMLButtonDown(RTMessage Msg)
    {
      MessageBeep(0);  // 맮 㭪樨 Windows
    }

     祭 .

    ࠬ ᮮ饭 Windows

     ਥ ਫ Windows ।祭  ᮮ饭  
 ਭ 4 ࠬ.    : ਯ஬
(䨪஬ Windows) ஭⮣   䨪஬ ᮮ饭. 
 ࠬ  㦭 襩 ਪ ணࠬ, ⠪  ObjectWindows
ࠢ ⮡ࠦ 室 ᮮ饭  ᮮ⢥騥
㭪樨- ⢥  ꥪ. 㣨  ࠬ, 祭
WORD  DWORD, ᮤঠ  .  ࠬ ࠭ 
 WParam  LParam  ।塞  ObjectWindows 
TMessage, 뫪   (⨯ RTMessage) । 訬
㭪-⠬ ⢥  ᮮ饭. ⨬,   TMessage
⠪ ᮤন ⠭ ᠬ ObjectWindows  Result,
  筮 㤥 ஢.
    WParam  ⨯ WORD  筮 ᮤন   ଠ樨, 
ਯ, 䨪  . ਬ, 롮   
ᮮ饭 WM_COMMAND, 祩 WParam ࠢ 䨪 ࠭ 㭪
.
    LParam  ᮤঠ 祭 LONG, ਬ 쭨 (far) 㪠⥫.
 ᮤঠ  樨 ଠ樨,   襬 ᫮,  
襬. ਬ, LParam, । 㭪樨- ⢥ 
ᮮ饭 WM_LBUTTONDOWN ("  "), ᮤন -  -
न 樨  ன ந諮 ⨥.
     ᯥ祭 㤮 㯠  訬  訬 ᫮, LParam
   ꥤ  ᮡ  LP, ᮤঠ饩
 Lo  Hi ⨯ WORD. ।,    Msg 
 TMessage, ⥯   ᯮ짮 Msg.LP.Hi  Msg.LP.Lo 
뫪  襥  襥 ᫮ Msg.LParam. TMessage::WParam 
筮,   ꥤ  ᮡ  WP,  
⠬ Hi  Lo ⨯ BYTE,   WORD.

     ᮮ饭 Windows

     ᫥饬 ࠧ ਢ ᯨ᮪ ⨯ ᮮ饭,  
 ਪ Windows ணࠬ.  ᯨ᮪    5
"饭 Windows"   "ObjectWindows  ++. ࠢ筮
㪮⢮.".

    饭 ࠢ 
     ᮮ饭 ᨣ    . ਬ,
ᮮ饭 WM_CLOSE 뫠  ⨨ ,  WM_PAINT 
室 뢮    ᥣ .

    樠樮 ᮮ饭
     ᮮ饭, 騥 WM_CREATE  WM_INITDIALOG, 뫠 
ᮧ ணࠬ    .

    饭 
     ᮮ饭 ਭ  १  ଠ樨 ।⢮
"", ,  ப⪨  ⥬ ⠩.  
 ࠭ ᮮ饭   ᮮ饭 WM_COMMON,
஥ 뫠  롮    ᥫ,  
ࠢ饣 ᮡ, ⠪  ⨥ .

    ⥬ ᮮ饭
     ᮮ饭 뫠  ⢥  樨 짮⥫
⠭묨 ࠢ騬 ।⢠ ਪ ணࠬ, ⠪  
-ࠢ (Control-menu),  ப⪨,  樨 
ᨬ樨.  १ 롮  -ࠢ 뫠
ᮮ饭 WM_SYSCOMMAND. 設⢮ ਪ ணࠬ  墠뢠
⥬ ᮮ饭.

    饭  ଠ樮  (Clipboard)
     ᮮ饭 뫠  ⪥ 㣮 ਫ  
    ଠ樮 , 楬  ࠡ稪
   ਪ ணࠬ.

    饭  ⥬ ଠ樨
     ᮮ饭 뫠   ⥬ ਡ⮢ Windows,
ਬ 梥  .

    饭 㫨஢ ࠢ騬 ⠬
     ᮮ饭 뫠 ਪ ணࠬ ᢮ ࠢ騬
⠬, ⠪   ᯨ᪮  .   ࠢ
⮢  ᢮ ᮡ⢥  ᮮ饭, 訢 
⠭  ਡ. 饭 㫨஢ ࠢ騬
⠬ ⫨   㣨 ᮮ饭,  ᪫祭 MDI
ᮮ饭, ⥬,     ਫ  ᮡ⨨,  뢠
믮 ᮡ.  "뫪 ᮮ饭".

    饭 㢥 ࠢ ⮢
     室 ᮮ饭 WM_COMMAND,  㢥 த⥫᪮ 
 ந襤襬 ᮡ⨨ ࠢ, ⠪  롮 㭪   
  ଠ樨  ।㥬 ࠢ騩 . ࠬ
ᮮ饭  ।  㢥, ਬ LBN_SELCHANGE 
EN_CHANGE.

    騥 ᮮ饭  ப⪨
     ᮮ饭  㢥騬 ᮮ饭ﬨ ࠢ ⮢,
㦨騥  ப⪨.   㯯 室  ᮮ饭,
WM_HSCROLL  WM_VSCROLL.

    饭    짮⥫
     ᮮ饭, 騥 WM_NCMOUSEMOVE  WM_NCPAINT, 
ᮮ饭 ,  ⭮  ᮡ, ந室騬  
짮⥫  ,    ,    ࠭.
筮 ਪ ணࠬ  ८। ࠡ  㬮砭 
ᮮ饭.

    饭 ⨤㬥⠫쭮 䥩
     ᮮ饭 뫠 ਪ묨 ணࠬ, 㤮⢮騬
⠭ MDI 㫨஢  ୨ . MDI ᮮ饭 
WM_MDIACTIVATE  WM_MDIDESTROY.

    ࠡ⪠ ᮮ饭  㬮砭

    Windows ᯥ稢 ࠡ  㬮砭  ᮮ饭,
뫠 ਪ ணࠬ. ᫨  ࠢ騩 ,  
   室饥 ᮮ饭,  ObjectWindows ⮬᪨
뢠 ন Windows ࠡ  㬮砭. ⢥
ࠢ饬 ,     ࠡ⪠  㬮砭
  㭪樥-⮩ DefWndProc.
    !!!  ࠧ "ࠡ⪠ ᮮ饭  㬮砭"   9
"䥩 ꥪ".
    ,   । ᯮᮡ ॠ樨  室饥 ᮮ饭, 
   ⠭묨 ⢨ﬨ Windows.  ⮣, 맮
㭪- 襣 ࠢ饣 ,    
DefWndProc  㭪樨- ⢥  ᮮ饭.

    뫪 ᮮ饭

      筨 ᮮ饭  ᠬ  ਪ ணࠬ.
 ணࠬ  뫠 ᮮ饭 ᥡ ᠬ, 맮  㭪権
API Windows, SendMessage  PostMessage. SendMessage ⠢ , 祩
ਯ  ।, ࠡ뢠 ᮮ饭 ,   ६, 
PostMessage 頥 ᮮ饭  । ᮮ饭   蠥 ࠡ
  砭  ࠡ⪨.  孨᪨ ਥ  ⠪
  ஢ ᮡ⨩  襩 ਪ ணࠬ. 
஡ ଠ   API 㭪   ⥬ ࠪ⨢
 Help    4 "㭪樨 Windows"   "ObjectWindows  ++.
ࠢ筮 㪮⢮.".
    SendMessage  㤮  ࠡ  ࠢ騬 ⠬, ⠪
  ᯨ᪮  . Windows । ᮮ饭 㫨஢
ࠢ騬 ⠬  ⢫ ⠪ ⢨,  
㭪⮢   ᯨ᪠ (LB_ADDSTRING)   ﭨ  ஢ન
(BM_SETCHECK). ࠢ騥 ꥪ ObjectWindows ।
㭪樨-, ⠪  TListBox::AddString  TCheckBox::SetCheck,
 뫠  易   䥩 ⠬   
ᮮ饭 (  ᯮ㥬). ᫨   ।
ࠢ騬 ⠬    ᮮ饭, ⫨  , 
ᯮ SendMessage,  । HWindow ࠢ饣  
 ࠬ (Wnd).
    ᫨   ᫠ ᮮ饭 ࠢ饬    ,
 楤 㤥 ᪮쪮 ⫨. 筮, ࠢ騥  
 ꥪ TDialog    易   䥩
ꥪ⮢ ObjectWindows,    ᫠  ᮮ饭  
TDialog::SendDlgItemMsg.      ࠢ騬
⠬   , 뢠   䥩 ꥪ⮢ 
 ६  TWindow.
    !!!  ࠧ "  ࠢ騬 ⠬  ࠡ⪠
ᮮ饭" .

     ᮮ饭

    ᪮ ᮮ饭 । 祭ﬨ ⨯ WORD, 
65,536  ᮮ饭. ObjectWindows ࠧ ᮮ饭 
ᥪ騥   ⠭ ᮮ饭 Windows, 
ᮮ饭, 㢥 ᮮ饭  ⠪ .  襩 䨪樨
 ObjectWindows । ⠭, ᯮ㥬  ᬥ饭
  ⤥쭮 .  ᮮ饭   ⠭ 
ObjectWindows ਢ   7.1.

  7.1:  ᮮ饭 Windows
-------------------------------------------------------------------------
 ⠭   祭   ᮮ饭  祭
-------------------------------------------------------------------------
 WM_FIRST    00000    00000-0x03FF       饭 Windows
 WM_USER     00400    00400-0x7F00        ᮮ饭, ।塞
                                           ணࠬ⮬
 WM_INTERNAL 07F00    07F00-0x7FFF       १ࢨ஢  ७
                                           ᯮ짮
 ID_FIRST    0x8000    0x8000-0x8EFF       饭  ᭮ ୨
                                           䨪஢,
                                           ।塞 ணࠬ⮬
 ID_INTERNAL 0x8F00    0x8F00-0x8FFF       १ࢨ஢  ७
                                           ᯮ짮
 NF_FIRST    0x9000    0x9000-0x9EFF       騥 ᮮ饭,
                                           ।塞 ணࠬ⮬
 NF_INTERNAL 0x9F00    0x9F00-0x9FFF       १ࢨ஢  ७
                                           ᯮ짮
 CM_FIRST    0xA000    0xA000-0xFEFF        ᮮ饭,
                                           ।塞 ணࠬ⮬
 CM_INTERNAL 0xFF00    0xFF00-0xFFFF       १ࢨ஢  ७
                                           ᯮ짮
-------------------------------------------------------------------------

    饭, ।塞 짮⥫

    Windows  짮⥫ ᠬ । ᢮ ᮡ⢥
ᮮ饭  ᫥饣  ᯮ짮  ਪ ணࠬ. 
 ᮡ 묨  ।  ᮡ⨩  ॠ樨  .
ਬ,     , 뫠饥 ᮮ饭, ।塞
짮⥫, ᥬ ⠫   ਪ ணࠬ.
     Windows ᮮ饭  易   䨪 ⨯ WORD.
  ।। ᮮ饭 Windows  䠩 WINDOWS.H
। ᮮ⢥ ⠭ ⨯ WORD,  ⥬
ᯮ   㭪樨- ⢥   ᮮ饭.
    । ⨬  䨪஢ ᮮ饭 Windows
 祭, १ࢨ஢  ᮮ饭, ।塞
짮⥫.  祭, १ࢨ஢  ।।
ᮮ饭 Windows, 室  0  WM_USER - 1. 祭 ᮮ饭,
।塞 짮⥫,      WM_USER  WM_USER
+ 31,744.  ᮢ㥬  । 祭  ᮡ⢥ ᮮ饭
 ⠭, 稭騥  祭 WM_USER, WM_USER + 1, WM_USER + 2 
⠪ . ਬ,

    #define WM_MYFIRSTMESSAGE WM_USER
    #define WM_MYSECONDMESSAGE WM_USER + 1
    #define WM_MYTHIRDMESSAGE WM_USER + 2

     뫪  ᮮ饭 ᯮ Windows 㭪 SendMessage:

    SendMessage(AWindow->HWindow, WM_MYFIRSTMESSAGE, AWord, ALong);

     祭 ᮮ饭, ।塞 짮⥫, ᯮ
楤,    ⠭ ᮮ饭 Windows. ਬ:

    class MyWindow : public TWindow
    {
    ...
      virtual void WMMyFirstMessage(RTMessage Msg) =
        [WM_FIRST + WM_MYFIRSTMESSAGE];
      virtual void WMMySecondMessage(RTMessage Msg) =
        [WM_FIRST + WM_MYSECONDMESSAGE];
      virtual void WMMyThirdMessage(RTMessage Msg) =
        [WM_FIRST + WM_MYTHIRDMESSAGE];
    ...
    };

     8. ꥪ ਪ ணࠬ  

     易 ਪ ணࠬ ObjectWindows 
।  ਪ ணࠬ, ந  
ObjectWindows TApplication. ꥪ ਪ ணࠬ ᫥ ᫥騥
 ਪ ணࠬ ObjectWindows:
    -   뢮   ਫ.
    - 樠 ࢮ  ਫ   , 㦠
ᥬ ࠬ ਫ, ⠪  䨣஢  裡.
    - 樠   ਫ; ਬ, 㧪
⠡ ᥫ஢. (  ᨬ ᪠ ᪮쪮
஢   ⮣  ਫ ObjectWindows).
    - ࠡ⪠ ᮮ饭 Windows,  ਭ ਪ
ணࠬ.
    - ⨥ ਫ.
     । , ந  TApplication,  易⥫쭮
     ஢ ꥪ  . 
⠪   ८। ਭ  㬮砭 
 樠樨 ஢, ⨨ ਫ  ࠡ⪥ ᮮ饭
Windows.

         ⮪ ਪ ணࠬ

     ணࠬ 襣 ਫ ObjectWindows 筮 ⮨ ⮫쪮
  ஢.
    !!! THelloApp HelloApp("HelloApp", hInstance, hPrevInstance, lpCmdLine,
nCmdShow);
       ꥪ ਪ ணࠬ ।⢮
맮  .  ⠪ 樠  
ꥪ ਪ ணࠬ.   ꥪ ਪ ணࠬ 
㣨 ⥩ ணࠬ ObjectWindows ⢫ 맮
GetApplication.
    !!! HelloApp.Run();
    ன  뢠 㭪- ਫ Run, 
⥬ 뢠 InitApplication  InitInstance  ⢫
樠樨 ࢮ   ᫥, ᮮ⢥⢥. ⥬
뢠 InitMainWindow  ᮧ  .  設⢥
砥,   ८। ⮫쪮 InitMainWindow (ᬮ 㭮
8.1).
    ᫥ ⮣ Run 맮 MessageLoop ⠭ ਪ ணࠬ
 ⨢ ﭨ  砫 ࠡ⪨ 室 ᮮ饭 Windows,
権 ࠢ ࠡ⮩ ਪ ணࠬ. MessageCall 뢠
㭪樨-, ࠡ뢠騥 । 室騥 ᮮ饭.
MessageLoop  ⢨⥫쭮 ࣠ 横 ᮮ饭, 
த   ਫ.
    !!! return HelloApp.Status;
    ⨩  頥 䨭  ਪ ணࠬ,
 ObjectWindows ࠭    Status.  室,
⠪  WinMain 易⥫쭮   祭 int. 祭 Status
    ⫠,  㫥 祭 ᢨ⥫
 訡.

   > InitApplication
   
 Run> InitInstance> InitMainWindow
   
   > MessageLoop

    㭮 8.1 㭪- ⢫ 맮, ࣠ ⮪
                ਪ ணࠬ

         樠 ਫ

    ⮪ 맮 㭪権-, 樠 ꥪ ਪ
ணࠬ,  ,  ८।, ᯮᮡ  
ॡ   ⮣ .   । 
易⥫ 㭪- InitMainWindow.   ⠪
८। InitInstance, ⢫ ⤥ 樠 
ᯮ塞  ਫ ObjectWindows,  InitApplication,
樠  ᯮ塞 .

    樠  

    ਢ 쭮 ।  ਪ ணࠬ:

    class THelloApp :public TApplication
    {
    public:
      THelloApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
                LPSTR lpCmdLine, int nCmdShow) : TApplication(AName,
                hInstance, hPrevInstance, lpCmdLine, NCmdShow) {};
      virtual void InitMainWindow();
    };
    !!!  ࠣ ணࠬ  䠩 HELLOAPP.CPP

     易⥫쭮  । 㭪- InitMainWindow,
  ꥪ    ࠭   
 ꥪ ਪ ணࠬ MainWindow.  ⥩訩 ਬ
㭪樨- InitMainWindow:

    void THelloApp::InitMainWindow()
    {
       MainWindow = new TWindow(NULL, "Hello World!");
    }

    ਢ  ਪ ணࠬ ObjectWindows ⮨  
ணࠬ,  । ந  TApplication ,  ஬
।  㭪- InitMainWindow:

    !!!  ணࠬ HELLOAPP.CPP
    #include <owl.h>

    // ।塞 , 騩 ந  TApplication
    class THelloApp :public TApplication
    {
    public:
      THelloApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
                LPSTR lpCmdLine, int nCmdShow) : TApplication(AName,
                hInstance, hPrevInstance, lpCmdLine, NCmdShow) {};
      virtual void InitMainWindow();
    };

    //    MainWindow  THelloApp
    void THelloApp::InitMainWindow()
    {
       MainWindow = new TWindow(NULL, "Hello World!");
    }
    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
      LPSTR lpCmdLine, int nCmdShow)
    {
      THelloApp HelloApp ("HelloApp", hInstance, hPrevInstance,
                          lpCmdLine, nCmdShow);
      HelloApp.Run();
      return Hello.App.Status;
    }

    ਢ ணࠬ  ⥩訬 ਫ ObjectWindows,
஥  ᢥ稢    "Hello World!" ("ࠢ
!").  ࠡ   㭪 8.2.   ६ 
    ࠧ.  ⠪   ஢  ,
⨥  "५ "  孥 ࠢ 㣫.  ⠭
० ࠧ஢     ࠧ. ⨥  "५ "
ࠧ稢    ࠭.     襭 ࠡ
ਫ    ""   ࠢ饣   
孥 㣫 .

    㭮 8.2  

    樠   ਪ ணࠬ

    㭪-  ਪ ணࠬ InitInstance
⢫ 樠   Windows ਫ.
TApplication । 㭪- InitInstance,  뢠
InitMainWindow,  ⥬ 맮  㭪樨- Show 뢮 
.   ८। InitInstance   ⠭⭮
樠樨; ਬ, 㦠 ⠡ ᥫ஢. ᫨ 
८। InitInstance  襣  ਪ ணࠬ, 
࠭ ࢮ砫 맮 TApplication::InitInstance.
     ਢ ਬ 㭪樨- InitInstance, 㦠饩
⠡ ᥫ஢  ⠭ ਫ  ⨢ ﭨ.
䨪 ᮢ ⠡ ᥫ஢ ।  䠩 ᮢ
 ࠢ 100.

    void TMyApp::InitInstance()
    {
      TApplication::InitInstance();
      HAccTable = LoadAccelerators(GetApplication()->hInstance,
                   MAKEINTRESOURCE(100));
    }

    InitInstance  ⮫쪮 믮 樠 
ਫ. 樠    ⢫ 
   㭪樨 ꥪ   SetupWindow.

    樠 ࢮ  ਪ ணࠬ

    ᫨ 짮⥫ 㤥 ᪠ ਪ ணࠬ ᨬ
᪮쪮 ࠧ ( 襭  ࠡ),    । 
⢨, ந ⮫쪮  砥 ࢮ ᪠.  ⢨
뢠 樠樥 ࢮ  ਫ. ⨬,  ᫨
짮⥫ ⨫ ਪ ணࠬ, ⥬ 訫  ࠡ,
᭮ ⨫  ⠪ ,   ,  ⮬ 砥, 㤥
ᬠਢ  .
    ᫨ ⥪騩   ,  뢠 
㭪- InitApplication. TApplication । "祣 
" 㭪- InitApplication,   
८।  ⢫ ⤥쭮 樠樨 ࢮ
.
    ਬ,   ஢ TestApp ⠪,   
 㤥 ନ஢  ࢮ  ਫ.  ⮣ 
  ਪ ணࠬ   WindowsTitle. ⥬,
। 㭪- InitApplication ⠪,   ⠭
WindowTitle  "First Instance" (" "). ⠢ 
ਪ ணࠬ 樠஢ WindowTitle  "Additional Instance"
("⥫ "). InitApplication 뢠 ⮫쪮  ࢮ
.

    㭮 8.3 ᫥⥫쭠 樠 ஢ ਫ

    #include <owl.h>
    #include <string.h>

    class TTestApp : public TApplication
    {
      TTestApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance, LPSTR
               lpCmdLine, int nCmdShow);

    protected:
      char WindowTitle[20];
      virtual void InitMainWindow();
      virtual void InitApplication();
    };
    TTestApp::TTestApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
                LPSTR lpCmdLine, int nCmdShow) : TApplication(AName,
                hInstance, hPrevInstance, lpCmdLine, NCmdShow)
    {
       strcpy(WindowTitle, "Additional Instance");
    }

    void TTestApp::InitApplication()
    {
       strcpy(WindowTitle, "First Instance");
    }

    void TTestApp::InitMainWindow()
    {
       MainWindow = new TWindow(NULL, WindowTitle);
    }

    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR
                       lpCmdLine, int nCmdShow);
    {
        TTestApp TestApp("Instance Tester", hInstance, hPrevInstance,
                         lpCmdLine, nCmdShow);
        TestApp.Run();
        return TestApp.Status;
    }
    !!!  䠩 INSTTEST.CPP

          ਪ ணࠬ

     ᮮ饭 襩 ਪ ணࠬ 樠  맮
㭪樨- ꥪ ਪ ணࠬ Run, ,  ᢮
।, 뢠 㭪- MessageLoop.  ६ 㭪樮஢
襩 ணࠬ, 横 ᮮ饭 ࠡ뢠 室騥 ᮮ饭 Windows.
 ਪ ணࠬ ObjectWindows ᫥ 㭪-
MessageLoop,  ࠡ⠥ ⮬᪨.
     ࠡ⪨ Windows ᮮ饭 㭪- MessageLoop 뢠
 㭪樨- ॢ. ProcessDlgMsg ࠢ ᮮ饭ﬨ
 , ProcessAccels ࠢ ᥫࠬ, 
ProcessMDIAccels ࠢ ᥫࠬ  ਫ MDI. 
ਫ,   ᯮ ᥫ   
,    ਫﬨ MDI,    ࠢ
MessageLoop 㤠- .  室  㭪権- ॢ 
TApplication   1 " ObjectWindows"   "ObjectWindows 
++. ࠢ筮 㪮⢮.".

         ⨥ ਪ ணࠬ

    । 襭 ࠡ, ਪ ணࠬ    横
ᮮ饭.   ந  १ ⪨ 짮⥫ 
  ਪ ணࠬ.  ᪠,   ,
᪮ ObjectWindows ।⠢ 堭 ८। 
 室; ਬ, ஢    稥 ࠭ 䠩.
     ⪥ 짮⥫  ਫ  ⨥ 
""   -ࠢ (Control-menu) ந室 ᫥饥:
    1. Windows 뫠   ਫ ᮮ饭 WM_CLOSE.
    2. ꥪ   ⢥砥 맮 㭪樨- CloseWindow,
 뢠   (맮 ShutDownWindow) ⮫쪮 ᫥
஢ન ꥪ ਪ ணࠬ ।⢮ 맮 
㭪樨- CanClose (⠪  ⨥   ਫ
ਢ   ᠬ ਫ).
    3. 㭪- ꥪ ਪ ணࠬ CanClose 頥
१ 맮 㭪樨- CanClose  , 
  ᠬ ।  ᢮ .
    4.  ,  㬮砭, 蠥  ᢮  ⥬
 ᢮ ୨     . ᫨ 
㭪樨- CanClose ୨   TRUE,  CanClose
  頥 TRUE  ਫ 뢠.
     堭   ਭ樯, "᫨ - , 祬 
ਫ   뢠,  ᥩ,  ய".  ⮣
, ꥪ ਪ ணࠬ  ⢥  ७ 
ਫ.  㬮砭,    訢  . 
 ८। 㭪- CanClose   , 
ਢ  㣮 浪 .  ⠪ ᢮  ८।
㭪樨- CabClose  ਪ ணࠬ.



     9. 䥩 ꥪ

    ꥪ, ।⠢騥 ,    ࠢ騥 
뢠 ꥪ⠬ 䥩 짮⥫,   䥩묨
ꥪ⠬.  ⮩  㦤 騥 ᢮⢠  ॡ
䥩 ꥪ⮢     ॠ묨 ,   
ࠢ騬 ⠬, 騬  ࠭.
     ⮩  ⠪    ࠧ묨
䥩묨 ꥪ⠬ ਪ ணࠬ,  뢠 堭 ⢥
 ᮮ饭 Windows.

         TWindowsObject

    TWindowsObject  騬  ᮬ   䥩
ᮢ Windows: TDialog, TWindow   ந ᮢ, TControl.
TWindowsObject । 騥 ᢮⢠ ,   ࠢ
ꥪ⮢. 㭪樨- TWindowsObject ⢫ ᫥饥:
    - প ⢥  ꥪ ObjectWindows/ Windows,
 ஢  㤠 ꥪ⮢,  ᮧ  㤠
⮢.
    - ⮬᪨ ন ⭮襭 த⥫-ॡ 
䥩묨 ꥪ⠬ ( ⭮襭 ᫥⢥ ᮢ).
    -    Windows; ᬮ  10 " ꥪ".
     TWindowsObject ⠥   .  㤥 ।, 
    㤥, ஦  ।⢥ 
TWindowsObject. ࠧ  㤮 㤥 ஦   ᮢ Window
 TDialog.

         祬 䥩 ꥪ ?

    祬  㦭 䥩 ꥪ, ᫨ Windows 㦥  
,   ࠢ騥  ?
     䥩 ꥪ  易    䥩
 -  ꥪ,  䨧᪮ ,   ࠢ騩  -
 ண  㯠  ꥪ⭮-ਥ஢ ᭮. 䥩
ꥪ ।⠢ 㭪樨-  ᮧ, 樠樨,
ࠢ  㤠 易   䥩᭮ . 
 䥩᭮  ᮤঠ 樨஢ , 騥
ਯ  䥩᭮    த⥫᪮  ୨ .
㭪樨- 䥩᭮ ꥪ   ᥡ  ⠫
ணࠬ஢  Windows.
     ꥪ/ 祭    ⮪ ++ 
䠩 .   ᪮஢ ⮪ ꥪ  ࠢ
⠫ﬨ /뢮 䠩 .    ꥪ 
ࠢ ⠫ﬨ /뢮 .
     䥩᭮ ꥪ,   樨஢ 䥩
⮬,  ᯥ祭 ࠢ쭮 㭪樮஢ ,  
ࠢ ⮢  稭 । ᮣ襭.
ਬ,  ᮧ  䥩᭮ ꥪ   뢠 
㭪樨-. 砫 ,  ஢ 䥩᭮
ꥪ  ⠭  ਡ⮢, ⠪  ⨫  .
    ⮬   맢 㭪- ᮧ MakeWindow, 
뢠 䥩 ꥪ   䥩 ⮬.  
ন ।⢮   䥩᭮ ꥪ Window,
 ᮤন ਯ . MakeWindow  㭪樥-⮩
ꥪ ਪ ணࠬ. MakeWindow 뢠 㭪-
ꥪ Create,  ⠢ Windows ᮧ  .
    MakeWindow ᮧ   "᭮".  ⫨稨  Create,
MakeWindow ࠭ ࠢ쭮 ᮧ 䥩᭮ ꥪ  稥
ॡ㥬 ꥬ .   ந⥫쭮 
ᯮ짮 MakeWindow 㯨 ࠭⨥ 室  । 㯭
  ᠭ ⥬.
    筮,  䥩   易⥫쭮 㤠
  ᢮ ᮮ⢥饣 䥩᭮ ꥪ.  
⮬ 砥,   ⮫쪮 맢 ShutDownWindow,  㭨⮦
䥩   ⥬ 㤠 䥩 ꥪ.
      ,  ᮧ 䥩᭮ ꥪ 
ᮮ⢥饣    砥 易⥫쭮 뢮 
࠭.  ᮧ  , Windows ஢,   
⠭ ⨫ WS_VISIBLE. WS_VISIBLE  㣨 ⨫ ⠭ 
뢠  , ⥬  ⠭  ᡮ  
 䥩᭮ ꥪ Attr.Style.  䥩 
뢮  ࠭ ⮫쪮  砥 ⠭ ⨫ WS_VISIBLE.
      ६ ᫥ ᮧ,      ⠭
맮 㭪樨- 䥩᭮ ꥪ Show.

         ⭮襭 த⥫-  

     Windows ਫ 䥩  (,   
ࠢ騥 ) 易  ᮡ ⭮襭ﬨ த⥫-⮬. 
䥩   易묨,     
த⥫᪨ , 㣮 ୨.  ⠩  த⥫᪨
⭮襭  ᫥⢥   ஢, 
 ⭮襭ﬨ  ꥪ⠬. ୥   易⥫쭮
ந室  ᢮ த⥫᪮   ᫥  ᢮⢠.
    ୥  -  䥩 , ࠢ塞 㣨
䥩 ⮬. ਬ,  ᯨ᪮ ࠢ  
   ஬  .  뢮 ⮫쪮  砥
뢮  த⥫᪨ .  ,   
୨ , ࠢ塞묨 ஦騬  .  ⨨
த⥫᪮ , ୨  뢠 ⮬᪨; 筮,
 ६饭 த⥫᪮ ,   ୨  ६
  .
     䥩  (,    ࠢ騥 )
 㯠  த⥫᪨   ୨ .

    ᪨ ୨ 

      த⥫ 䥩᭮   ६ 
஢. ⥫᪨  ꥪ  ࠬ஬
 䥩᭮ ꥪ. ୨  ꥪ ࠭  ᢮
  Parent  ᢮ த⥫᪮  ꥪ 
㪠⥫   ꥪ.  ⠪ ⮬᪨ ࠭  ᢮
୨  ꥪ⮢.
     ।  䥩᭮   ୨ , 
⠪  ⠢  ஢ ୨  ꥪ.
᫥ ⮣,  ਪ ணࠬ 뢠 㭪-
த⥫᪮ ꥪ Create, ᮧ 䥩  த⥫. ᫨
ᮧ 諮 ᯥ譮,  뢠 㭪- SetupWindow.
TWindowsObject::SetupWindow ⢫   ᥬ ୨  
ᮡ⢥ ᯨ᪥ ୨ , ,  㬮砭, 뢠
㭪- Create   ,  ᪫祭 .
୨   ⠭ ᮬ WS_VISIBLE 뢮 ࠧ ᫥
ᮧ.
     室 ८। SetupWindow த⥫᪮   ⥬,
⮡  ᫥ ᮧ ୨  ⢫﫠 ⠭ 
ࠬ஢.   ᯨ᪠ ⠬   ⠪ 
ਬ஢.  ⮬ 砥, ᯥ 맮 㭪樨- SetupWindow
  襣  ꥪ  ஬ ८।
㭪樨- SetupWindow.
    !!! ਬ ८। SetupWindow    10 襩
ਪ ணࠬ.
      ᪫祭 ୥  (ਬ ᯫ뢠饣 ) 
ࠡ⪨  㬮砭, ᫥ ஢ ꥪ 맮
㭪- DisableAutoCreate.     ࠡ
୮   㬮砭 (⠪   ,  筮
᪫砥  ⠪ ࠡ⪨) 맮  㭪-
EnableAutoCreate.
     맮 㭪樨- Create த⥫᪮  ਢ 
맮 㭪権- Create  ୨ , 맮 
த⥫᪮  ਢ  맮 ஢  ୨ .
㭪- CanClose ⠪ ⢫    ᮡ⢥
ᯨ ୨ , 뢠 㭪- CanClose  ୥
 ꥪ.  頥 TRUE, ᫨  ୨  ⠪
 TRUE.

      ୨ 

        㭪樨-, ⢫騥 樨
 ୨  ண   楫 믮  ⢨.
ਬ,  㦭 㤥 ஢  ୨  ஢ન  . 
⮬ 砥, ᯮ ᫥㥬  TWindowsObject 㭪-
ForEach   .
    㭪樨- ForEach  FirstThat   ⢥ ࢮ
㬥 㪠⥫  㭪.   "ObjectWindows  ++.
ࠢ筮 㪮⢮"   ஡ ଠ樨 
TWindowsObject::ForEach  TWindowsObject::FirstThat.

    void CheckTheBox(Pvoid P, Pvoid Param)
    {
      (PTCheckBox)P->Check();
    }
    void TMyWindow::CheckAllBoxes();
    {
      ForEach(CheckTheBox, NULL);
    }

        㭪樨-, ⢫騥
  ᯨ ୨   楫 ᪠ । ୥
. ਬ,    ᪮쪨 ୨   ஢ન 
 ।  ⠭  ஢ન.  ⮣,
ᯮ ᫥㥬  TWindowsObject 㭪- FirstThat 
 .

    BOOL IsThisBoxChecked(Pvoid P, Pvoid Param)
    {
       return ((PTCheckBox)P->GetCheck() == BF_CHECKED);
    }

    PTCheckBox TMyWindow::GetFirstChecked();
    {
      return (FirstThat(IsThisBoxChecked, NULL);
    }

         ࠡ⪠ ᮮ饭

    ணࠬ ObjectWindows    裡  Windows.   
, ਪ ணࠬ ࠢ 䥩ᮬ 짮⥫ ⥬ 맮
㭪権 Windows.  㣮, Windows 뫠 ᮮ饭 ਪ
ணࠬ  ⢥  ந室騥   ᮡ, ⠪  롮
짮⥫ 㭪  (WM_COMMAND)  ⨥   ""
(WM_LBUTTONDOWN).   100 ⠭ ᮮ饭 Windows; 
 ⠪ ।  ᮡ⢥ ᮮ饭,    
7 " ObjectWindows".
    ਫ Windows ⢫ ࠡ  ⢥  ᮮ饭,
祭  Windows.   । 㦭   ᯮᮡ ॠ樨
 ਭ ᮮ饭.   ⫨   ਫ. 
६  ࠡ⪨ ᮮ饭  뢠 㭪樨 Windows,
,  ᢮ ।,  ᠬ ஢  ᮮ饭 Windows.
    室騥 ᮮ饭 ᥣ । ⤥쭮  - ,
 ஥ ⥪騥 ᮡ  訬 ࠧ. ਬ,  ⨨
  ""  । , 㥬 ᮮ饭
WM_LBUTTONDOWN ।砥  ⮣ . ObjectWindows ⮡ࠦ
室騥 ᮮ饭      㭪樨- ⢥.
     ⢨ ᮮ饭 Windows  㭪権- ⢥  
ନ ᭮ ਪ ணࠬ ObjectWindows.    㢨,
 易 ਫ ObjectWindows  ॠ஢ 
ᮡ Windows.  ⫨砥   ࠤ樮 ணࠬ, ࠡ 
ࠢ .  室  ணࠬ஢ 뢠 騬 
஦ ᮡﬨ ᮮ饭. ᭮  ⠪ 室: 
   .  室 ॡ 樯 ணࠬ஢, 
⥬ 㯠 ᮧ 㤮 ⨧ ਪ ணࠬ.

    ⢥  ᮮ饭

     ⮣, ⮡    ꥪ ⢥  室騥
ᮮ饭 Windows,   ᮧ 㭪樨-, ᮮ⢥騥,
 ᭮ -,  饬 ࠡ⪥ 室饬 ᮮ饭.
 㭪樨- 뢠 㭪ﬨ-⠬ ⢥ 
ᮮ饭.  ᯥ樠쭮 ᮮ⢥⢨ (ᮮ饭)-(㭪-)
⢫  ७ ⥩  㠫
㭪権.  ન஢ 㭪樨-  㭪樨- ⢥ 
ᮮ饭,  㬬 WM_FIRST  ⠭  ᮮ饭  
 㠫쭮 㭪樨-:

    class TMyWindow : public TWindow {

    public:
    ...
       virtual void WMRButtonDown(RTMessage Msg) =
         [WM_FIRST + WM_RBUTTONDOWN];
    ...
    };

     ⮬ ਬ 㭪- WMRButtonDown 뢠 
祭 ꥪ⮬ TMyWindow ᮮ饭 WM_RBUTTONDOWN. 
㭪樨-  ᮮ饭  易⥫쭮  ᮢ,  
ᮢ 砥 ⠥ ணࠬ. ObjectWindows ᯮ 
ᮣ襭  ᢮ 䥩 .
    Msg ॡ 㬥 ⨯ RTMessage. RTMessage  ।塞 
ObjectWindows ⨯ 뫪   TMessage, ᮤঠ  WParam,
LParam  Result.  WParam  LParam (⨯ WORD  LONG) ᮤঠ
ଠ  ᫠襬 ᮮ饭 ᮡ⨨.  ᥣ  ࠬ
ᮤন   ଠ樨. ਬ,  뫪 ᮮ饭
WM_LBUTTONDOWN, 襥 ᫮ LParam ᮤন -न 窨  ன
ந諮 ⨥  "",  襥 ᫮ - -न.
    LParam ।   ꥤ  ᮡ  LP,
ᮤঠ饩  Hi  Lp ⨯ WORD. ⮬,   ᯮ짮
Msg.LP.Hi  Msg.LP.Lo  뫪  襥  襥 ᫮ Msg.LParam.
WParam  筮,   ꥤ  ᮡ 
WP.  ,  㤥 ᯮ짮 WParam   LP.Lo  LP.Hi,
騥 ⨯ WORD. Msg ।  뫪, ⠪  ᪮쪮 ᮮ饭
Windows ॡ ⢥, ࠭塞 訬 㭪ﬨ-⠬ 
 Result.
     ணࠬ ObjectWindows    ஢
ᮮ饭 Windows    ꥪ   ⢥.   
। ᮮ⢥騥 ⨬ ᮮ饭 㭪樨-.  ⮬
砥, ⠪ ᮮ饭   㬮砭 ࠡ뢠 ᫥㥬 
TWindowsObject 㭪樥-⮩ 襣  DefWndProc.
      ᪫祭   ⢥  ᮮ饭
ObjectWindows  ᪮쪨  ᮮ饭, 易    ୨
, ⠪  ।㥬 ࠢ騥    ப⪨.
    ⠭ .

     ᮮ饭  ᮮ饭 ୨ 

    Windows  ᮮ饭  ᭮ ,  롮
짮⥫ 㭪   ⨨ ᥫ.  ⨢樨
짮⥫ ࠢ饣 , ⠪     ᯨ᪠,
Windows  ᮮ饭  ᭮ ୨ 䨪஢.
設⢮ ⠪ ⢨ ਢ   ᮮ饭 WM_COMMAND.
     祭 ᯮ    ஢ 롮
(case), ObjectWindows ⮬᪨ ⢥砥  ᮮ饭 WM_COMMAND
樥 㣮,  ᯥ樠஢ ᮮ饭. 뢠
㠫쭠 㪭-   ᮤন ⮣ ண
ᮮ饭.  । 㭪樨- ⢥  ᮮ饭  ᭮
  ᮮ饭  ᭮ ୨ 䨪஢  ᯮ짮
⥩ ७  㭪権-,  뢠
.

    ࠡ⪠  ᮮ饭

     裡 ᮡ, 㥬   ᥫ஬, 
㭪樥-⮩ ⢥   ᮮ饭 ᯮ
䨪, 騩 㬬 ।塞  ObjectWindows ⠭
CM_FIRST,  䨪   ᥫ, ।塞  
  ᥫ. ਬ, 쬥 , ꥪ TFileWindow, 饥
 㭪  File|New, File|Open  File|Save. 䨪 ,
।塞  䠩 OWLRC.H, CM_FILENEW, CM_FILEOPEN  CM_FILESAVE,
ᮮ⢥⢥.   㤥 룫拉  ⮬ 砥 । ꥪ
TFileWindow:

    class TFileWindow : public TWindow
    {
    ...
      virtual void CMFileNew(RTMessage Msg) =
        [CM_FIRST + CM_FILENEW];
      virtual void CMFileOpen(RTMessage Msg) =
        [CM_FIRST + CM_FILEOPEN];
      virtual void CMFileSave(RTMessage Msg) =
        [CM_FIRST + CM_FILESAVE];
    ...
    };

    , , 饥 ,  ᥣ 易 । ⢥ 
ᮮ饭  ᭮ .  ⮣,  ⢥  । 
  ୨ ,  ࠢ騥 . ୥ , ஥
    ६ ⢫ 롮    
ᥫ,  २⢥ ࠢ ⢥  ᮮ饭  ᭮
, ।  ⮣ 㭪- ⢥. ᫨  
। ⢥,   뫠 த⥫᪮  ⮣ ୥
, ⥬   த⥫᪮   ⠪ ,   ,   㤥
 ⢥  ⨣ ,  .  砥, 
।㥬 ࠢ騩     ࠧ ⢥  롮 
 ।஢.  ਬ ᯮ짮  孮 ᬮ
 ObjectWindows TEditWindow.

    ࠡ⪠ ᮮ饭 ୨ 

     짮⥫   ࠢ騩  (୥ ),
ਬ    ࠥ ଠ  ।㥬
ࠢ饬 , த⥫᪮  ⮣ ࠢ饣  
 ꥪ    㢥饥 ᮮ饭.  ⢥
த⥫᪮   㢥騥 ᮮ饭 ।
㭪-  䨪஬, 騬 㬬 ।塞 
ObjectWindows ⠭ ID_FIRST  䨪 ୥ ,
।塞       ࠢ饣 ꥪ.
ਬ, ᬮਬ    ᯨ᪠. 騩 ࠣ ।
㭪- HandleListBoxMsg  ⢥  㥬 
ᯨ᪠ ᮮ饭  ᭮ ୨ 䨪஢:

    class TListBoxWindow : public TWindow
    {
    ...
      virtual void HandleListBoxMsg(RTMessage Msg) =
        [ID_FIRST + ID_LISTBOX];
    }

 ID_LISTBOX  ⠭⮩, ࠢ 䨪 ࠢ饣
. 䨪 ୥    ⥫ 楫
᫮, 訬 4,096.
    ୠ⨢ ⢥ த⥫᪮   ᮮ饭 ᮡ⨩  ୨
,   । 㭪樨- ॠ樨  㢥饥
ᮮ饭  ᠬ ࠢ饬 .   12, ࠧ " 
।०騥 ᮮ饭 ࠢ ⮢".

    ࠡ⪠ ᮮ饭  㬮砭

    !!!  ஡ ଠ  㢥 ᮮ饭 ਢ 
 12 "ࠢ騥 ꥪ".
     ࠧ ⭮  ᮮ饭 Windows,   墠뢠
  ᯮ짮 ⠭ WM_FIRST (砥,  ᮮ饭
Windows),   騥 ᮮ饭ﬨ  ᭮ , 㢥 
䨪 ୥ .
    ਫ Windows 砥 ࠧ  ᮮ饭, 祬 
室 ⢥. Windows,  㬮砭, ࠡ뢠   
ᮮ饭,  ᮡ, 뫠 ࠢ騬 ⠬. ਬ, 
 짮⥫ ଠ樨  ।㥬 ࠢ騩 , 
㬮砭, Windows ⢥砥 뢮  ᨬ ,  室,
ப⪮. ⢥ Windows  㬮砭 뢠   ꥪ⮢
ObjectWindows 㭪樥-⮩ DefWndProc (  
ࠢ騥 ꥪ).
       ᮮ饭 Windows (⥬ 
㭪樨- ⢥  ), ObjectWindows ⮬᪨ 뢠
㭪- DefWndProc 䥩᭮ ꥪ. ,  ᫨ 
 ᮮ饭  ।   㭪樥-⮩ ⢥, 
 ࠡ   맮 DefWndProc.
    ਬ, ᫥騩 ࠣ ணࠬ 墠뢠 ᮮ饭 WM_CHAR,
஥ 뫠 ꥪ ।㥬 ࠢ饣   ६
   ଠ樨.  㭪- ⢥  ᮮ饭 WM_CHAR
 , ந  TEdit:

    void TMyEdit::WMChar(RTMessage Msg)
    {
       MessageBeep(0);
    }

     㭪- ॠ 뤠祩 㪮 ᨣ  
짮⥫   . , । ᢮ ⢥, 
頥 ⠭ ࠡ,   楤ன 
㬮砭. ⮬,   㪮 ᨣ,  ⥪  ।㥬
ࠢ饬   .
     ⥫ , 筮,  , , ६, ⢫
⠭ ⢨.  ⮣,   ⢨  맮
㭪樨- DefWndProc:

    void TMyEdit::WMChar(RTMessage Msg)
    {
       MessageBeep(0);
       DefWndProc(Msg);
    }

    ᫥ ⠪ ८। 㭪樨-  㤥  
 ᫥ ⮣, ᨬ 㤥   ।㥬 ࠢ騩
.
     , 뢠 DefWndProc  ᫥ :
    -    ,  ᮮ饭 뫮 祭,   
८।  ࠡ  㬮砭.
    -    墠뢠 ᮮ饭  ⢫ ⢨,
 ⠭.
     墠뢠 ᮮ饭  몫砥  
.

     10.  ꥪ

     ⮩    ᮧ, ⮡ࠦ   
ਪ ணࠬ.  ObjectWindows  Window । 
 ᭮ ࠪ⨪     ⠫  ணࠬ.
Window । ࠪ⨪  , , ᮢ 
ப⪨ ,  ⠪,  ୨   ࠡ⪨  ᮮ饭.
    Window   ந  TMDIFrame, TMDIClient, TControl
 TEditWindow. TMDIFrame  TMDIClient ᯮ  ਫ
ObjectWindows, ᮮ⢥ ⠭ 㬥⠫쭮 䥩
(MDI) Windows. ᭥ MDI   ⨯ ਢ   14. TControl
। ࠢ騥 , ⠪     ᯨ᪮, 
뢠   12. TFileWindow, 뢠 ,  ந
 TEditWindow.  ᥣ,  㤥 ᮧ     
Window.
      뢠 TWindow, TEditWindow  TFileWindow  砥
ਬ ஥  ᮢ Windows.

          Windows

     ,  ਪ ணࠬ ObjectWindows  
 , ஥    .   ணࠬ
ObjectWindows, 筮,   , ந  Window.
 ਪ ணࠬ  㣨 , 筮 騥 ୨
 .
     ⥫  ⠪ 筮  ࠬ ᮢ,
ந  Window. ਬ, ணࠬ ᮢ  ।
TPaintWindow  ᢮  ,  TZoomWindow  㣮 ,
⮡ࠦ饣 㢥祭 ᮢ ࠦ.  ⮬ 砥,
TPaintWindow  TZoomWindow ந室  Window. ਫ  訬
, TZoomWindow  㤥 ᯥ樠஢ ᨥ
TPaintWindow  㯠  , ந  TPaintWindow ( Window
).

         樠  ᮧ  ꥪ⮢

       ࠢ騬 ꥪ⠬,  ꥪ 
䥩묨 ꥪ⠬,  뢠  묨 䥩묨
⠬.   ⭮,  ।⠢  ,
㥬 ।⢮ ࠭     Window
ਯ. ᪮    ,  ᮧ ⢫
 ⠯: , ஢ ꥪ, ன, ᮧ 
.

    樠  ꥪ⮢

    筮 Windows ਫ   ࠧ ⨫ :
४뢠騥  ᯫ뢠騥, ࠭, ப稢  墠뢠,
⮫쪮   .  ਡ ⨫,  ⠪  㣨 ਡ
ᮧ, 筮 ⠭  ஢  ꥪ, 
ᯮ  ᮧ ।⠢塞   .
    ਡ ᮧ  ꥪ, ⠪   ⨫,  
, ࠭     Attr,  ⨯ TWindowAttr.
TWindowAttr 砥 ᫥騥  :
------------------------------------------------------------------------
   ᯮ짮
 
------------------------------------------------------------------------
 Style        DWORD, ᮤন ⠭ ஢ ⨫.
 ExStyle      DWORD, ᮤন ७ ⨫.
 Menu         LPSTR,   .
 X            int,  ਧ⠫ न 砫쭮
             ⮯ .  ਧ⠫쭮 न⮩
              孥 㣫   ࠭.
 Y            int,  ⨪ न 砫쭮
             ⮯ .  ⨪쭮 न⮩
              孥 㣫   ࠭.
 W            int,  砫 ਭ   ࠭
             न.
 H            int,  砫    ࠭
             न.
 Param        LPSTR, 㤥 ।    ᮧ.
 Id           int,  䨪 ୥ , ᯮ㥬
              裡  ࠢ騬 ⮬   த⥫᪨
               . Id   ࠧ   ୨
               த⥫. ᫨ ࠢ騩  । 
             ,   Id  ᮢ  䨪஬ .
                   Menu  Id.
------------------------------------------------------------------------
     10.1:   TWindowAttr.

Ŀ
(0,0)                                            
  (X,Y)                                          
  Ŀ    
                  Title                       
  Ĵ     
  Menu                                        
  Ĵ     
                                          H    
                                              
                                              
                                              
                                              
      
   W Ĵ      


    㭮 10.1 ਡ 

     㬥⮬  맮   ꥪ த⥫᪮
.  NULL, ᫨    ( த⥫). 
Window ⠭   Title   㬥⮬
LPSTR.  㬮砭,  ⠪ ⠭   Attr 
WS_OVERLAPPEDWINDOW, ᫨     ਫ
(WS_VISIBLE  ⨢ 砥). X  W ⠭  CW_USEDEFAULT,  Y
 H  0.  ᠬ  ᯫ뢠饥   ਥ ࠧ஢.
  ᠫ ⠭ ᯮᮡ  ࠧ஢   .
     ᮧ ᮢ , ந  Window  易⥫쭮
,  ࠩ , 뢠    :

    class MyWindow : public TWindow
    {
    ...
      TMyWindow(PTWindowsObject AParent, LPSTR ATitle) : TWindow(AParent,
                ATitle) {}
    ...
    };

    ⥬   ⠭ ਡ   ꥪ, אַ
䨪樥      Attr. ਬ,  
ᨬ஢ :

    class MyWindow : public TWindow
    {
    ...
      TMyWindow(PTWindowsObject AParent, LPSTR ATitle) : TWindow(AParent,
                ATitle) {}
    ...
      PTChildWindow AChildWindow;
      PTListBox ListBox;
    };
    ...
    TMyWindow::TMyWindow(PTWindowsObject AParent, LPSTR ATitle) :
                         TWindow(AParent, ATitle);
    {
       Attr.Style |= WS_MAXIMIZE;
       AChildWindow = new TChildWindow(this, "Child Title");
       ListBox new TListBox(this, ID_LISTBOX, 201, 20, 20, 180, 80);
    ...
    }

    ⨬,   ।饬 ਬ  ⮣  ⢥砥 
஢  ꥪ⮢ ୨ , ⠪  ᯫ뢠騥  
 ᯨ᪮.  ⨢, ୥   ⠭ ᢮
ਡ  ᮡ⢥ :

    TChildWindow::TChildWindow(PTWindowsObject AParent, LPSTR ATitle) :
                               TWindow(AParent, ATitle)
    {
       Attr.Style |= WS_POPUP | WS_CAPTION;
       Attr.X = 100;
       Attr.Y = 100;
       Attr.W = 300;
       Attr.H = 300;
    }

    ਡ Style   樥 ⠭  ⨫  
⠭⮩, ⠪ 
    - WS_OVERLAPPEDWINDOW
    - WS_POPUPWINDOW
    - WS_CHILDWINDOW
    - WS_CAPTION
    - WS_BORDER
    - WS_VSCROLL
    ।⠢ ᯨ᮪ ᮤন ⮫쪮   ᯮ㥬
⨫ ⠭.  ᯨ᮪ ਢ   7 "⠭ Windows" 
 "ObjectWindows  ++. ࠢ筮 㪮⢮.".
     ⢥ ୠ⨢, ᫨   । ந  
୥ ,   ᪮஢  ꥪ,  ⥬,
⠭  ਡ    த⥫᪮ :

    TMyWindow::TMyWindow(PTWindowsObject AParent, LPSTR ATitle) :
                         TWindow(AParent, ATitle);
    {
       AssignMenu(100);
       AChildWindow = new TChildWindow(this, "Child Title");
       AChildWindow->Attr.Style |= WS_POPUP | WS_CAPTION;
       AChildWindow->Attr.X = 100;
       AChildWindow->Attr.Y = 100;
       AChildWindow->Attr.W = 300;
       AChildWindow->Attr.H = 300;
    ...
    }
    !!! ⨬,      ⠭  Attr.Menu,
 ⮣ ᯮ 㭪- AssignMenu.

      ⮢

      ⮢  ᮬ ஥ 
⮢, 易   ꥪ⮬.  ⢫  맮
㭪樨- ꥪ ਪ ணࠬ MakeWindow, ।
 ꥪ  ⢥ ࠬ:

    if (GetApplication() -> MakeWindow(AWindow))
       // ᯥ譮 ᮧ
    else
       // ᮧ  㤠

    !!! GetApplication() 頥 㪠⥫  ꥪ ਪ
ணࠬ.
    MakeWindow 뢠   㭪樨-. ࢠ, ValidWindow,
஢, -  ꥪ ᪮஢ ᯥ譮. ᫨
஢  - 稭  㤠, MakeWindow 㤠
 ꥪ  頥 NULL. ᫨ ஢ 諮 ᯥ譮, 
MakeWindow 뢠 㭪-  ꥪ Create.
㭪- Create 㪠뢠 Windows  ᮧ  .
᫨ Create 稢 訡,  MakeWindow 㤠  ꥪ 
頥 NULL.  ⨢ 砥,  頥 㪠⥫  
ꥪ.
        ᮧ ⮫쪮  㭪樥,  
४㥬  ᮧ   맮 Create.   ਪ
ணࠬ ᮧ ⮬᪨   , 맮
TApplication::InitInstance.  ⠫  ਫ 
୨   , 묨  묨,   筮 ᮧ
 㭪樨- SetupWindow  ꥪ⮢ த⥫᪨ .  
 ᮧ ᪨, " ", 맮 MakeWindow.

    饭 ଠ樨  ᮧ  樠樨

     ஥஢      । 
  ⠭ ਡ⮢   ஢  ୨
 ꥪ⮢. (ਡ   ⠪ ⠭  
த⥫᪮ .)
    GetApplication()->MakeWindow ᮧ    ꥪ
맮 㭪樨-  Create. ᫨ WS_VISIBLE  
 ⨫     Attr.Style,   ᫥ ᮧ
⮡ࠦ  ࠭. ᫥ ⮣, 뢠 㭪- 
SetupWindow, ,  㬮砭, ᮧ  ୨ .
     த⥫᪮  筮   ୨ .
ਡ  ꥪ 筮 ⠭  ஬, 
஬  த⥫᪮ . ᪮   ਪ
ணࠬ   த⥫, ꥪ ਪ ணࠬ  
ᮧ  ⮢ ⠭ ਫ.

           

     㦥 ,   ६ 樠樨  ꥪ  
⠭ ਡ , ⠪  ⨫  ⮯, ⥬
   ꥪ Attr.    ਡ
ᯮ  ᮧ ᮮ⢥饣  , 
뢠 ਡ⠬ ᮧ.
    !!!      맮 㭪樨- AssignMenu.
      㣨 ਡ, 騥 梥 䮭, ।⠢
   "".  ᬮ  ਡ⮢,  Windows
ࠧ  ᪮쪨 ࠧ묨 ⨯ ਪ ணࠬ.  ६饭
 ""   ਪ ணࠬ  㣮,  
  ५ ()  ப ( ஭ ⠡) 
⮭ ( ᪨ ணࠬ) ४.
     "㣨" ਡ  (  )  䨪樥
 Windows    ᮧ. ਡ, ।塞  
Windows,  ⫨稨  ਡ⮢ ᮧ,       
,  ࠭      Windows.
     !!!
     Windows    ᮬ  ꥪ ObjectWindows.
    ObjectWindows, , ࠧ  
ᠬ  Windows.
     Windows 易⥫쭮   ॣ஢  Windows 
ᮧ  ⮣ . ObjectWindows ᠬ   ॡ㥬
ॣ樨  ᮧ . ObjectWindows ⠪ ন 
Windows  㬮砭  ਡ⠬ ॣ樨  㬮砭. ᫨  
  -  ਡ⮢  㬮砭,     
  ॣ樨.
    ᫨   -    ਡ⮢    
,   樨஢    , ।  ᮬ
Windows.  ⮣,  ८।  㠫 㭪樨-
襣 : GetWindowClass  GetClassName.  GetWindowClass  
ॡ㥬 ਡ ॣ樨. 㭪 GetClassName  頥 
(LPSTR)  . Windows । 㭪-
㥑,  "OWLWindow",     㬮砭.
     ।   IBeamWindow,  ᯮ 
 ଥ I-beam,   ⠭ ५, ८। ᫥㥬
㭪- GetClassName:

    LPSTR IBeamWindow::GetClassName()
    {
       return "IBeamWindow";
    }

    頥    ᮢ,     ᮢ, 
⢨⥫  .    祭.
    !!! 頥   ᯮ  䨪 
Windows   ॣ樨  Windows.
    㭪- GetWindowClass ᯮ  WNDCLASS 
뫮 㬥     묨 ਡ⠬ ॣ樨. 
 맢  砫 㭪- 襣  
GetWindowClass,  ⥬  ⠭   ॡ㥬 祭. 
᫥饬 ਬ 뢠 Window::GetWindowClass  ⥬,
⠭  hCursor, ᮤঠ饥 ਯ  .

    void IBeamWindow::GetWindowClass(WNDCLASS& AWndClass)
    {
      TWindow::GetWindowClass(AWndClass);
      AWndClass.hCursor = LoadCursor(NULL, IDC_IBEAM);
    }

    IDC_BEAM  ⠭⮩, ।⠢饩     
Windows.  㭪 10.2  १ ࠡ ணࠬ, ᯮ饩
ꥪ IBeamWindow.

    㭮 10.2 ணࠬ, ᯮ  IBeamWindow.

    ਡ ॣ樨

     㬮砭, ObjectWindows ।  ObjectWindows, 
ᯮ  ஢ Window. ਡ ॣ樨 "OWLWindow"
 :  ,   ଥ ५  ⠭ 梥 .
⮡   ࠪ⨪  襣 , ந 
Window,   ८।  㭪- GetWindowClass.
GetWindowClass ।  뫪  WNDCLASS,   
 ਡ⠬ ॣ樨.
     ਢ ⠡  묨 묨 ﬨ  WNDCLASS
  祭ﬨ  㬮砭,    ⠭
TWindow::GetWindowClass.

---------------------------------------------------------------
 ࠪ⨪                祭  㬮砭
---------------------------------------------------------------
 ⨫        Style          CS_HREDRAW | CS_VREDRAW
              hIcon          LoadIcon(0, IDI_APPLICATION)
              hCursor        LoadCursor(0, IDC_ARROW)
  䮭          hbrBackground  (HBRUSH)(COLOR_WINDOW+1)
   㬮砭  lpszMenuName   NULL
---------------------------------------------------------------
     10.2 ਡ ॣ樨 

     ⨫ 

     Style  WNDCLASS ⫨砥  ⨫ ,
  ਡ ᮧ  ꥪ  Attr.Style. Attr.Style
ᯮ    譥  ᮧ , 
⠭ ⠭⠬ WS_("⨫ ").
     Style  WNDCLASS ᯮ  
।   ᫥  ᮧ,  ⠭
⠭⠬ CS_("⨫ "). ਬ,  ⠭ ⠭
CS_HREDRAW,   ਧ⠫쭮 ࠧ  ⢫ 
 ᮢ. ⠭ CS_NOCLOSE,   Close
ࠢ饣 .  Style  ᮤঠ  ⠭ CS_ 
 .  ᯨ᮪ ⠭ CS_ ਢ   7 "⠭
Windows"  " ObjectWindows  ++. ࠢ筮 㪮⢮.".
    TWindow::GetWindowClass ⠭     :

    AWndClass.Style = CS_HREDRAW | CS_VREDRAW;

     

     hIcon ᮤন ਯ , ᯮ㥬 
।⠢    ஢ ﭨ. 筮,  㤥
।  , ।⠢饩   襩 ணࠬ.
Window::GetWindowClass ⠭    ਯ 㦥
ᮧ , IDI_APPLICATIN, 饩  ⮣ אַ㣮쭨.

     

      hCursor ᮤন ਯ , ᯮ㥬
 ।⠢ 㪠⥫ "", 樮㥬  .
Window::GetWindowClass ⠭    ਯ
⠭⭮ ५ Windows, IDC_ARROW.  㣨  
 ਢ :
    - IDC_IBEAM
    - IDC_WAIT
    - IDC_CROSS
    ,   ,  । 짮⥫.

     梥 䮭

       梥 䮭 . Window::GetWindowClass ⠭
   ⥬ 梥   㬮砭,   
⠭   ࠢ (Control Panel).   ⠭ 
  ਯ 䨧祪 窨 । 梥.  ⨢,
  ⠭     ⥬ 梥⮢, ⠪ 
COLOR_ACTIVECAPTION, ⠭ hbrBackground  COLOR_ACTIVECAPTION + 1.

       㬮砭

      ᮤন 㪠⥫    , ஥  騬
   ⮣  Windows. ਬ, ᫨  । ⨯
EditWindow, ᥣ 騩 ⠭⭮  ।஢,   
    ⮬ .  ਥ    室
  ਡ⮬ ᮧ  . ᫨   
䨪  101,    ⠭   

    AWndClass.lpszMenuName = MAKEINTRESOURCE(101);

         ப稢 

      ᥣ  ᬮ 墠 ࠧࠬ   뢮
ଠ.  ,  ObjectWindows   ணࠬ஢ 
⢫ ப⪨  ᮤন. Window 㯮祭  
ꥪ TScroller 믮  .
    짮⥫ 筮 㫨  ப⪨   
짮⥫   ப⪨ ⥪饣 ࠦ. ( 
ப⪨    ࠢ騬 ⠬,   
ᠬ , ᮧ    ⨫ﬨ ᮧ, 騬 WS_VSCROLL
 WS_HSCROLL). TScroller ஦  ப⪨ , ᯥ稢
⮬⨧ ᬮ  ᮤন.
     ,  ObjectWindows  ⠪ ப稢 
६饭 짮⥫ ""   짮⥫   
.  㤥 뢠  孨᪨ ਥ -ப⪮;  㤥
ࠡ  ,     ப⪨.

    ਡ ப⪨

    TScroller ᮤন 祭,  । ࠧ ப稢
ᮤন .  祭 ࠭    TScroller
XUnit, YUnit, XLine, YLine, XPage, YPage, XRange  YRange. 
, 稭騥  , ।⠢ ਧ⠫ 祭, 
稭騥  Y - ⨪ 祭.
     ப⪨ । 㯭 ࠧ ப⪨, 
 訬 ᫮  ன⢠ (筮 ᥫ  , 
  ० ।⠢ ⮡ࠦ) ப稢 
ਧ⠫쭮  ⨪쭮 ࠢ.  ப⪨ 筮
  ⨯ 뢮 ଠ樨. ਬ,  뢮 ⥪⮢
ଠ樨  । ਭ ᨬ 8 ᥫ  ⮩ 15 ᥫ,
㤮 祭  XUnit  YUnit  8  15, ᮮ⢥⢥.
    㣨 ਡ ப⪨ - ப, ࠭   -  
ନ  ப⪨. 祭 ப  ࠭ ।⠢ ᮡ
᫮ ப稢   ⢥   짮⥫  ப.
, 樠㥬 ⨥  ""    ५ 
  ப⪨, ப稢 "ଠ⨢ ப"   ᫮
, ࠭    ப. ⨪   ᠬ
 ப⪨ (    ப⪨,  "㭪") ப稢
"ଠ⨢ ࠭". ਡ   饥 ᫮ ,
  ப稢, 筮  ᭮ ࠧ  , ⠪
  ।㥬 㬥.
    ਬ,  ﭥ   ।஢ ⥪. ᫨ 
 ⮡ࠧ 䠩, 騩 400 ப ⥪, ਭ 80 ᨬ 
ப  50 ப  ࠭,   祭  ਡ⮢
᫥騥:

---------------------------------------------------------------
    祭  
 
---------------------------------------------------------------
 XUnit           8      ਭ ᨬ
 YUnit          15       ᨬ
 XLine,YLine     1      1   ப
 XPage          40      40 ᨬ  ਧ⠫ ࠭
 YPage          50      50 ப  ⨪ ࠭
 XRange         80      ᨬ ਧ⠫ 
 YRange        400      ᨬ ⨪ 
---------------------------------------------------------------
     10.3  ⠭    ।஢

    ꥪ TScroller  ⨬ 祭ﬨ  ⢫   ࠧ
ப  ப   ࠭.  䠩   ᬮ७
   ப⪨  -ப⪮.
    祭 ப,  㬮砭,  ࠢ묨 1, ⮬ ᫨ 
室  祭,     .  ⠪ 奬
⠭  㬮砭   ࠭. 奬 ᭮뢠  ⥪饬
ࠧ  ⠪,   ப⪥ "࠭",   ⢨⥫쭮 㤥
ப稢    ਭ ⥪饩  짮⥫, 
ᨬ  ࠢ ப⪨. ᫨    ८। 
堭,       祭 ࠭.

    ࣠樨 ப⪨  

     ࣠樨 ப⪨  , ᪮   襣
 ꥪ TScroller,   㪠⥫     
 Scroller. ᬮ  ,   ᪮஢ ꥪ, 
 ⠭ ࠧ   .   ப⪨ 
 易⥫묨  ࣠樨 ப⪨,   砥
-ப⪨,  ப稢   .    
,         
Attr.Style ⠭ WS_VSCROLL, WS_HSCROLL,  . ਢ ਬ
   ।஢ ⥪:

    TScrollWindow::TScrollWindow(LPSTR ATitle) : TWindow(NULL, ATitle)
    {
      Attr.Style |= WS_VSCROLL | WS_HSCROLL;
      Scroller = new TScroller(this, 8, 15, 80, 60);
    }
    !!!  ࠣ ணࠬ  䠩 SCROLAPP.CPP.

     TScroller ,  ⢥ 㬥⮢, ப稢 
 砫 祭    XUnit, YUnit, XRange  YRange,
ᮮ⢥⢥. ਡ ப  ࠭ ⠭   祭 
㬮砭.
     뢥  ࠭, ᮤন  짮⥫ ⮣ 
 ப稢  ⨪쭮  ਧ⠫쭮   
 ப⪨  -ப⪮. 㭪- ⮣  Paint
 ᮢ뢠  ଠ,    ⮬, 뫠 
ந ப⪠  . 筮,  ᮢᥬ 㤮 ᮢ
讥 ࠦ, ᫨ ⮡ࠦ ⮫쪮  . 㭪-
Paint   ⨬஢  ᮢ ⮫쪮  ࠦ,
 㤥 뢮.  ਥ 뢠   ࠧ.

    ਬ  ப⪮

     ਬ   ஥ 業
ਫ, 饣 ப稢 ᪨ ⥦.  ਬ 
 אַ㣮쭨 㢥稢饣 ࠧ.  ⨭  㬥頥 
 짮⥫ , ࠧ頥  筮  VGA. 
ᬮ ࠧ ⥩ ⥦   ᯮ짮 
ப⪨,  -ப ⨭, ⥬   㤥ঠ 
 ""   짮⥫  쭥襣 ६饭   .

    #include <owl.h>

    //  TScrollApp, ந室饣  TApplacation
    class TScrollApp : public TApplication {
    public :
      TScrollApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
                 LPSTR lpCmdLine, int nCmdShow) : TApplication(AName,
                 hInstance, hPrevInstance, lpCmdLine, nCmdShow) {};
      virtual void InitMainWindow();
    };

    //  TScrollWindow, ந室饣  Window
    class TScrollWindow : public TWindow
    {
    public:
      TScrollWindow(LPSTR ATitle);
      virtual void Paint(HDC PaintDC, PAINTSTRUCT&, PaintInfo);
    };

    /*   TScrollWindow, ⠭ ⨫ ப⪨
         ꥪ Scroller . */
    TScrollWindow::TScrollWindow(LPSTR ATitle) : TWindow(NULL, ATitle)
    {
      Attr.Style |= WS_VSCROLL | WS_HSCROLL;
      Scroller = new TScroller(this, 8, 15, 80, 60);
    }

    /* ⢥  室饥 ᮮ饭 "ᮢ" ᮢ אַ㣮쭨.
       ⨬,  ⮤ Scroller BeginView,  ⠭ ਣ
       樮  ⭮⥫쭮 ⥪饩 樨 ப⪨, 㦥
       맢. */
    void TScrollWindow::Paint(HDC PaintDC, PAINTSTRUCT&)
    {
      int X1, Y1, I;

      for (I = 0; I <= 49; ++I)
      {
        X1 = 10 + I*8;
        Y1 = 30 + I*5;
        Rectangle(PaintDC, X1, Y1, X1 + X1, X1 + Y1 * 2);
      }
    }

    // ஢ MainWindow  TScrollApp ⨯ TScrollWindow
    void TScrollApp::InitMainWindow()
    {
      MainWindow = new TScrollWindow("Boxes");
    }

    //  ScrollApp
    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR
                       lpCmdLine, int nCmdShow);
    {
      TScrollApp ScrollApp("ScrollApp", hInstance, hPrevInstance,
                       lpCmdLine, nCmdShow);

      ScrollApp.Run();
      return ScrollApp.Status;
    }
    !!!  ணࠬ  䠩 SCROLAPP.CPP.

    -ப⪠  ᫥ ⮯

    ꥪ TScroller   -ப⪨  㬮砭, 
   몫祭 ⠭   AutoMode  FALSE.
ப稢     ᢮  ᫥ ஢
ꥪ TScroller:

    Scroller = new TWindows(this, 8, 15, 80, 60);
    Scroller->AutoMode = FALSE;

    ᫨  믮 ,  ப⪠  ⢫ ⮫쪮 
  ப⪨.
       -ப⪨   䠪,  祬
  । ""   짮⥫ , ⥬ ॥
㤥 ⢫  ப⪠.  ᨬ  쭮 宦
""  ,  ப稢  饭,  襣, ࠢ
祭 ப,  襣, ࠢ 祭 ࠭.
       -ப⪥, ᠭ  ਬ, "᫥"
  ப ⥬ ६饭  ப⪨,  "㭪".
㣨 ᫮, ⨭ ६頥   ६饭 㭪. 
᢮⢮ ᥣ ᯥ稢  ⪠ , ⠪, 
   㦭  ࠦ 짮⥫   ᪠
 "".
      , , ᫥ ⮯ 
⥫. ਬ, ᫨  뢮 让 ⥪⮢ 䠩,
᫥  ⢥   , - ﭭ
饭 饭    뢮 ⥪, ᮮ⢥饣 
 㭪.  ⮩ 樨,  몫 ᫥:

    Scroller->TrackMode = FALSE;

     ⮬ 砥,  ६饭 㭪  ந室  ப⪨
 ᪠  "".  짮⥫,  ⮬,
ப稢 ⮫쪮  ࠧ   㦭  ࠦ.

    䨪  ப⪨  

      ਬ,  饣 ६,  ।,  祭
      ஢ Scroller.  
, ,  ଠ  ⭠   , 
ਬ   ࠧ 뢮 ଠ樨. ⮬, 
室 ⠭   祭  ( 
)    ६. ᫨     祭  
஢,   ।   Scroller.
    㭪- SetRange   㬥 ⨯ long, ᫮
⨪  ਧ⠫ , । 騩 
ப⪨. SetRange  ᯮ짮 直 ࠧ,   ࠧ
ࠦ. ਬ,  ᯥ祭  뢮 ࠦ 100
 ਭ  300  ⮩,    ⠭
᫥騩  ப⪨:

    Scroller->SetRange(100, 300);

    ᫨   樠樨 ꥪ Scroller  ,  
祭  易⥫쭮 ⠭  ⢫ ப⪨.
ਬ,    ⠭  㭪樨-  SetupWindow:

    void ScrollScrolle::SetupWindow()
    {
      TWindow::SetupWindow();
      Scroller->XUnit = 10;
      Scroller->YUnit = 20;

    䨪  ப⪨

      ⢫ ப 맮  㭪権-
TScroller: ScrollTo  ScrollBy.      㬥 ⨯
long,   ନ ਧ⠫  ⨪  ப⪨.
ਬ, ᫨ 室 ⠭  ப⪨  孨
 㣮 ࠦ, ᯮ ScrollTo:

    Scroller->ScrollTo(0, 0);

    㣮 ਬ. ᫨ ࠦ  400     ⨪,
  ப⪨   ⠭  । ࠦ
᫥騬 ᯮᮡ:

    Scroller->ScrollTo(0, 200);

    㭪- ScrollBy ६頥  ப⪨ ,
,   ࠢ   ᫮ . ⥫ 祭
६  ப⪨  ࠢ  砫 न,
孥  㣫,  ⥫   ࠢ. ਬ,  
ப稢 ࠢ  10     20:

    Scroller->ScrollTo(10, 20);

    ⠭ ࠧ ࠭

     㬮砭, ࠧ ࠭ (XPage  YPage) ⠭ ᮣ᭮
ࠧ  짮⥫  . ப⪠ 頥  
 ࠧ   . 㭪-  
WMSize 뢠 㭪- ப稪 SetPageSize, 
⠭    XPage  YPage  ᨬ  ⥪饣
ࠧ  짮⥫  祭 XUnit  YUnit.
     ८। ⮣ 堭  ⠭ ࠧ ࠭
,   ८। ᫥㥬 訬  ꥪ⮬
㭪- WMSize:

    void TTestWindow::WMSize(RTMessage Msg)
    {
      TWindow::WMSize(msg);
    }

    ⥬,   ⠭ XPage  YPage ।⢥ 
 襣  (   , ந 
TScroller):

    TScrollWindow::TScrollWindow(PTWindowsObject AParent, LPSTR ATitle) :
                                 TWindow(AParent, ATitle)
    {
      Attr.Style |= WS_VSCROLL | WS_HSCROLL;
      Scroller = new TScroller(this, 8, 15, 80, 400);
      Scroller -> XPage = 40;
      Scroller -> YPage = 100;
    }

    ⨬ 㭪権- Paint  ࣠樨 ப⪨

     ।饬 ਬ ਪ ணࠬ ᮢ 50 אַ㣮쭨,
    ⪨ ⠭,     ⢨⥫쭮
묨   짮⥫.  ⮣ ந⥪ ࠢ 
 ᮢ  ᪮ ଠ樨. 㭪
TScroller::IsVisibleRect  ᯮ짮  㭪樨- 
Paint  ⨬樨 ᮢ.
    㭪- ScrollWindow::Paint, 뢠 , ᯮ
IsVisibleRect  । 室 맮 Windows 㭪樨
Rectangle. Rectangle ᯮ 㬥,   न
ன⢠,   ६  IsVisibleRect -   ப⪨.  ⮩
稭, 祭 X1  Y1, 砫 אַ㣮쭨,  (X2-X1)  (Y2-Y1),
ਭ   אַ㣮쭨,    ᮮ⢥騥 祭
  맮 IsVisibleRect:

    void TScrollWindow::Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo)
    {
      int X1, Y1, X2, Y2, I;

      for (I = 0; I <= 49; ++I)
      {
        X1 = 10 + I*8;
        Y1 = 30 + I*5;
        X2 = X1 + X1;
        Y2 = X1 + Y2 * 2;
        if (Scroller->IsVisibleRect(X1/Scroller->XUnit,
                                    Y1/Scroller->YUnit,
                                    (X2 - X1)/Scroller->XUnit,
                                    (Y2 - Y1)/Scroller->YUnit))
        Rectangle(PaintDC, X1, Y1, X2, Y2);
      }
    }

          ।஢   ࠡ  䠩

    ObjectWindows ।⠢  ᫥ Window, 騥  
।஢ ⥪.   TEditWindow  
।஢ ⥪,      䠩  뢠 
䠩.   TFileWindow, ந  TEditWindow,
। ⥫ , 室  প 権
䠩 -뢮.   ᯮ짮   ᮢ 
 ᮡ⢥ ਪ ணࠬ. ,   ᮧ ᯥ樠
⥪⮢ ।, 騥 ந묨   ᮢ. ணࠬ,
ᯮ騥  ।஢   ࠡ  䠩,  
䠩 EDITWND.H  FILEWND.H, ᮮ⢥⢥,  易⥫쭮 
। , ⠢塞  ObjectWindows.

     ।஢

      TEditWindow  ⢨⥫쭮 ᮤন  ࠡ뢠 
୥ ࠢ饬  TEdit.  TEdit ⢫ ᭮ ꥬ
ࠡ, ।⠢塞 ObjectWindows  ७묨 ﬨ
।஢ ⥪.
     TEditWindow ⠭    Editor 
뫪  㥬   TEdit.  㭪- WMSize,
뢠 直 ࠧ   ࠧ஢ TEditWindow, ⠭
ࠧ TEdit ⠪,    墠뢠  짮⥫ 
TEditWindow.   WMSetFocus । 䮪   Editor 直
ࠧ,  TEditWindow 砥 .
    TEditWindow     ஥  TEdit ᭮
।⢮ Search ().  ⢥砥  設⢮ ࠪ⨪ ।
Search  Replace (᪨  ), ।⠢塞 짮⥫
TEditWindow.   ६  TEdit   ⢫   ࠭ 
 ⥪, TEditWindow ⢥砥    (Replace)
⥪. TEditWindow ⠪ ।⠢ ।⢮ "next" ("᫥"),
।⢮ প TSearchStruct. TEditWindow ⠪ 筮
⢥⢥  䥩 Search  Replace  짮⥫.
     ணࠬ, EWNDTEST.CPP, ᯮ  ।஢ 
।⠢ 짮⥫ । ⥪  ⮩ ஭ .
㭮 10.3 뢠 ࠡ ⮩ ਪ ணࠬ.

    㭮 10.3  ।஢

    #include <owl.h>
    #include <stdio.h>
    #include <editwnd.h>
    #include "ewndtest.h"

    class TTestApp : public TApplication
    {
    public:
      TTestApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
                 LPSTR lpCmdLine, int nCmdShow) : TApplication(AName,
                 hInstance, hPrevInstance, lpCmdLine, nCmdShow) {};
      virtual void InitMainWindow();
      virtual void InitInstance();
    };

    class TTestWindow : public TEditWindow
    {
    public:
      TTestWindow(PTWindowsObject AParent, LPSTR ATitle);
      virtual void CMSendText(RTMessage Msg)
        = [CM_FIRST + CM_SENDTEXT];
    };

    TTestWindow::TTestWindow(PTWindowsObject AParent, LPSTR ATitle) :
                             TEditWindow(AParent, ATitle)
    {
      AssignMenu("COMMANDS");
    }

    void TTestWindow::CMSendText(RTMessage)
    {
      int Lines;
      char Text[20];

      Lines = Editor->GetNumLines();
      sprintf(Text, "%d lines sent", Lines);
      MessageBox(HWindow, Text, "Message Sent", MB_OK);
    }

    void TTestApp::IntMainWindow()
    {
      MainWindow = new TTestWindow(NULL, Name);
    }

    void TTestApp::InitInstance()
    {
      TApplication::InitInstance();
      HAccTable = LoadAccelerators(hInstance, "EDITCOMMANDS");
    }

    int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR
                       lpCmdLine, int nCmdShow);
    {
      TTestApp TestApp("Edit Window Tester", hInstance, hPrevInstance,
                       lpCmdLine, nCmdShow);
      TestApp.Run();
      return TestApp.Status;
    }
    !!!  ணࠬ  䠩 EWNDTEST.CPP

    #include "windows.h"
    #include "editwnd.h"
    #include "owlrc.h"

    rcinclude stdwnds.dlg
    rcinclude editacc.rc

    COMMANDS MENU LOADONCALL MOVEABLE PURE DISCARDABLE
    BEGIN
      POPUP "&Edit"
      BEGIN
        MenuItem "&Undo\aAlt+BkSp", CM_EDITUNDO
        MenuItem SEPARATOR
        MenuItem "&Cut\aShift+Del", CM_EDITCUT
        MenuItem "C&opy\aIns", CM_EDITCOPY
        MenuItem "&Paste\aShift+Ins", CM_EDITPASTE
        MenuItem "&Delete\aDel", CM_EDITDELETE
        MenuItem "C&ear All\aCtrl+Del", CM_EDITCLEAR
      END
      POPUP "&Search"
      BEGIN
        MenuItem "&Find...", CM_EDITFIND
        MenuItem "&Replace...", CM_EDITREPLACE
        MenuItem "&Next\aF3", CM_EDITFINDNEXT
      END
      MenuItem "Send &Text", CM_SENDTEXT
    END
    !!!  ணࠬ  䠩 EWNDTEST.RC

     ࠡ  䠩

     TFileWindow   䠩  ⢥ 㬥.
TFileWindow::SetupWindow ந 砫 ⠭  ࠡ 
䠩 ⥬ ⥭ ᮤন ⮣ 䠩   Editor, ࠢ騩
 TFile ᫥   TEditWindow. TFileWindow ⠪
८। CanClose  뤠 ਣ襭 짮⥫ ࠭
⥪饥 ।㥬 ᮤন, ᫨  ,    ࠡ 
䠩.
    TFileWindow   㭪樨-,  ⢥ 
  짮⥫  ⨥  ࠭ 䠩: CMFileNew,
CMFileOpen, CMFileSave  CMFileSaveAs. 짮⥫ ⢫ 
 ⥬ 롮 ᮮ⢥饣 㭪 . 䨪 㭪⮢
 ਢ   10.4.

--------------------------------------------------
 㭪-  䨪   맮
--------------------------------------------------
 CMFileNew           CM_FILENEW
 CMFileOpen          CM_FILEOPEN
 CMFileSave          CM_FILESAVE
 CMFileSaveAs        CM_FILESAVEAS
--------------------------------------------------
     10.4 㭪樨-  ࠡ  䠩  䨪
                 

       ᮢ ॡ  짮⥫  䠩 
ᯮ  ⮣  TFileDialog,  ஬ 짮⥫ 
㪠 , ⠫   䠩.
      ᯮ짮  ࠡ  䠩  ,
⠭⨧஢ ⥪⮢ ।  ந   
. ,  室 ந  TFileWindow  ᮡ⢥
 , , ਬ,    뢮  Editor
⥪. 筮, ⠪  ॠ ।⢮ ᯠ饣 ,
஥   ᮧ.  ᯮ짮 짮⥫᪮ 䥩
 䠩 -뢮, ।⠢塞 TFileWindow, ᮧ  
䨪ࠬ, ਢ묨   10.4.

     11.  ꥪ

      䥩 ,  ਡ ᮧ 
 䠩 ᮢ Windows. ਡ ᮧ  ।  
 譨   ⮯    ࠢ ⮢.
     筮 ᯮ  ୨   室
祭 ᯥ樠஢  ଠ樨. ਬ, ୨ 
 ᯮ짮    짮⥫ ࠬ஢ .
ObjectWindows ।⠢  ந  TDialog .  
।祭  믮 ᫥ : TInputDialog 砥 
짮⥫ ⥪⮢ ப, TFileDialog 砥  䠩, 
TSearchDialog ⥪  ᪠     ।஢.

         ᯮ짮 ᮢ 

     䥩   易⥫쭮  ।
  䠩 ᮢ Windows. । , 饥 㭨
䨪,  譨   ⮯   
 ࠢ ⮢. । ᮢ    .
     ਫ ObjectWindows   । ꥪ TDialog.
  ᯮ 䨪 ।   ⢥
᢮ ࠬ.  ।  ᯮ  ᮧ
䥩᭮ , 뢠  TDialog.

         ᯮ짮 ୥  ꥪ

    ࠢ ୨  ꥪ⮬ 祭  ࠢ
ᯫ뢠騬 .   ᯫ뢠騥   ᮧ, 뢮 
㭨⮦  ࠧ  ६ ⢮  த⥫᪨ . 
 ᯫ뢠騥 , ᯮ㥬  祭 ⪮ ஬⪠ ६,
 ஢, ᮧ  㤠   㭪樨-,
 ࠭   ⢥   ᢮ த⥫.   ,
 ᮧ  ⥫쭮 ᯮ짮, 筮 ࠭ 
  ᢮ த⥫.

    ஢  樠 ୨  ꥪ⮢

     TDialog ॡ   ࠬ஢: 㪠⥫ 
த⥫᪨  ꥪ  䨪  . TDialog
ॣ㦠 ᢮ , ᪠ ⨯ 䨪   LPSTR,
 int:

    ADialog = new TSampleDialog(this, "SampleDialog");



    ADialog = new TSampleDialog(this, 101);

    , 訬 ⨫ ணࠬ஢ ⠥ ᯮ짮
⠭   䨪஢:

    #define ID_SAMPLERESOURCE 101
    ...
    ADialog = new TSampleDialog(this, ID_SAMPLERESOURCE);

     ꥪ  ᥣ ஢   (  
⥪). ObjectWindows ⮬᪨ 㤠  ꥪ,
ᮮ⢥騩 ⮬  Windows.

      믮 

      ୨  ꥪ⮬  䥩 ⮬
⠭  ᮧ  믮 TDialog.
    ୨  믮,  ᫥ ࠡ⪠  
 짮⥫ ଠ樨; ࠡ⪠ ਮ⠭  
祭  ଠ樨   . ਬ, ⨥ 
।஢ ⥪ ਢ  믮 , ।饣
室 ࠭  ⥪⮢ 䠩. 쭥 ࠡ⪠
(࠭   ࠭) 㤥    짮⥫.
ࠡ⪠ ਮ⠭ (  뢠)  祭 ⢥.
᪨,  ६ 믮   த⥫᪮   
ᯮᮡ ⢥   짮⥫.
     , ୥  ᮧ,   짮⥫ 
  ᫥ ࠡ,  ᠬ ࠡ⪠  த 
 . ਬ,  ।஢ ⥪  ᮧ 
᪠  祭 ப ᪠  ६ ࢮ   
⢫. ᫨   㤥   짮⥫,    ᠬ
  ᯮ짮  祭  ப ᪠  ६
᫥ ᮢ,  ⮬, த 筠 ࠡ⪠
(।஢ ⥪).     ᢮ த⥫᪮
.
    믮  ⫨砥  ᮧ     ⠫:
 믮 ,  頥 祭, 㪠뢠饥  ࠭
짮⥫ .    뢮 ⥫
ਣ襭,      Cancel.  짮⥫  
 ,  蠥 ࠡ ,  १ ᢮ ࠡ, 頥
䨪 ⮩ .
    Windows, ,   믮塞  ⮫쪮
楫᫥ 祭.  祭  ᫮ ଠ樨,  
 ।⠢塞 ObjectWindows 堭 । , 
।   ।塞   ந  
ᮡ⢥  । ଠ樨.
    !!!  ࠧ "।  ࠢ ⮢"   12.

       

    ,  ᯮ, 뢠  ; ,
 ᮧ, 뢠 . TDialog  뢠 
    ।⢮ 맮  㭪権-
Execute  Create, ᮮ⢥⢥. ,  㭪樨-  
뢠 .  ᭮ 믮 쭮 
뢠 㭪- ꥪ ਪ ணࠬ ExecDialog; 
᭮ ᮧ 쭮  뢠 ⮤ MakeWindow.
ExecWindow  MakeWindow ᫥  TModule.

    // 믮 쭮 
    if (GetModule()->ExecDialog(new TSampleDialog(this,
                                "SampleDialog")) == IDOK)

      // ᤥ -

    //   
    GetModule()->MakeWindow(new TSampleDialog(this, "SampleDialog"));

    ⨥ ୥ 

    !!!  ࠧ "।  ࠢ ⮢"   12.
    ⨥ 쭮  쭮  ⢫ 맮 
㭪樨- CloseWindow (믮 㭪樥-⮩ ⢥ 
ᮮ饭 Ok). CloseWindow 뢠 , ᫨ CanClose ࠧ蠥
ᤥ . CloseWindow  쭮 ,  㬮砭, । 
. ᫨     ᫮ ( 祭 ࠧ襭
 CanClose), 뢠 ShutDownWindow (믮 㭪樥-⮩
⢥  ᮮ饭 Cancel).
    !!!  ࠧ "। "   12.
     設⢥ 砥   㤥 ८। ShutDownWindow, ,
,   ८। CloseWindow, ⮡ ⠢
  뢠 TransferData.    ८।
CanClose  ஢ન  । ⨥. ਬ, ᫨ ⥪ 
।㥬 ࠢ饬   ⨬,  뤠 
ᮮ饭.
     쭮 , 祭, । CloseWindow 
ShutDownWindow, ⠭ 祭  Execute,  ⠪ 
頥 TModule::ExecDialog. ᫨    祭,  
㬮砭 頥 祭 IDCANCEL.     
 । 祭, ᪮    
頥 祭.

    ᯮ짮    

      ᯮ짮      襩
ਪ ணࠬ.    , ᫨   
ᮤন 讥 ᫮ ࠢ ⮢.  ᯮ짮  
 ,  ᬮ ᯮ짮 । ᮢ   
⮣ । ਡ⮢ ᮧ 襣    ࠢ
⮢. ᯮ , ந  TDialog,    ⥬
 ᯮᮡ,   ᯮ짮  , ந  Window,
   InitMainWindow. ணࠬ CALC.CPP  ⠫ EXAMPLES
ᯮ     ᢮  .
     ⠪  ᯮ짮      襩
ணࠬ, ᫨  ⤥  䥩 ⮢  ᠬ
ਪ ணࠬ. 㯠 ⠪ ࠧ,    譨
    ᥭ   ४樨 ਪ
ணࠬ.
    ਬ, ணࠬ-     
᢮  ,      
ࠢ騥    .     
᢮ ,   .
    ,  ⮫  ।묨 㤭ﬨ  ⢥ 
ᥫ ਪ ணࠬ, ᫨  ⢥   
ᯮ . Windows  ⢫  প ᥫ஢
  . ᯮ  ,  ᬮ 
 ࠭祭. ணࠬ CALC.CPP ᯮ   ⠪ ਥ.

    ।  Windows  襣 쭮 

     ࠧ " ᮢ Windows"   10  㦥 
 楯樥 ਡ⮢ ॣ樨  ᮬ  ।  . 
饬, Windows ॡ ॣ樨 । ਡ⮢ ,  
ᮧ.  ਡ ॣ樨    . ObjectWindows
ॣ ਡ     㬮砭;   
⢨  㬮砭, ८। GetWindowClass  GetClassName.
     䨪樨 ਡ⮢ ॣ樨  , ८।
GetWindowClass  GetClassName,    ᤥ   .
⥫쭮,  室    Windows 襣  
।  ᮢ.   頥 㭪樥-⮩ 襣
 GetClassName.
    ᫨      Windows  ।  ,
   㤥  ਡ ॣ樨,  Windows 
㬮砭. ᫨     Windows,    ᬮ 믮 
 쭮.

      ࠢ騬 ⠬  ࠡ⪠ ᮮ饭

    Windows ।⠢ ᫠ প  ᮧ  㫨஢
ࠢ騬 ⠬  ஭  த⥫᪮ ;  ਫ
ObjectWindows  믮   ।  
ࠢ騥 ꥪ. ( 12, "ࠢ騥 ꥪ",  
ଠ  ࠢ  ).
    Windows 㪮 ᮧ ࠢ ⮢ ,  ⠪
।⠢  প  ࠢ . ⮬, 
ObjectWindows ࠢ騥  ,  㬮砭,  뢠 
ࠢ騬 ꥪ⠬. ,   易 ࠢ騥 
襣   ࠢ騬 ꥪ⠬ ObjectWindows  祭 裡
/ࠢ騩 .
     ꥪ   ࠢ騥   㭠ࠢ
.   ࠢ  ⢫ ࠢ   
⮢. ਬ,      ᯨ᪠
ࠢ饣 ,   ⥪  ।㥬 ࠢ饣
.  㣮 ࠢ ࠢ騥  ⢫
㢥   ந襤 ᮡ,    ᮢ.
ਬ,  ࠢ騩  㢥 த⥫᪨  
 ⨨.

      ࠢ騬 ⠬ 

    Windows ।⠢   ⨯ ࠢ饣  
ࠢ ᮮ饭  ॠ樨    㬮砭. ਬ, ⢥⮬ 
㬮砭   ᯨ᪠  ᮮ饭 LB_GETCURSEL  
 ࠭ 㭪.  뢠  ᢮ ࠢ騬
⠬ 뫪 ࠢ饣 ᮮ饭,  䨪
ࠢ饣 , 䨪 ᮮ饭  ࠬ ᮮ饭.
     ObjectWindows  뫠 ᮮ饭 ࠢ饬  
⥬ 맮 㭪樨-  SendDlgItemMsg,  
 ࠬ:
    - 䨪 ࠢ饣 ;
    - 䨪 ᮮ饭;
    - ࠬ ⨯ WORD, ᮤঠ騩 ࠪ⨪ ᮮ饭 (易
);
    - ࠬ ⨯ LONG, ᮤঠ騩  ᯥ ଠ.
     ᫥饬 ਬ 뢠 㭪-SendDlgItemMsg 
TestDialog   "Item 1" ("㭪 1")  ࠢ騩  
ᯨ᪠ (뫪 ᮮ饭 LB_ADDSTRING).

    void TTestDialog::FillListBox()
    {
      SendDlgItemMsg(ID_LISTBOX, LB_ADDSTRING, NULL, (DWORD) "Item 1")
    }

          ꥪ⮬   ࠢ騬
⠬, 뢠 ࠢ騥   ࠢ騬 ꥪ⠬,
騬 ⠬  . (,   ObjectWindows
ࠢ騥  ,  㬮砭,  뢠  ࠢ騬
ꥪ⠬.) ᫥ ⢫ ⮣ ਥ,  ᬮ 㫨஢
ࠢ騬 ⠬, ᯮ    㭪樨-
ꥪ,  뫪 ᮮ饭 䥩 ⠬ ࠢ
⮢ ।⢮ 㭪権 Windows API.  㤥 ᮮ⢥⢮
ॡ ꥪ⭮-ਥ஢ ணࠬ஢.
     ⮣ ᪮ ࠢ騩 ꥪ   襣
. ᯮ  ࠢ饣 ꥪ,   ⮫쪮
 ࠬ: த⥫᪨ ꥪ  䨪 . (
室 । ਡ ᮧ, ᪮ Windows 㦥 ᮧ
). ,   㫨஢  訢 ࠢ騥
   ࠢ騥  .  ਢ
, ᨬ  ।,   㭪-
FillListBox  TTestDialog.

    class TTestDialog : public TDialog {
    public:
    ...
      PTListBox ListBox;
      TTestDialog(PTWindowsObject AParent, LPSTR AName);
    ...
    };

    TTestDialog::TTestDialog(PTWindowsObject AParent, LPSTR AName) :
                             TDialog(AParent, AName)
    {
       ListBox = new TListBox(this, ID_LISTBOX);
    }

    void TTestDialog::FillListBox()
    {
      ListBox->AddString("Item 1");
    }

    ⢥  ᮮ饭 㢥 ࠢ ⮢

    ࠢ騩  뫠 ᢮ த⥫ 㢥饥 ᮮ饭,
  ᮡ, ஥   ᮢ. 
ObjectWindows  ꥪ  ॠ  ᮮ饭, 뫠
। ࠢ騬 ⮬, ⥬ । 㭪樨 ⢥ 
ᮮ饭  ᭮ 䨪 ୥ .  ⮤ ⮬᪨
뢠  祭    ୥  㢥饣
ᮮ饭.
     ᫥饬 ਬ ਢ  ⮤ ⢥  ᮮ饭,
饬  䨪 ୥ ,   ࠢ
⮢:

    class TTestDialog : public TDialog {
    ...
    void HandleButtonMsg(RTMessage Msg) =
      [ID_FIRST + ID_BUTTON];
    void HandleListBoxMsg(RTMessage Msg) =
      [ID_FIRST + ID_LISTBOX];
    };

     㢥饥 ᮮ饭  ࠢ饣  室 
㢥騬 , 楫᫥ ⠭⮩,  㪠뢠 
ந襤襥 ᮡ⨥. ਬ,  롮 㭪   ᯨ᪠, 뫠
㢥饥 ᮮ饭  㢥騬  LBN_SELCHANGE;  ⨨
   BN_CLICKED. (騩  ।  Msg.LP.Hi,
襬 ᫮ Msg.LParam).
    筮, ⢥ ⢨,   襩 㭪樨- ⢥
 ᮮ饭,   䨪 ୥ ,  
㢥饣 , ।  Msg.LP.Hi,    ᫥饬
ਬ:

    void TTestDialog::HandleListBoxMsg(RTMessage Msg) {
      switch (Msg.LP.Hi)
      {
        case LBN_SELCHANGE :
          // ࠡ⪠ ࠭ 
          break;
        case LBN_DBLCLK;
          // ࠡ⪠  
          break;
      ...
      }
    }

     㢨  । ⢥  㢥騥 ᮮ饭 
ࠢ ⮢  ꥪ⮢. ,  
室 ॠ ⢥ ࠢ ⮢ 襣   
ᮡ⢥ 㢥騥 ᮮ饭. ਬ,   ⠢ 
 믮  ⢨  ⢥   ⨥.  ⮣, 
室 ।  襬 ࠢ饬  㭪-,
  㢥饬 ᮮ饭. ⥬,  뢠 ࠢ騩
ꥪ ObjectWindows  ࠢ騬 ⮢ 襣  (⢨
뢠  ।饬 ࠧ).

    ਬ 裡 /ࠢ騩 

     ᫥饩 ணࠬ ந室 ஦  TTestDialog 
TDialog. TTestDialog । HandleButtonMsg  HandleListBoxMsg,
⢥騥  㢥騥 ᮮ饭, 뫠   
ࠢ騬 ⮬   ᯨ᪠. HandleButtonMsg,  뢠
⮬᪨  ⨨ , ॠ   ᯨ᪠
 ⥪⮢묨 ⠬.  ⮣  뢠 㭪-
 SendDlgItemMag. TTestDialog 믮    
㭪樨- ExecDialog  த⥫᪮ .

    㭮 11.1 ਪ ணࠬ  

     ணࠬ ᮤন  䠩 DIALTEST.CPP, 室饬 
⠫ EXAMPLES.

    ᫮ ਬ ᯮ짮 

    VDLGAPP.CPP । ᫮ ,   짮⥫
 ⥪,  ⥬ ஢ ࠢ쭮 . ணࠬ 뢮 
  ﬨ ।஢   㤭,  
樠쭮 客  䨪.
     짮⥫   , 㭪- CanClose
஢,  ⨬ ,  樠쭮 客 
䨪 뫨     ⨥ . 譨 
   㭪 11.2.

    㭮 11.2 , ஢騩 ⨬  짮⥫

     ணࠬ ᮤন  䠩 VDLGAPP.CPP, 室饬 
⠫ EXAMPLES.

          

      室  ⠢  , ন
ObjectWindows.  뢮 ਣ襭    ப 
짮⥫ ⥪.    筮   ਪ
ணࠬ  Windows; ⮬, , ⭥ ᥣ, 㤥  
ᯮ짮.
     !!!
     ᯮ짮        ணࠬ
䠩 INPUTDIA.H,  䠩 .RC 襩 ணࠬ INPUTDIA.DLG.

    㭮 11.3  

        5 ࠬ஢:
    - 㪠⥫  த⥫᪨  ꥪ;
    - 㪠⥫  ⥪  ;
    - 㪠⥫  ⥪ ਣ襭;
    - 㪠⥫  塞 짮⥫ ⥪⮢ ;
    - ࠧ ⥪⮢  .
     ᫥饬 ਬ   .  ⨨  
 , EditText  ⥪⮢ ଠ樥, 
짮⥫  ।㥬 ࠢ騩  .

    PTInputDialog AnInputDialog;
    char EditText[79];
    strcpy(EditText, "");
    AnInputDialog = new TInputDialog(this, "Caption", "Prompt", EditText,
                                     sizeof(EditText));

    ।,  ⥪⮢ , ।  
, ᮤন ப ⥪  㬮砭, 뢮  ࢮ砫쭮
樠樨 .   ࠭஢ ⠭ ᮤন
⥪⮢   - ப (祭 ⮩ ப).
    ⥫  ⥪⮢     ⠢
⨬묨  祭 ᥣ ६  ⢮.  ᮡ 
  ࠡ      . 
, ,  㤥 ᯮ짮     .
ਬ ⠪ ᯮ짮 ਢ :

    void TSampleWindow::GetName()
    {
      char EditText[79];

      strcpy(EditText, "Frank Borland");
      if (ExecDialog(new TInputDialog(this, "Data Entry", "Enter Name",
          EditText, sizeof(EditText))) == IDOK)
        MessageBox(HWindow, EditText, "Name is:", MB_OK);
      else MessageBox(HWindow, EditText, :Name is still:", MB_OK);
    }

          

       㣨 ⨯ , ন
ObjectWindows   TFileDialog. ᯮ 䠩  直 ࠧ,
 室  짮⥫  䠩,  ਬ 
ॠ樨 ⠪ 㭪権 ਪ ணࠬ  File Open, Save  SaveAs
( , ࠭  ࠭ ).   㭮 11.4.

    㭮 11.4  

     !!!
     ᯮ짮 TFileDialog      ணࠬ
䠩 FILEDIAL.H,  䠩 .RC 襩 ணࠬ FILEDIAL.DLG.
      䠩    ࠬ: 㪠⥫ 
த⥫᪮ , 䨪    䠩  蠡 ( 
⮣, ।祭 䠩     ࠭ 䠩).
। 䨪   䨪஬ 
⠭⭮  䠩  Open,  ⠭⭮  䠩
 Save As (SD_FILEOPEN  SD_FILESAVEAS).  䠩  Open
 ࠬ  䠩 । 䠩 蠡  㬮砭; 
䠩  SaveAs  ᮤন  䠩  㬮砭. ࠬ 
䠩 ⠪  ᯮ  ⨯    
 ࠭  䠩.
     ᫥饬 ਬ 믮  䠩  Open. ᪮
 䠩   䠩 蠡 । ப "*.*",
  樠樨    ᯨ᪠  䠩  뢥
  䠩 ⥪饣 ⠫:

    char TempName[MAXPATH];
    ...
    _fstrcpy(TempName, "*.*");
    if (GetApplication()->ExecDialog(new TFileDialog(this, SD_FILEOPEN,
                                     TempName)) == IDOK))
    // ⨥ 䠩  , ᮤঠ騬  TempName
   ...

     ᫥饬 ਬ 믮  䠩  SaveAs. ᪮
 䠩   䠩 蠡 ।  ப,
  樠樨   㤥 ࠭   䠩 
㬮砭:

    char TempName[MAXPATH];
    ...
    TempName[0] = '\0';
    if (GetApplication()->ExecDialog(new TFileDialog(this, SD_FILESAVE,
                                     TempName)) == IDOK))
    // ࠭  䠩  , ᮤঠ騬  TempName
   ...




     12

     

     짮⥫᪮ 䥩,   । 
짮⥫, 뢠 ꥪ⠬ ࠢ.  ஢ન  
ᯨ᪠,  짮⥫ ਫ Windows,   ⨯
ࠢ ⮢.  Windows ࠢ騥   
ᯥ樠묨 ;  ObjectWindows, ⮬ TControl  ந
 TWindow.
    , ந室騥  TControl, ।⠢ ࠢ騥 
Windows.   ਪ ணࠬ  㤥 ᯮ짮 
ᮢ, ᠭ  ᫥饩 ⠡:

 12.1: ࠢ騥  Windows, ন ObjectWindows

---------------------------------------------------------------------------
ࠢ騩            ᯮ짮
---------------------------------------------------------------------------
 ᯨ᪠          TListBox      ப稢騩 ᯨ᮪ ⮢,
                                   ਬ, 䠩,  ண 
                                   ⢨ 롮.
 ப⪨    TScrollBar    筠  ப⪨, 
                                     ப稢  
                                    ᯨ᪮.
        TButton          ᮮ⢥騬
                                   ⥪⮬.
 ஢ન        TCheckBox     ,   祭 
                                   몫祭,  ᮮ⢥騬 ⥪⮬.
⨢    TRadioButton  ,    ࠭ 
                                   . 筮 ᯮ  
                                   ᪫ 㯯.
 㯯          TGroupBox      אַ㣮쭨  ⥪⮬ 
                                   孥  㣫, ᯮ騩 
                                   㯯஢ 㣨 ࠢ
                                   ⮢.
㥬        TEdit            ⥪ 짮⥫.
ࠢ騩 
            TStatic       ⮢ , ஥   
ࠢ騩                 ஢ 짮⥫.
஢      TComboBox       ᯨ᪠  ।㥬
                               ࠢ饣 .
---------------------------------------------------------------------------

    㭮 12.1 뢠 ।⠢  ࠭  ⨯
ࠢ ⮢.

㭮 12.1:   ࠢ騥 

      ⨯ ࠢ ⮢, ᫥ , ObjectWindows
। , ᯮ㥬  ୨   㣨 .
ࠢ騥 ,     , 
ࠢ騬 ⠬ 䥩, 묨   ,  
㦤  ᮮ⢥饬 ꥪ ObjectWindows (.  11 "ꥪ
").   뢠 㭪樮஢ ন ꥪ⮢
ࠢ  뢠,    ᯮ짮  .

         ᯮ짮 ꥪ⮢ ࠢ

    ப 㦡 ࠢ饣  筮 ᮮ⢥ ப 㦡 
த⥫᪮ ; ࠢ騥  筮 ᮧ  㭨⮦
   த⥫᪨ .  ० ࠡ ⮬᪨
ন  ObjectWindows.  ୥   ᯨ᪥ ୨ 
த⥫᪮  ᮧ   ᮧ த⥫  㭨⮦
 㭨⮦ த⥫.

    ஢  ᮧ ꥪ⮢ ࠢ

     㤥  ᥣ ஢  ꥪ ࠢ 
  த⥫᪮ ,    室 প
뫮  ୨ , ᪮஢    
த⥫᪮ . 뫪  ୥  ᥣ   祭
맮 ⮤ ChildWithID  த⥫᪮  (ࠧ㬥,  
  ୥  㭨 䨪  ࠬ AnID 
  ᮢ, ந  TControl). ᫨  
୥ ,  ஬ ணࠬ  ⢫ ,  
  㤮 প 㪠⥫     த⥫.
     ࠢ ꥪ⮢ 筮    
ࠬ஢: 㪠⥫  ꥪ த⥫᪮ , 䨪
ࠢ饣 , न x  y  孥 㣫 (⭮⥫쭮
 짮⥫ த⥫᪮ ),   ਭ  . 
ࠬ ᯮ  ⠭ ਡ⮢ ᮧ ꥪ ࠢ,
 ন    Attr. ⨫, ⠭
஬ TControl  Attr.Style,   ᥡ WS_CHILD, WS_VISIBLE,
WS_TABSTOP  WS_GROUP.  ⠭     ஦
 ࠢ ।,       ᮢ
ࠢ ⮢ ObjectWindows. .  10.1  
ਡ⮢ .
       אַ 뢠 Create ( GetApplication()->MakeWindow)
  襣 ࠢ饣 .   ᮧ
⮬᪨,  㭪- SetupWindow  TWindowObject
뢠  த⥫᪮ .   ८। SetupWindow 
ந  襣 த⥫᪮   믮 
⠭  ࠢ ⮢. ᫨  ८। SetupWindow,
㡥  맮 㭪樨- SetupWindow   
ᮧ ࠢ ⮢.
    ⠪,    ।    襣
த⥫᪮   祭 㪠⥫  ࠢ ⮢.
⥬,   ꥪ ࠢ   த⥫᪮
.  ,  ८। SetupWindow  믮 室
 ⠭ ࠢ ⮢, ᫨  㦭. ObjectWindows
㤥 ࠢ ᥬ ⠫.

    ⮦  㤠 ࠢ ⮢

     ObjectWindows 㭨⮦  㤠  ࠢ ⮢ ⠪
 ⢥⢥ த⥫᪮ . ࠢ騩 
⮬᪨ 㭨⮦,  易   ꥪ ࠢ
⮬᪨ 㤠,  த⥫᪮  㭨⮦  㤠.

    ࠢ騥   ࠡ⪠ ᮮ饭

    㭨  ꥪ⮬    ꥪ⠬ ࠢ  
஬ த 㭨樨  ꥪ⮬    ࠢ騬
⠬.    த⥫᪮  㫨  訢
᢮ ࠢ騥 ,  ࠢ騥  뫠 ।०騥
ᮮ饭  ᮡ ࠢ த⥫᪮ . ⥫᪮  
। ⮤ ॠ樨, 騥  䨪 ୥ ,
  ।० ᮮ饭. , ࠢ騥   
  㬮砭 易묨  ꥪ⠬ ࠢ ObjectWindows;
ꥪ ࠢ ᥣ 易  ࠢ騬 ⠬ . 
ࠣ 뢠 㭨 /ࠢ騩 . ᠭ
㭨樨 /ࠢ騩      11 "ꥪ
".

    㫨஢ ࠢ騬 ⠬ 

     㫨  訢  ࠢ騥   
맮 㭪権- ࠢ ⮢.
     ꥪ ࠢ   ᮮ⢥騥   
ꥪ த⥫᪮ ,  믮  맮
㭪権- ࠢ ⮢:

    ListBox->AddString("ScottsValley");

     㪠⥫ ꥪ ࠢ  ন  
,    祭  ᯨ᪠ ୨  த⥫᪮  
 맮 㭪樨- ChildWithID த⥫᪮ . 騩
ࠣ ணࠬ 뢠 㭪- ꥪ த⥫᪮
.

    PTListBox TheListBox;
    ...
    TheListBox = (PListBox)ChildWithID(ID_LISTBOX);
    TheListBox->AddString("Scotts Valley");

      ।०騥 ᮮ饭 ࠢ ⮢

    ⨥, 맢 ࠢ騬 ⮬ ,  १⮬
뫪 ࠢ騬 ⮬ ।०饣 ᮮ饭 ࠢ饣
  (. "  ᮡ ࠢ"   6).  
 த⥫᪮  ࠡ뢠 ।०騥 ᮮ饭
ࠢ饣   ⮤ ॠ樨,   䨪
୥ ,    ᫥饬 ਬ:

    class TSampleWindow : public TWindow {
    public;
      PTListBox ListBox;
      PTButton Button1, Button2;

      virtual void HandleListBoxMsg(RTMessage MSG) =
        [ID_FIRST + ID_LISTBOX];
      virtual void HandleListButton1Msg(RTMessage MSG) =
        [ID_FIRST + ID_BUTTON1];
      virtual void HandleListButton2Msg(RTMessage MSG) =
        [ID_FIRST + ID_BUTTON2];
    }

      㭪- ॠ樨 Msg.LP.Hi ᮤন 
।० ࠢ饣 ।⢠, ⠪  LBN_SELCHANGE  BN_CLICKED.
 ॠ  ࠡ⪨   ।०:

    void TSampleWindow::HandleListBoxMsg(RTMessage Msg)
    {
      switch (Msg.LP.Hi) {
        case LBN_SELCHANGE:
          // 롮 ࠡ⪨ 
          break;
        case LBN_DBLCLK:
          // 롮 ࠡ⪨  饫窠
          break;
      }
    }

    , 뢠 砨,   , ⮡ ᠬ ꥪ ࠢ
ॠ஢  ।०騥 ᮮ饭 ࠢ ⮢,  ।⢮
ॠ樨 室  ᠬ ࠢ饬 . ਬ,  
 ᮧ ,   ᮤঠ騩 ⥪, 
짮⥫  ,  ।㥬 ࠢ騩 , 
  ⮫쪮 .   ᮡ   㦭, ⮡
 ࠢ ⮢ ন  ।⢮,  
㡫஢ ⮣ ।⢠   த⥫᪮ . ⮬
 ⠭ ,   ᯮ짮 ᪮쪮 ࠧ 
ࠧ ਪ ணࠬ.
     ணࠬ஢ ॠ樨 ࠢ饣    ᮡ⢥
।०騥 ᮮ饭, । 㭪- ॠ樨,
᭮  ।०,  , ஦ TControl,  
:

    class TSpecializedListBox : public TListBox {
    public;
      virtual void LBNSelChange(RTMessage Msg) =
        [NF_FIRST + LBN_SELCHANGE];
      virtual void LBNDblClick(RTMessage Msg) =
        [NF_FIRST + LBN_DBLCLICK];
    }

    易⥫쭮 ᯮ 㬬 NF_FIRST   ।०
ࠢ饣   ७ ᠭ 㭪樨  
㭪権- ॠ樨,   ।०.
    ᠭ TSpecializedListBox::LBNSelChange ᫥饥:

    void TSpecializedListBox::LBNSelChange(RTMessage Msg)
    {
      // 롮 ࠡ⪨ 
    }

    ᫨  , ⮡  ࠢ騩 ,  த⥫᪮ 
ॠ஢  ।०饥 ᮮ饭, 뢠 ⮤
DefNotificationProc ࠢ饣    㭪権- ॠ樨,
  ।०.

          ࠢ  

    ᯮ짮   -   ४祭 䮪
  ࠢ饣   ࠢ饬    ?
 Tab  ᯮ짮  横᪮ 室  ࠢ饣
  ࠢ饬  ( 浪 ᮧ). ஬ ⮣, 
४祭 䮪  ᥫ⨢묨    㯯. 
ObjectWindows   䥩  㫨஢ 
ࠢ ⮢  .  ࠧ襭 㭪樮஢ ⮣
"୮ ࠢ" 뢠 㭪- EnableKBHandler
襣    .

         ࠢ騥   ᯨ᪮

    ᯮ짮  ᯨ᪠  ⥩訩  । 짮⥫
Windows ணࠬ  -  ᯨ᪠. ਬ,  
। 짮⥫ ᤥ 롮  ᯨ᪠ 䠩, ਭ஢, 蠡
 ⮢,  ᨬ   ணࠬ.  ᯨ᪮ 墠뢠
ᮬ TListBox. TListBox । 㭪樨-   楫:
ᮧ  ᯨ᪮, 䨪 ᯨ᪠ ⮢,   ᯨ᪥
⮢  宦 ࠭ .

    ஢  ᮧ  ᯨ᪮

      ஢ TListBox ਭ  ⢥ ࠬ஢
த⥫᪮ , 䨪  ࠧ X, Y, W  H ࠢ饣
. ਬ,   த⥫᪮   
᫥饥 ⢥ত:

    ListBox = new TListBox(this, ID_LISTBOX, 20, 20, 340, 100);

     TListBox 뢠  TControl, ⥬ 
LBS_STANDARD  ⠭ ⨫,    ᯨ᪠  Attr.Style.
LBS_STANDARA  樥 ⨫, 㪠뢠饩,   ᯨ᪠
㤥

* ᯮ   䠢⭮ 浪 (LBS_SORT)
* ।० த⥫᪮    ᮡ  ᯨ᪠
(LBS_NOTIFY)
*  ࠬ (WS_BORDER)
*  ⨪  ப⪨ (WS_VSCROLL)

      ஢ Attr.Style, ᮤঠ騩 ⠭ ⨫,
᫥ ஢ 襣  ᯨ᪠. ਬ, ᫨  
  ᯨ᪠,  騩 ᢮ , ᯮ ᫥騥
:

    ListBox = new TListBox(this, ID_LISTBOX, 20,20, 340, 100);
    ListBox->Attr.Style &= LBS_SORT;

      ⠪ ஢ Attr.Style   ,
஦ TListBox.
       ୨ , ࠢ騥   ᯨ᪠
⮬᪨ ᮧ  த⥫᪨ .

    䨪  ᯨ᪮

    ᫥ ⮣,   ᮧ  ᯨ᪠,  㦭  ᯨ᪮
⮢,    ப  owner-drawn. ,  
   㤠 ,    ᯨ᮪. 
 ⠬   ⮢ 뢠 㭪-
AddString  ᯨ᪠:

    ListBox->AddString("Item 1");
    ListBox->AddString("Item 2");
    ListBox->AddString("Item 3");
    ListBox->AddString("Item 4");
    ListBox->AddString("Item 5");
    ListBox->AddString("Item 6");

    ᫨ AddString 訫 ᯥ譮,  頥 ⥫쭮
祭.
     ᯨ᪠ ࠭ ᯨ᮪ ப  ᨢ ப;  
࠭    . ᫨ ListBox  ᨢ, "Item1"
࠭   ListBox[0], "Item 2"  ListBox[1], "Item 3"  ListBox[2] 
. .  ࠧ,   뢠 AddString,  ப 
  䠢⭮ 浪  㬮砭,    ᯨ᪠, ᫨ ⨫
᪫砥 LBS_SORT.
    ᨬ  ஢ 襣  ᯨ᪠,   ⠪ ⠢
       InsertString:

    ListBox->InsertString("Item 1.5", 1);

     ⠪ ६ ப, ࠭   , 襬
 ࠢ 1,   .  ࠭ ।⠢ 㭪権-
  १, ।⠢  ᫥饬 ᯨ᪥:

  
------------------
 0      "Item 1"
 1      "Item 1.5"
 2      "Item 2"
 3      "Item 3"
 4      "Item 4"
 5      "Item 5"
 6      "Item 6"

    . . 12.2.

. 12.2   ᯨ᪠

    ⠢  ப   -1  ப   ᯨ᪠.
     㤠  ᯮ DeleteString. 騩 맮
㭪樨- 㤠 ப   1 ('Item 1.5')  ६頥
ப  ᠬ, 訬 1,    (  ஭):

    ListBox->DeleteString(1);

    , ClearList 㤠  ப   ᯨ᪠:

    ListBox->ClearList(1);

       ᯨ᪮

    騥  㭪権-   ᯮ짮  祭
ଠ樨  ᯨ᪥, ᮤঠ饬  ꥪ  ᯨ᪠.

* GetCount 頥 ᫮ ⮢ ᯨ᪠.
* FindString  FindExactString ᫥  ᯨ᪠  ᮤঠ 
ப, 稭   , 室  砫 ᯨ᪠ 
室. FindString  ப   ᯨ᪠,  ᮤন
 ப,  FindExactString  ப, 稭  
ப.
* GetString 砥 ப, 室  ᯨ᪥  , 
楫᫥ 㬥⮬. 㬥 ⨯ LPSTR 㪠뢠   
祭 ப. GetString ⠪ 頥 楫 祭, ।⠢饥
 ப. * GetStringLen  頥  ப  
,   頥 ᠬ ப. * GetSelIndex 頥 
⥪饩 ࠭ ப ⮫쪮   ᯨ᪮  ⢥ 롮஬.

    祭 롮஢   ᯨ᪠

    짮⥫    樨   ᯨ᪠: ப稢
ᯨ᮪, ⢫  饫箪     ⢫
 饫箪  .     짮⥫ 
 ᯨ᪠, Windows 뫠 ।०饥 ᮮ饭  ᯨ᪠
த⥫᪮   ᯨ᪠.
     ।०饥 ᮮ饭  ᯨ᪠ ᮤন ।०騩
  ᯨ᪠ ( 楫᫥ ⠭)  Msg.LP.Hi  祭
 樨.  ⠡ ਢ  騥 ।०騥
  ᯨ᪠:

 12.2 ।०騥 ᮮ饭  ᯨ᪮

WParam         
---------------------------------------------------------------------------
LBN_SELCHANGE  롮  ᤥ  饫窮 .
LBN_DBLCLK     롮  ᤥ  饫窮 .
LBN_SETFOCUS   짮⥫ । 䮪  ᯨ᪠ 饫窮  
               饫窮       Tab. ।
               LBN_SELCHANGE  LBN_DBLCLK.

     த⥫᪮  筮 ࠡ뢠 ।०騥 ᮮ饭
 ᯨ᪠  ।  㭪- ॠ樨, 
 ୥ 䨪.  ਢ  㭪-
ॠ樨 த⥫᪮ ,  ࠡ뢠 ।०騥 ᮮ饭
 ᯨ᪠:

ࠣ ணࠬ LBOXTEST.CPP

    void TSampleWindow::HandleListBoxMsg(RTMessage Msg)
    {
      int Idx;
      char Str[10];

      if (Msg.LP.Hi == LBN_SELCHANGE)
      {
        Idx = ListBox->GetSelIndex();
        if (ListBox->GetStringLen(Idx) <= sizeof(Str))
        {
          ListBox->GetSelString(Str, sizeof(Str));
          MessageBox(HWindow, Str, "You select:", MB_OK);
        }
      }
    }

    짮⥫ ᤥ 롮, ᫨ 襥 ᫮ LParam ᮤন
।०騩  LBN_SELCHANGE. ᫨  ⠪, । 
࠭ ப, ஢,      Str, 頥
ப,   ப 㤥    ᮮ饭 (. . 12.3).

. 12.3    롮 짮⥫   ᯨ᪠

    ࠭  ࠡ뢠  㭪ﬨ-⠬
TListBox: GetSelString, GetSelIndex, SetSelString  SetSelIndex.
㭪樨- Get...  ப   ࠭ ப.
㭪樨- Set... 室 짮⥫  ⠭ 롮
ண   ப  .  ⠢ 
   , ᫨  ⠬ .
    ணࠬ LBoxTest ᮧ    ᯨ᪠.  ᪠
ਪ ணࠬ,  ᯨ᪠    . 
짮⥫ 롨ࠥ   ᯨ᪠,   
।⠢ ⮬ ᯨ᪠.   ন 뫪 
ࠢ騩   ᯨ᪠    ListBox  祭
㫨஢ ࠢ饣 .
     䠩 LBOXTEST.CPP    ४ਨ EXAMPLES.

         ஢ 

    ࠢ騩  ஢   樥 
㣨 ࠢ ⮢:  ᯨ᪠  ।㥬 ࠢ饣
.  ᯮ  祭 짮⥫᪮    
 : 롮   ᯨ᪠  ⥪  ।㥬 ࠢ饬
.
    TComboBox ஦  TListBox  ᫥  㭪樨- 
䨪樨, ᮢ  롮 ⮢ ᯨ᪠. ஬ ⮣, TComboBox
।⠢ 㭪樨-  権   ᯨ᪠
஢ ,      "믠" 
ॡ.

     ࠧ ஢ 

      ⨯ ஢ : , 믠騥 
믠騥 ᯨ᪮. . 12.4 뢠,  룫  ⨯
஢ ,   룫廊  ᯨ᪠.

. 12.4   ⨯ ஢    ᯨ᪠

     ஢ 

     ஢  ﭭ ।⠢  
।஢.  ஢ , ,  뢠 
뢠    ᯨ᪮  ९, 饩 ᢮  
.  ஢    뢠   
ᯨ᪠;   ६ ।⠢.  ஢ 
ᮤঠ ।㥬 ࠢ騩 ,  ஬ 짮⥫ 
  ।஢ ⥪. ᫨  ⥪ ᮮ⢥
-  ᯨ᪠,  롨ࠥ.

    믠騥 ஢ 

    믠騥 ஢   ᥡ  
஢    ᪫祭.   砫쭮 ﭨ 
 ᯨ᪠  ।⠢.  ,  짮⥫
⢫ 饫箪  ५   ࠢ 㣫 ।㥬
ࠢ饣 .  ᯨ᪠ 뢠,  롮 ᤥ.
믠騥  믠騥 ᯨ᪮ ஢  ,  
⠥ ࠧ  ࠢ ⮢  쪮 .
   ᯮ,     , 祬 
஢    ᯨ᪮.

    믠騥 ᯨ᪮ ஢ 

     ᯨ᪠ 믠饣 ᯨ᪮ ஢   ᥡ
  ᯨ᪠ 믠饣 ஢  -   
室  㤠,    㦥.   ⨯
஢  ࠧ   ⥩ ।஢.
 ।஢ 믠饣 ஢   ᥡ 
 ।㥬 ࠢ騥 ,   ।஢
믠饣 ᯨ᪮ ஢   ।⠢ ⮫쪮
⥪   ⮢ ᯨ᪠     אַ ஢
짮⥫.

    롮 ⨯ ஢ 

    믠騥 ᯨ᪮ ஢     , 
ਥ  롮, ஬ ਠ⮢, ᫥   ᯨ᪠.
ਬ,  롮 ਭ      ⮫쪮 ਭ,
ਭ 襩 ⥬ (. . 12.5).

. 12.5  믠騩 ᯨ᪮ ஢ 

     㣮 ஭, 믠騩 ஢   ਭ
, ⫨  室  ᯨ᪥.  ᯮ짮 믠騥
஢   롮 䠩  ᪥   
࠭. 짮⥫   ⢫   ४ 
᪠ 室饣 䠩  ᯨ᪥,    ⥢  䠩
  ।஢ ᨬ  ⮣,   䠩
।⠢   ᯨ᪠.

    ஢ ஢ 

     TComboBox ᯮ  ࠬ 
ࠢ饣 : 㪠⥫  த⥫᪮ , 䨪
ࠢ饣    ⮯  ࠧ. ஬ ⮣,
 TComboBox ᯮ ࠬ AStyle  ATextLen.
     ࠬ AStyle   ஢  । 
 ⠭ ⨫ ஢  Windows (CBS_SIMPLE,
CBS_DROPDOWN  CBS_DROPDOWNLIST).   Attr.Style 
஢  ⠭  ᯮ짮 ࠬ AStyle 
⥫ ⠭ ⨫,   :

    Attr.Style = WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP |
                 CBS_SORT | CBS_AUTOHSCROLL | WS_VSCROLL | AStyle;

     ᫥饬 ਬ ணࠬ   Attr.Style 
஢   ⠪, ⮡ ஢  
 ஢:

    Combo3 = new TComboBox(this, ID_COMBO3, 190, 160, 150, 100,
                           CBS_DROPDOWNLIST, 40);
    Combo3->Attr.Style &= ~CBS_SORT;

    ࠬ ATextLen  ᨬ쭮   ।㥬
ࠢ饣   ஢ .

    䨪 ஢ 

    TComboBox ।  㭪樨-  ।⠢  
 ᯨ᪠ 믠  믠 ᯨ᪮ ஢ :
ShowList  HideList.    楤ࠬ    㬥⮢.
  㦭 뢠  㭪樨-  ।⠢  
ᯨ᪠,  짮⥫ ⢫ 饫箪   ५  
ࠢ 㣫  ।஢.   ⮬᪮ ॠ樥
஢  Windows.  㭪樨   
ਭ㤨⥫쭮 ।⠢   ᯨ᪠.

    ਬ ਫ: CBoxTest

    ணࠬ CBoxTest ந ਫ,   . 12.4.
ᯮ   ⨯ ஢ . Combo1  
஢ , Combo2 - 믠騬 ஢ , 
Combo3 - 믠騬 ᯨ᪮ ஢ .
    箪   Show  Hide ⠢ ।⠢  뢠
ᯨ᮪ ࠢ  ஢ , Combo3,   맮
㭪権- ShowList  HideList.
     䠩 CBOXTEST.CPP    ४ਨ EXAMPLES.

          ࠢ騥 

     ࠢ騥  筮  塞 ⥪⮬ 
 ᪨ 㭪,       .
짮⥫  ந ⢨  묨 ࠢ騬 ⠬,
 ணࠬ    ⥪. 㭮 12.6 뢠 
⨫  ࠢ ⮢  ᮮ⢥騥  ⠭ ⨫
Windows.

. 12.6   ࠢ騥 

    ஢  ࠢ ⮢

       ࠢ騥   뫠 ।०
ᮮ饭   ࠡ뢠 ணࠬ  ࠧ  
䨪஢,   㦤  㭨 䨪. 
饬 ᮣ襭, "ࠧ" 䨪஬ ࠢ ⮢,
 ᯮ㥬   ࠢ ⮢,  -1.
    ஬   ࠢ ⮢ ࠬ஢ ,
 TStatic ᯮ  ⥫ ࠬ, 
ᮤন  ⥪, । ꥪ⠬ TStatic. ᠭ ।
  ᢥ  ஫   TextLen  TStatic   
ࠣ "।  ࠢ ⮢" (  ⮩ ).
     TStatic 뢠  TControl,  ⥬  
  Attr.Style ⨫ SS_LEFT ( ࠢ ⥪ ᫥)
 㤠 ⨫ WS_TABSTOP.   ⨫, ⠭ 
㬮砭  襣 筮 ࠢ饣 , 
Attr.Style:

    AStatic = new TStatic(this, -1, "&Text", 20, 50, 200, 24, 6);
    AStatic->Attr.Style = AStatic->Attr.Style & ~SS_LEFT | SS_CENTER;

    ᫨   㦭  ⨫ 襣 筮 ࠢ饣
 ᫥ ஢,   㦭 ন 뫪  
  ६. ᫨,   筮 뢠,   㦭
㫨஢  ࠢ騬 ⮬ ᫥  ᮧ,  
㦭 ন 뫪        த⥫᪮
.
    ⢥   筮 ࠢ饣  
ન   ᪮쪨 ᨬ  ⥪⮢ ப. 
 䥪 ⮣  ન ࢮ ᨬ 㭪 : 
⠢ ᨬ &  ப ।⢥ । ᨬ,  㦭
ભ. ਬ,  ન 㪢 T  ᫮ Text, 諨 
맮  ப "&Text". ᫨   ᯮ짮  ப
ᨬ &, ᯮ  ⨫ Windows SS_NOPREFIX (. . 12.6).

       ࠢ騬 ⠬

     祭 ⥪, ᮤঠ饣     筮
ࠢ饬 , ᯮ 㭪- GetText.

    䨪  ࠢ ⮢

    TStatic   㭪樨-   ⥪ 筮
ࠢ饣 . 㭪 SetText ⠭  ⥪,
। 㬥⮬ ⨯ LPSTR. Clear 㤠  ⥪. ,
    ⥪ 筮 ࠢ饣 , ᮧ 
⨫ SS_SIMPLE.

    ਬ: ਫ StatTest

    ਫ STATTEST.CPP ᮧ 筮 ⮢ ਫ,
।⠢  . 12.6. ⨬,  ⠪ 祭,  "Default
Static"  "SS_SIMPLE",  묨 ࠢ騬 ⠬, ⠪
  "Sample Text"     אַ㣮쭨.
     䠩 STATTEST.CPP    ४ਨ EXAMPLES.

         㥬 ࠢ騥 

    㥬 ࠢ騥   אַ㣮 ࠢ騥
 (騥  騥  ࠬ),  ᯮ 
祭 ⥪,  짮⥫.   ।㥬
ࠢ    짮⥫,  ⠪
஢ ணࠬ.  樨  ।㥬
ࠢ騬 ⮬ (⠪  १ (Cut), ஢ (Copy) 
 (Paste)) 뫠   ⥪   ଠ樮 
(Clipboard). ন ᫥騥 樨:

*  ⥪ 짮⥫
* ᪮ ।⠢ ⥪ ਫ
* १, ஢   ⥪   ଠ樮 
* ஢ ᪮쪨 ப (  । ⥪)

    Windows ।⠢ ।㥬 ࠢ騥   
ॠ஢  ࠧ ᮡ, 뢠 짮⥫. ਬ, 
 ⢫  饫箪   ᫮  ।㥬 ࠢ饬
, ᫮ 롨ࠥ;     Del, ᨬ 
樨  㤠. ObjectWindows  
।㥬 ࠢ ⮢ Windows  ।⠢ ࠧ
० ।஢ ⥪.
    . 12.7 ।⠢ , ᮤঠ饥  ।㥬 ࠢ
।⢠.

. 12.7    ।㥬묨 ࠢ騬 ⠬

    ஢ ।㥬 ࠢ ⮢

     TEdit ᯮ  ࠬ 
ࠢ饣 : 㪠⥫  த⥫᪮ , 䨪
ࠢ饣    ⮯  ࠧ. ஬ ⮣,
 TEdit ᯮ ࠬ Multiline ⨯ BOOL  ࠬ AText
⨯ LPSTR. Multiline 㪠뢠, ᮧ   ᮧ ࠢ騩
  ।஢ ᪮쪨 ப. 㣮 ࠬ, ATextLen,
ᮤন ᨬ쭮 ᫮ ᨬ,     
।㥬 ࠢ騩 .   ⥪  
饥 ⮥ 祭, ᫮ ᨬ,    
।㥬 ࠢ騩 ,  ⢨⥫쭮   
। ࠬ ATextLen.
    ࠢ騩 , ।騩  ப,  ࠢ騩 ,
।騩 ᪮쪮 ப,   ᫥饬 ਬ
ணࠬ. 짮⥫   ᨬ 39 ᨬ   
ࠢ :

    SingleLineEdit = new TEdit(this, ID_SEDIT, "Default Text",
                               20, 50, 150, 30, 40, FALSE);
    MultiLineEdit = new TEdit(this, ID_MEDIT, "Default Text",
                              20, 50, 150, 30, 40, TRUE);

    騥 ⠭ ⨫ ⠭   ।㥬
ࠢ ⮢: WS_CHILD, WS_VISIBLE, WS_TABSTOP, ES_LEFT,
ES_AUTOHSCROLL  WS_BORDER. ᫨ ࠬ Multiline  祭 TRUE,
ࠢ騩   ।஢ ᪮쪮 ப  
⥫ ⠭ ⨫: ES_MULTILINE, ES_AUTOVSCROLL, WS_HSCROLL
 WS_VSCROLL.
    ᫥ ⮣,  ।㥬 ࠢ騩   ᪮஢,
 ⨫   :

    BorderlessEdit = new TEdit(this, ID_SEDIT, "Default Text",
                               20, 50, 150, 30, 40, FALSE);
    BorderlessEdit->Attr.Style &= ~WS_BORDER;

        १⮬ ।㥬 ࠢ騩
, ।⠢  . 12.8,  맢 㭪- Create
 ।㥬 ࠢ饣 .

. 12.8 㥬 ࠢ騩  ᮧ  ࠬ

     ⠡ ਢ  騥 ⨫ ।㥬
ࠢ ⮢:

 12.3  騥 ⨫ ।㥬 ࠢ ⮢

⨫           
---------------------------------------------------------------------------
ES_LEFT         ࠢ ᫥
ES_CENTER       ࠢ  業
ES_RIGHT        ࠢ ࠢ
ES_MULTILINE    ࠢ騩 , ।騩 ᪮쪮 ப
ES_UPPERCASE    ८ࠧ ⥪   ᨬ
ES_LOWERCASE    ८ࠧ ⥪  ய ᨬ
ES_AUTOVSCROLL  ⮬᪠ ⨪쭠 ப⪠ ⥪  ࠢ饬
                , ।饬 ᪮쪮 ப
ES_AUTOHSCROLL  ⮬᪠ ਧ⠫쭠 ப⪠ ⥪ 
                ࠢ饬 , ।饬 ᪮쪮 ப
WS_BORDER        אַ㣮쭨  ।㥬 ࠢ饣
                
WS_VSCROLL       ⨪  ப⪨
WS_HSCROLL       ਧ⠫  ப⪨

     ଠ樮   樨 ।஢

      אַ ७ ⥪  ।㥬 ࠢ騬
⮬  ஬ ଠ樮  Windows, ᯮ ᫥騥
㭪樨- TEdit:

* Cut
* Copy
* Paste

      㣨 㭪樨- ।஢:

* Clear (஦  TStatic)
* DeleteSection
* Undo

    ⢥  ⥫쭮 㭪樥-⮩
।஢  㫥᪠ 㭪- CanUndo, 
।,    ⬥ ᫥ .
    ,  㤥    짮⥫   ⨬
㭪-⠬ १  ।஢. 㥬 ࠢ騩
 ⮬᪨ ॠ  ⠪ 㭪 ,  Edit|Copy 
Edit|Undo. TEdit । ⠪ 㭪樨-, 騥 
,  CMEditCopy  CMEditUndo,  뢠  ⢥ 
 㭪  ()  த⥫᪮  ࠢ饣 .
CMEditCopy 뢠 Copy,  CMEditUndo 뢠 Undo.
     ⠡  㭪樨-, 뢠  ⢥ 
롮   䨪ࠬ  (।묨  RCOLWLH):

 12.4  䨪   뢠  㭪樨-

䨪   뢠 㭪-
---------------------------------------------------
CM_EDITCUT          CMEditCut
CM_EDITCOPY         CMEditCopy
CM_EDITPASTE        CMEditPaste
CM_EDITCLEAR        CMEditClear
CM_EDITDELETE       CMEditDelete
CM_EDITUNDO         CMEditUndo

    ,   ,    ।஢, 
ண  䨪 , ᫥ .   㦭
ᯮ짮 - 㣨 㭪樨-.

      ।㥬 ࠢ騬 ⠬

    ,   㤥  ᫠  ।㥬
ࠢ饬   ஢ન  ⥪⮢ ᮤন, ࠭
ᮤন  쭥襣 ᯮ짮  ஢ ᮤন 
㣮 ࠢ騩 . TEdit ন  㭪権- 
ᮢ.   ।㥬 ࠢ饣 ।⢠ 
㭪樨- 䨪権   ॡ   
ப  樨 ᨬ  ப.    稭  .
㣨 ᫮, ࢠ ப  ப  ᮬ ,   ᨬ
  ப  ᨬ  ᮬ .  
㭪樨-  GetText, GetLine, GetNumLines  GetLineLength.
      ,  㭪樨- ᮢ TEdit, 騥
⥪  ।㥬 ࠢ饣 , ࠭ ଠ ⥪. 
 ⮫쪮  ࠢ ⮢, । ᪮쪮 ப,
  ⥪ ।⠢  ᪮쪨 ப.  ⮬ 砥
頥 ⥪, 騩 ᪮쪮 ப  ।㥬 ࠢ饬
, ᮤন  ⥫ ᨬ    ப:
 ⪨ (0x0D)  ॢ ப (0x0A).   ⥪ ᭮
⠢  ࠢ騩 ,    ଠ樮
, 뢠  䠩  ᯥ뢠  ਭ,  ப
।⠢ ⠪,   뫮 ᤥ  ࠢ饬 . 
ࠧ,   ᯮ 㭪樨- ᮢ,  
 ᫮ ᨬ,  뢠 뢠  ⥫ ᨬ,
ᯮ㥬   ப.
    GetText 砥 ⥪  ।㥬 ࠢ饣 . 
 ப, 㪠뢠 㬥⮬ ⨯ LPSTR, ᮤঠ
।㥬 ࠢ饣 ,   ப,  ᫠
ᨬ,   ஬ ࠬ.  頥  ⢥ 祭
맮 ᫮ ᪮஢ ᨬ. ᫨ ।㥬 ࠢ騩 
 ᮤঠ ⥪, 頥 .
     楤 砥 ⥪  ।㥬 ࠢ饣
  頥   㬥 TextBuffer:

    void TTestWindow::ReturnText(LPSTR TextBuffer, int BufferSize)
    {
      char TheText[20];

      if (BufferSize >= sizeof(TheText) &&
          (Edit->GetText(TheText, sizeof(TheText) != 0))
        strcpy(TextBuffer, TheText);
      else strcpy(TextBuffer, "")
    }

    GetLine  ᯥ樠஢, 祬 GetText.  ࠢ ,
। ᪮쪮 ப,  頥 ⥪  ப, 
楫 㬥⮬. ப 0  ࢠ ப.
    GetNumLines 頥 ᫮ ப,   ࠢ饬 ,
।饬 ᪮쪮 ப.   ᯮ짮 GetNumLines 
஢ન ⮣, ᪮쪮 ப 뫮   ।㥬 ࠢ騩
, । 祭 ⥪  ப   GetLine.
    GetLine Length 頥 ᫮ ᨬ   ப 
ࠢ饬 , ।饬 ᪮쪮 ப. ᫨ ப
,   ᮤন ᨬ, GetLineLength 頥 . 
 ᯮ짮 GetLineLength, GetNumLines  GetLine  
᭮ 祭 ⥪  ࠢ饣 , ।饣
᪮쪮 ப.

    void TTestWindow::ReturnLine(int LineNum, LPSTR TextBuffer,
                                 int BufferSize) {
      char TheText[20];

      if ((Edit->GetNumLines >= LinenNum) &&
          (Edit->GetLineLength(LineNum) >= sizeof(TheText)) &&
          (Edit->GetLine(TheText, sizeof(TheText)) != 0))
        strcpy(TextBuffer, TheText);
      else
        strcpy(TextBuffer, "")
    }

    GetSubText  㣠 㭪-,  ᯥ樠஢, 祬
GetText.  ᯮ 㬥 ⨯ LPSTR   楫 㬥,
㪠뢠  砫    - ࠧ - ⥪
।㥬 ࠢ饣 .  ᨬ   . 
ࠢ饬 , ।饬 ᪮쪮 ப,  
᫥⥫쭮, 稭  ࢮ ப,    ⠢ ⮪.
 ப ⠥   ᨬ.   襩 ணࠬ
࠭ ଠ ⥪ ।㥬 ࠢ饣  
।⠢ , , । 㣨 ।㥬 ࠢ騬
⠬  饭   ଠ樮 .
      ,      ।  ⢥
㬥⮢  맮 㭪樨- GetSubText.  ᯮ짮
GetSelection, 㭪-,  砫   
⥪饣 ࠭  뤥 ⥪. 筮 ⥪ 롨ࠥ
짮⥫,   ⠪   ࠭ ணࠬ  
㭪樨- SetSelection (. ࠣ "䨪 ।㥬
ࠢ ⮢").  , 頥 GetSelection, 
 ᫥ ࠭ ᨬ  .
      ࠭ ஥ ६ ࠡ⪨  ਪ ணࠬ,
 ந ࠡ ⥪ ।㥬 ࠢ饣 .
㭪- IsModified ⨯ BOOL 頥 TRUE, ᫨ 짮⥫
஢ ⥪ ।㥬 ࠢ饣 ,  FALSE 
⨢ 砥. 饭 FALSE  । 맮  GetText
 GetLine. ClearModify 뢠 䫠   FALSE.
    GetLineIndex  GetLineFromPos   㭪ﬨ-⠬,
   ᯮ짮 ⮫쪮  ᫥ ⮯ ⥪
 ࠢ饬 , ।饬 ᪮쪮 ப. GetLineIndex
頥 ᫮ ᨬ (  ᨬ    ப) 
 ப । ப,  楫᫥ 㬥⮬.
㭪- 頥  ।㥬 ᨬ, ᫨ 
ப  . GetLineFromPos 砥  㬥  樨
ᨬ  頥 ᮮ⢥騩  ப.  
㭪樨-   ᭥  ப  ᮤঠ
ࠢ饣 , ।饣 ᪮쪮 ப.

    䨪 ।㥬 ࠢ ⮢

     ணࠬ  묨 ⠬      㦭
ﬠ 䨪 ।㥬 ࠢ ⮢. 짮⥫
 ⥪,  ணࠬ 뢠 ⥪   㭪権-
ᮢ. ,  㣨 ਫ ।㥬 ࠢ
⮢ ॡ, ⮡  ਪ ணࠬ  﫠,
⠢﫠, 㤠﫠  롨ࠫ ⥪.  ਫ ObjectWindows
㭪樨- ஢  TEdit   맢 
ணࠬ 㫨஢ ⥪⮬ ।㥬 ࠢ饣 .

     ⥪

    Clear  㤠  ᮤঠ ⥪  ।㥬 ࠢ饬
.   ᯮ짮    뢠饩 樨,
㤠饩 ᪮쪮   ।㥬 ࠢ騥   .
DeleteSection 㤠 ⥪騩 ࠭ ⥪ ।㥬 ࠢ饣
.   ⥪  ।⠢   Clear 
DeleteSection  㭪⮢  (. ࠣ  ଠ樮  
樨 ।஢"). DeleteSection  㭪 ⨯ BOOL, 
頥 FALSE, ᫨  뫮 ⥪饣 ࠭ ⥪.
    DeleteSubText  DeleteSection  ᪫祭 ⮣,  
㤠 ⥪  ।묨 砫쭮  筮 ﬨ. 塞
⥪ 砥  ᥡ ᨬ  砫쭮 樨,   砥 ᨬ 
筮 樨.
    DeleteLine 㤠  ⥪, 室騩   ப.  
㤠, ,  ᨬ, ⠢騥  ப.  裡  ⨬ 
   㣨 ப.

    ⠢ ⥪

    Insert  Paste  ᪫祭 ⮣,   砥 ⥪ 
⠢  ।⠢塞 㬥,     ଠ樮
.  㤠  騩 ࠭ ⥪,   
⠢ ⥪ 뤥. ᯮ Insert,   ॠ
⥪⮢  ଠ樮 , ࠢ塞 襩 ணࠬ.
    SetText  ⢨ Clear  Insert.  㤠  ᮤঠ
।㥬 ࠢ饣   ⠢ ⥪ ।⠢塞
㬥. ਬ,  ⠭ ࠭ ⮢  
⥬ ⮢ , 砥 設⢮  
୨,   ᯮ짮

    StateField->SetText("CA");

 ⠭  "".

    ਭ㤨⥫ 롮  ப⪠ ⥪

    SetSelection ⢫ 롮  뤥 ⥪ 
।묨 砫쭮  筮 樥,   ᨬ  ᫥
樨.
    Scroll ਭ㤨⥫쭮 ப稢 ࠢ騩 , ।騩
᪮쪮 ப. Scroll ᯮ  楫᫥ 㬥: ᫮
ᨬ  ਧ⠫쭮 ப⪨  ᫮ ᨬ  ⨪쭮
ப⪨. ⥫쭮 楫 ᫮ ப稢 ࠢ  , 
⥫쭮 -  . ⨪쭮 ப稢  ⮫쪮
ࠢ騥 , ।騥 ᪮쪮 ப.

    ਬ ணࠬ: EditTest

    EditTest  ணࠬ,  ।⠢  ,
஥ 㦨 த⥫᪨    ।㥬 ࠢ
⮢,   ࠢ ⮢  .  
।⠢  . 12.7.
     짮⥫ ⢫ 饫箪   , ⥪  
।㥬 ࠢ饣  (Edit1)   ࠢ
।㥬 ࠢ騩  (Edit2).  Edit2 ⥪ ८ࠧ 
 㪢, ⠪     Attr.Style  ⠭
⨫ ᮧ   ⨫ ES_UPPERCASE. ᫨  Edit1  뫮
࠭ ⥪,  Edit2   ⥪. ᫨   Edit1 
- ࠭ ⥪,  Edit2  ⮫쪮 ࠭ ⥪.
     ।஢ ন 㭪樨 ।஢ ᬮ  ,
  ।㥬 ࠢ饬  室 䮪 .
     䠩 EDITTEST.CPP    ४ਨ EXAMPLES.

         ࠢ騥   

      ( 뢠 "묨 ") ᯮ
 믮    ࠧ  ⨨ . 
 ⨫  , ஦  TButton: BS_PUSHBUTTON 
BS_DEFPUSHBUTTON.  ⨫  ᯮ짮  ஢
TButton. ⠭     ,  
뤥 ࠬ  ᯮ 筮  㪠 ⠭⭮ ॠ樨
짮⥫.
     TButton ᯮ  ࠬ 
ࠢ饣 : 㪠⥫  த⥫᪮ , 䨪
ࠢ饣    ⮯  ࠧ. ஬ ⮣,
 TButton ᯮ ࠬ IsDefaultButton ⨯ BOOL 
ࠬ Text ⨯ LPSTR. IsDefaultButton 㪠뢠, 㤥  
 ⠭⭮  . Text ᮤন ⥪, ।⠢塞 
. ਬ, ᫥騥 ।ᠭ  த⥫ 
    "Test Button".

    Push1 = new TButton(this, ID_BUTTON, "Test Button",
                        38, 48, 316, 24, FALSE);

      ᮮ饭 

     짮⥫ ⢫ 饫箪    ,
த⥫᪮   砥 ।०饥 ᮮ饭  .
⥫᪮   ॠ஢   ᮮ饭   ।
㭪権- ॠ樨,   䨪 ⮬.
     ᫥饬 ਬ TTestWindow::HandleButtonMsg ॠ 
।०騥 ᮮ饭    䨪஬ ID_BUTTON
।⠢  ᮮ饭:

    class TTestWindow : public TWindow {
    public;
      PTRadioButton Button;
      virtual void HandleButtonMsg(RTMessage Msg) =
        [ID_FIRST + ID_BUTTON];
    }
    void TTestWindow::HandleButtonMsg(RTMessage Msg)
    {
      MessageBox(HWindow, "clicked", "The button was:", MB_OK);
    }

    ⢥ ।०騩 , । Windows  
,  BN_CLICKED, ⠪    㦤  ஢થ.

          ஢ન  ᥫ⨢ 

     ஢ન  ᥫ⨢     ᥫ⨢
, ⠪   ᯮ  祭  짮⥫  ଥ
롮.  ஢ન  ᥫ⨢  筮   ﭨ,
࠭  ࠭. 樠  ஢ન  ६ ﭨﬨ
 ⥫쭮 "" ﭨ.   ஢ન 
,  롮 ஢,      ஢७.
    筮,  ஢ન ᯮ  祭 ਠ⮢ 롮
(, ᫥)  짮⥫,  ᥫ⨢ 
ᯮ  祭   ᪫ ਠ⮢ 롮.
ਬ,  ஢ન  ᯮ짮  ⮣, ⮡ 
  ᫮ 㦠 ⮢. ⨢  
ᯮ짮  饭 ⨯   ண ᨬ.
     ஢ન  ᥫ⨢  ।⠢ ࠬ ᮢ
TCheckBox  TRadioButton ObjectWindows. TCheckBox ஦  TButton, 
TRadioButton ஦  TCheckBox.

    ஢  ஢ન  ᥫ⨢ 

     TCheckBox  TRadioButton ᯮ  ࠬ
 ࠢ饣 : 㪠⥫  த⥫᪮ ,
䨪 ࠢ饣    ⮯  ࠧ.
஬ ⮣,   ᯮ ࠬ Text ⨯ LPSTR  ࠬ
AGroup ⨯ PTGroupBox. Text ᮤন ⥪,   㬮砭 㤥
 ࠢ ᥫ⨢ . AGroup  㪠⥫  ꥪ
TGroupBox,  ᯮ  祭 ᪮ 㯯஢
ᥫ⨢ . ᫨ AGroup  祭 NULL, ᥫ⨢  
    ᪨ 㯯 (. ࠣ " 㯯"):

    GroupBox = new TGroupBox(this, ID_GROUPBOX, "A Group Box",
                             38, 102, 176, 108);
    CheckBox = new TCheckBox(this, ID_CHECKBOX, "Check Box Text",
                             235, 12, 150, 26, GroupBox);

     㬮砭,  ஢ TChekBox  TRadioButton ⠭
⨫ BS_AUTOCHECKBOX  BS_AUTORADIOBUTTON.  १, Windows
⮬᪨ ४砥 ஢塞 ﭨ  ⨯ 
஢ન,    ⢫ 饫箪 .   ᥫ⨢
  ⨫ "⮬᪨" ⢫ 饫箪,  ⠫
ᥫ⨢  ⮩  㯯  ﭨ " ࠭". ᫨ 
⠭ Attr.Style,  "⮬᪨" ⨫ BS_CHECKBOX 
BS_RADIOBUTTON,  ⠭ ⢥⢥  ﭨ  ᥫ⨢
.
    ᫨  , ⮡ ⥪⮢ ப   ஢ન 
ᥫ⨢  﫨 ᫥  , ।  ᮧ 
⨫ BS_LEFTTEXT  Attr.Style:

    CheckBox->Attr.Style |= BS_LEFTTEXT;

     ﭨ ᥫ⨢ 

      ᥫ⨢   ⢥  । 
ﭨ  ॠ஢  . ⨢    ஢ન 
 ﭨ: ࠭   ࠭.   ﭨ ᥫ⨢
 ᯮ  㭪 GetCheck  TCheckBox:

    MyState = CheckBox->GetCheck();

    頥 祭 㭪樨 GetCheck  ࠢ  ⠭⠬
BS_UNCHECKED, BS_CHECKED  BS_GRAYED  । ﭨ .

    䨪 ﭨ ᥫ⨢ 

    䨪 ﭨ ᥫ⨢  筮 ⢫
짮⥫ﬨ 襩 ணࠬ,   . ,    
ணࠬ 㤥 㦤  אַ ࠢ ﭨ ᥫ⨢
.
    ਬ,   砥,    ࠢ ﭨ
ᥫ⨢ ,  ।⠢ 롮஢,  뫨 ᤥ ࠭ 
࠭.  TCheckBox ।  㭪樨- 
䨪樨 ﭨ  ஢ન: Check, Uncheck, Toggle  (
) SetCheck.

* Check ⠭ ﭨ  ஢ન  ࠭:

    CheckBox->Check();

* Uncheck ⠭ ﭨ  ஢ન  ࠭:

    CheckBox->Uncheck();

* Toggle  ﭨ  ஢ન  ࠭  ࠭ 
.  砥   ६ ﭨﬨ, Toggle ४砥
࠭ ﭨ  ࠭, ࠭  "",  "" 
࠭.

    CheckBox->Toggle();

* SetCheck   業 ࠢ ﭨ  ஢ન:

    CheckBox->SetCheck(BF_UNCHECKED);  //   ஢ન ࠭
    CheckBox->SetCheck(BF_CHECKED);    //   ஢ન ࠭
    CheckBox->SetCheck(BF_GRAYED);     //   ஢ન  ६
                                          ﭨﬨ ""

     ᥫ⨢   ⨫ BS_AUTORADIOBUTTON 롨ࠥ
맮     㭪権-,  ࠭ ᥫ⨢
  ⮩  㯯  ࠭묨 (. ࠣ " 㯯").
 ७,   ⮫쪮  ᥫ⨢   㯯 
 ᥣ ࠭.

      ᮮ饭  ஢ન  ᥫ⨢ 

     짮⥫ 롨ࠥ  ஢ન  ᥫ⨢ ,
뫠 ।०饥 ᮮ饭  ।०騬  BN_CLICKED
த⥫᪮ .    ஢ 㣨 ᮢ ࠢ
⮢,  ᮮ饭 筮 ࠡ뢠 㭪ﬨ ⠬
ॠ樨 த⥫᪮ , 騬  䨪 ⮬. 
, ,  த   TButton  TCheckBox,
   믮 - ⢨  롮.

          㯯

      㯯 Windows   אַ㣮쭨, 
㠫쭮 易  㣨 ࠢ騬 ⠬  祣  
. ᪠ 㯯஢ ࠢ ⮢ ( ன 
 ᪫砥 ⮬᪨ ᥫ⨢ )  
१⮬  ⮯    㯯,   
浪 ᮧ ࠢ ⮢  ᯮ짮 ⨫ ᮧ
WS_GROUP.
    ꥪ TGroupBox ObjectWindows, ,   ⥫묨.
 믮  㭪  ᪮ 㯯஢ ࠢ
⮢.    TGroupBox   ᥫ⨢  (
஢)   । "㯯" ⮤ ॠ樨,  
। ⤥ ⮤ ॠ樨  . TGroupBox  
   ਭ ।० ᮮ饭  ᥫ⨢
 ᢮ 㯯  ८ࠧ ᮮ饭  "㯯"
।०饥 ᮮ饭 த⥫.

    ஢  㯯

     TGroupBox ᯮ  ࠬ 
ࠢ饣 : 㪠⥫  த⥫᪮ , 䨪
ࠢ饣    ⮯  ࠧ. ஬ ⮣, 
ᯮ ࠬ Text ⨯ LPSTR,  㪠뢠  
㯯:

    GroupBox = new TGroupBox(this, ID_GROUPBOX, "A Group Box",
                             38, 102, 176, 108);

      ᮮ饭  㯯

     ந室   ﭨ ᥫ⨢ , 饣
 㯯, ।०  TGroupBox. ⥬, TGroupBox 뫠
"㯯" ।०饥 ᮮ饭 த⥫. ⥫ 
ॠ஢  ᮮ饭 । 㭪権- ॠ樨,
  䨪 ⮬,  ࠡ⪨ ।०
ᮮ饭  㯯.
     ਬ ணࠬ GBOXTEST.CPP -㭪 த⥫᪮ 
।  ॠ樨   롮    㯯 ᥫ⨢
.
     GBOXTEST.CPP    ४ਨ EXAMPLES.

    ਬ ணࠬ: BtnTest

    BtnTest  ணࠬ,  ᮧ   ࠢ騬 ⠬
 ,  ஢ન, ᥫ⨢    㯯. 
ਪ ணࠬ ᪠, ࠢ騥  ।⠢ 
 .  짮⥫ ⢫ 饫箪   ࠢ
, ਪ ணࠬ ॠ ࠧ묨 ᯮᮡ. . .
12.9.

. 12.9    ࠧ묨 

     䠩 BTNTEST.CPP    ४ਨ EXAMPLES.

          ப⪨

    ࠢ騩   ப⪨ ᮤন ६騩
אַ㣮쭨 (㭮),   ६  ᥩ  
ப⪨  ࠧ 樨.   易  祭 
 . ࠢ騥   ப⪨ ᯮ 
祭 祭, ஥   ⠭,  짮⥫.
ਬ, ࠢ騩   ப⪨  ᯮ짮 
祭  짮⥫ ⠭ ⥬  祭 梥.
    ࠢ騥   ப⪨ 祭 宦   ப⪨
   ᥣ ⫨稬  .  ப⪨ , ࠢ騥
ப⪮ ᮤন ,   ᠬ ;   
୨ . Windows ᮧ  ப⪨   , 
 ⨫ ᮧ WS_HSCROLL  WS_VSCROLL.  ObjectWindows ࠢ騥
  ப⪨ ᮧ ⥬  ⥬,   ⠫
ࠢ騥 .  㦭 ⮫쪮 ᪮஢ ꥪ 
ப⪨    த⥫.

. 12.10  ࠢ騩   ப⪨

    ஢ ꥪ⮢  ப⪨

     TScrollBar ᯮ  ࠬ 
ࠢ饣 : 㪠⥫  த⥫᪮ , 䨪
ࠢ饣    ⮯  ࠧ. ஬ ⮣, 
ᯮ ࠬ IsHorizontal ⨯ BOOL,  㪠뢠 ਥ
(ਧ⠫  ⨪)  ப⪨  த⥫᪮ .
᫨  ⨪쭮  ப⪨  ਭ , 
  ⠭⭮ ਭ,   ᯨ᪠.  ᠬ
⨭, ᫨  ਧ⠫쭮  ப⪨   .
騩 ਬ ᮧ ਧ⠫  ப⪨ ⠭⭮
,   . 12.10:

    Thermometer = new TScrollBar(this, ID_THERMOMETER,
                                 20, 170, 340, 0, TRUE);

     TheScrollBar 뢠  TControl,  ⥬
 ⨫ SBS_HORZ  SBS_VERT  ⠭⭮  ⨫ 
 ப⪨.    ⥫ ⨫, , ਬ,
SBS_TOPALIGN,    Attr.Style  ப⪨.
    . 12.11 뢠 ࠧ ࠢ騥   ப⪨.

. 12.11    ࠧ묨  ப⪨

      ப⪨ ⠭  㬮砭  1  100 
ᮧ  ப⪨.   㣮  ᯮ
㭪- SetRange  ᠭ  ࠣ "䨪 
ப⪨".
     㣨 ਡ⠬ ꥪ  ப⪨  稭
ப  稭 ࠭. LineMagnitude  ᫮ 権,  ஥
㤥 ६ 㭮,  짮⥫ ⢨ 饫箪  
 ५    ப⪨. PageMagnitude  ᫮ 権, 
஥ 㤥 ६ 㭮,  짮⥫ ⢨ 饫箪 
  ⥩ ப⪨ - ࠭⢥  㭪  栬 
ப⪨. LineMagnitude  PageMagnitude  㬮砭 ⠭  1 
10, ᮮ⢥⢥.   ⠭  祭 אַ
䨪樥   LineMagnitude  PageMagnitude  TScrollBar.

      ப⪨

    TScrollBar ।  㭪樨    
ப⪨: GetRange  GetPosition. 㭪- GetRange 
楤ன,  ᯮ  楫᫥ 뫪. 楤 頥
     樨 㭪   
ப⪨.
    GetPosition  㭪,  頥 楫᫥ 
㭪.  ணࠬ    ,  ⥬ ࠢ
.

    䨪  ப⪨

    䨪  ப⪨  믮 ᠬ 짮⥫
ணࠬ. ,  ணࠬ ⠪  ஢ 
ப⪨.
    SetRange  㭪-, ᯮ  楫᫥
㬥  襩  襩 樨 .  㬮砭,
  ப⪨    1  100.   
    襣 ࠦ 魮  ப⪨.
 ⮣, ⮡ ᤥ ,  맢 㭪- SetRange
 ப⪨ ᫥ ⮣,   ப⪨ 㤥 ᮧ. 
襥   ⮣ ⮣ - 㭪- SetupWindow 
த⥫᪮ .   ⮬,  । ⥬,  맢 SetRange,
 뢠 㭪- SetupWindow த⥫᪮  
 ᮧ ࠢ饣   ப⪨.
     ᫥饬 ਬ த⥫᪮ 㭪樥-⮩ SetupWindow
   ப⪨, ᯮ㥬  ମ:

    void TParentWindowType::SetupWindow()
    {
      TWindow::SetupWindow();
      Thermometer->SetRange(32, 120);
    }

    筮, ᫨   ப⪨  ஬ ,
஦   TScrollBar, 襥   䨪樨  
㤥   ᮡ⢥ 㭪樨- SetupWindow.
    SetPosition  㭪樥-⮩, ᯮ饩 
楫᫥ 㬥 - ,     ६ 㭮
 ப⪨.  ਪ ணࠬ ମ, ᬠਢ襩
࠭,  ணࠬ  אַ ⠭ 祭 ⥬
ମ  78 ࠤᮢ  

    Thermometer->SetPosition(78);

     㭪-, DeltaPos, ६頥 㭮 
ப⪨   楫᫥ 㬥⮬ ᫮ 権  ()
  (ࠢ). ⥫쭮 楫 ᫮ ६頥 㭮 
(ࠢ),  ⥫쭮 -  (). ਬ,  㬥襭
祭 ⥬ ମ  5 ࠤᮢ ᯮ:

    Thermometer->DeltaPos(-5);

      ᮡ  ப⪨

      ப⪨ ப稢,  த⥫᪮  砥
।०饥 ᮮ饭  ப⪨. ᫨  , ⮡ 
 ॠ஢  ᮡ ப⪨, ࠡ뢠 ।०騥
ᮮ饭  ᯮᮡ, । 㭪権- ॠ樨,
  䨪 ⮬. , ।०騥 ᮮ饭
 ப⪨ ᪮쪮 ⫨  ।० ᮮ饭 㣨
ࠢ ⮢.    ᮮ饭 Windows WM_HSCROLL 
WM_VSCROLL,    WM_COMMAND.     ⮬, 
।०騥   ப⪨ ࠭  Msg.WParam,   
Msg.LP.Hi.   騥 : SB_LINEUP, SB_LINEDOWN, SB_PAGEUP,
SB_PAGEDOWN, SB_THUMBPOSITION  SB_THUMBTRACK.
     ᥣ,  㤥 ॠ஢   ᮡ  ப⪨
  ⥬  ᯮᮡ: 祭 ⥪饩 樨  믮
ᮮ⢥饣 ⢨.  筮  ।०騩 ,  
᫥饬 ਬ:

    void TTestWindow::HandleThermMsg(RTMessage)
    {
      int NewPos;

      NewPos = Thermometer->GetPosition();
     // 믮 ⢨  ᨬ  NewPos
    }

        ॠ஢  寧 㭪   , 
짮⥫  롥  .  ⮬ 砥 뢠 ᮮ饭
  SB_THUMBTRACK.

    void TTestWindow::HandleThermMsg(RTMessage)
    {
      int NewPos;

      if (Msg.WParam != SB_THUMBTRACK)
      {
        NewPos = Thermometer->GetPosition();
       // 믮 ⢨  ᨬ  NewPos
      }
    }

       , ⮡ ꥪ  ப⪨ ᠬ ॠ஢
 ।०騥 ᮮ饭  ப⪨;  ⮣ ᮧ
⠭⭮ ।⢮ ॠ樨  ꥪ  ப⪨. 
ணࠬ஢ אַ ॠ樨 ꥪ  ப⪨  
।०騥 ᮮ饭, ।    㭪-
ॠ樨,   ।०. ᯮ 㬬 NF_FIRST  
।०  ப⪨  㠫쭮  ⮤. 
⮣, ⮡ ᤥ , த    TScrollBar:

    class TSpecializedBar : public TScrollBar
    {
    public:
      virtual void SBTop(RTMessage Msg) =
        [NF_FIRST + SB_TOP];
    };

    TSpecializedSBar::SBtop(RTMessage Msg)
    {
      TScrollBar::SBTop(Msg);
    //  ࠡ⪠,   ப⪨ 樮஢ 
    }

    ⨬,  㭪- SBtop ᭠砫 뢠
TScrollBar::SBtop. TScrollBar::SBTop ६頥 㭮  ப⪨
 祭 ।०饣 ᮮ饭 SB_TOP. TScrollBar ।
㭪樨-  ॠ樨  ᮮ⢥騥 ।०騥
ᮮ饭:

 12.5  㭪樨-, ।塞 TScrollBar

㭪- TScrollBar   ।०饥 ᮮ饭
-----------------------------------------------------------
SBLineUp                        SB_LINEUP
SBLineDown                      SB_LINEDOWN
SBPageUp                        SB_PAGEUP
SBPageDown                      SB_PAGEDOWN
SBThumbPosition                 SB_THUMBPOSITION
SBThumbTrack                    SB_THUMBTRACK
SBTop                           SB_TOP
SBBottom                        SB_BOTTOM

    ᫨  ८। -   㭪権-, 뢠
㭪- TScrollBar,   ८।  ६饭
㭪  ப⪨.

    ਬ: SBarTest

    ணࠬ SBarTest ᮧ ਪ ணࠬ ମ,
।⠢  . 12.10.
     䠩 SBARTEST.CPP    ४ਨ EXAMPLES.

         ।  ࠢ ⮢

     ࠢ 묨      ᪮쪨
୨ ࠢ騬 ⠬    ᮧ -᫥
 ࠭  祭 ﭨ ࠢ ⮢. ﭨ
ࠢ饣  砥  ᥡ ⥪ ।㥬 ࠢ饣
,   ப⪨  ଠ  ⮬, ࠭  
ᥫ⨢ .  ⢥ ୠ⨢    ।
୥ ꥪ   ।  প  
।⠢ ﭨ ࠢ ⮢   .
    ਬ,  ணࠬ  ।⠢    
᫥   뤥 ଠ  ﭨ  ࠢ饣
   ।. ᫨ 짮⥫ ᭮ ᯮ 
,   ।  ஢, ࠢ騥  
ﭨ   ᫥   . ஬ ⮣, 
 ⠭ 砫쭮 ﭨ  ࠢ饣 
樠樥   ।.   ⠪  ।
   ࠢ   ६,  , ਬ, 뢠
ﭨ ࠢ ⮢   ।騥 祭.

    ।  ।

     ।  ன     
ࠢ饣 , 饣  ।.  
ࠢ騥 ,  騥  堭 ।. ਬ, 
,    ﭨ,    ।. 祣 
   㯯.
     ।  । ।   
 饣 ࠢ饣     .  㦭
।   ।   ࠢ饣  
  ;  室 ⮫쪮  , 祭  
⢮  ।.   । ࠭  । 
   ⨯ ࠢ ⮢, । .

    struct SampleTransferStruct {
      char StaticText[STATICTEXTLEN];  //  ⥪
      char EditText[EDITTEXTLEN];      // ।㥬 ⥪
      TListBoxData ListBoxData;        // ப  ᯨ᪠  롮
      TComboBoxData ComboBoxData;      // ப ஢  
                                          ࠭ ப
      WORD CheckState;                 // ﭨ  ஢ન
      WORD RadioState;                 // ﭨ ᥫ⨢ 
      TScrollBarData ScrollBarStruct;  //   ப⪨  ..
    }

       , ⨯ ࠢ饣  । ⨯
 , ।   ।.  ந室 ⮬,
  ⨯ ࠢ ⮢ । ࠧ :

*   ।㥬 ࠢ騥  ।  ⥪. 
  TextLen ᮤঠ  । ⥪, 
騩 ⮩ ᨬ.
     ᯨ᪠ । ப ᯨ᪠, ࠭ ப  ப 
᫮ ࠭ ப, ᯮ ꥪ ⨯ TListBoxData.  
 㪠⥫  ꥪ TListBoxData    । ᫥騬
ࠧ:

    struct MyTrasferBuffer
    {
    ...
      PTListBoxData pMyListBoxData;
    ...
    };

    ⠭ pMyListBoxData ᫥騬 ࠧ:

    MyTransferBuffer.pMyListBoxData = new TListBoxData();

    ।  TListBoxData 砥   :

 12.6    TListBoxData

    ᠭ
---------------------------------------------------------------------------
PArray Strings      ᨢ ப ( ⥪ ⥩ ᮢ),
                    ᮤঠ騩   ᯨ᪠.
PArray SelStrings   ᨢ ப, ᮤঠ騩 ࠭  
                    ᯨ᪠.   ᯨ᪠   롮஬ ⠬ 㤥 ⮫쪮
                     ப.
int SelCount        ᫮ ࠭ ⮢.   ᯨ᪠  
                    롮஬ SelCount ࠢ .

* ஢  । ப  ᯨ᪠ ஢ 
 㪠⥫  ࠭ ப  ꥪ ⨯ TComboBoxData.  
 㪠⥫  ꥪ TComboBoxData  襬  । ⠪,
      ᯨ᪠,  TListBoxData  TComboBoxData:

    struct MyTrasferBuffer
    {
    ...
      PTComboBoxData pMyComboBoxData;
    ...
    } ;

    ⠭ pMyComboBoxData ᫥騬 ࠧ:

    MyTransferBuffer.pMyComboBoxData = new TComboBoxData();

    ।  TComboBoxData 砥   :

 12.7    TComboBoxData

    ᠭ
---------------------------------------------------------------------------
PArray Strings ᨢ ப ( ⥪ ⥩ ᮢ),
                    ᮤঠ騩   ᯨ᪠ ஢
                    .
Pchar Selection     ⥫  ᨬ ப,  
                    ࠭ ⮬  ᯨ᪠ ஢
                    .

*  ஢ન  ᥫ⨢  ।  ﭨ  祭
⨯ WORD (BF_UNCHECKED, BF_CHECKED  BF_GRAYED).

*  ப⪨ ᯮ  , TScrollBarData, 
࠭   樨 ࠢ饣   ப⪨.
 ਢ । TScrollBarData:

    struct TScrollBarData {
      int LowValue;
      int HighValue;
      int Position;
    }

    ஢ ࠢ ⮢  ࠧ襭 ।

      ,  ᯮ 堭 ।, 
஢  ꥪ ࠢ, 騥  ।,  ⮬
浪,  ஬ । ᮮ⢥騥   
।.  ࠧ襭 堭 ।  ꥪ   
 ⠭    TransferBuffer  㪠 
।   ।.
    堭 । ॡ ᯮ짮 ꥪ⮢ ObjectWindows 
।⠢ ࠢ ⮢,     ।
.  裡 ꥪ⮢  ࠢ騬 ⠬   
ᯮ ,  ᯮ  ⢥ 㬥⮢ 
த⥫᪮   䨪 ᮢ.
    易 ꥪ ࠢ  ࠢ騬 ⠬ ᠭ  
11 "ꥪ ".

    TParentWindow::TParentWindow(PTWindowsObject AParent, LPSTR ATitle) :
                                 TWindow(AParent, ATitle)
    {
      TheDialog = new TDialog(this, ID_DIALOG);
      new TStatic(TheDialog, ID_STATIC, 20);
      new TEdit(TheDialog, ID_EDIT);
      new TListBox(TheDialog, ID_LISTBOX);
      new TComboBox(TheDialog, ID_COMBOBOX, 20);
      new TCheckBox(TheDialog, ID_CHECKBOX, 0);
      new TRadioButton(TheDialog, ID_RADIOBUTTON, 0);
      new TScrollBar(TheDialog, ID_SCROLLBAR);
      TheDialog->TransferBuffer = &TransferStruct; }

    㣮 ࠧ稥  ।祩     砥 
⮬,  堭 । ࢮ砫쭮 饭  ࠢ ⮢
  ࠧ襭  ࠢ ⮢  ( ᪫祭
஢ TStatic).  㬮砭,  TStatic  । 
ᮤঠ   .  ࠧ襭 ।  ࠢ饣
   맢  㭪- EnableTransfer.

    ...
    Edit = new TEdit(this, ID_EDIT, "", 10, 10, 100, 30, 40, FALSE);
    EDIT->EnableTransfer();
    ...

     אַ ᪫祭 ࠢ饣   堭 ।
 맢  㭪- DisableTransfer.

    । 

     ᮧ     믮  
⮬᪨ ।   ।    ࠢ
⮢.
    쪮  쭮   ⮬᪨ । 
ࠢ ⮢   ।,   砥 
ᮮ饭  䨪஬ ࠢ饣   IDOK. 
⮬᪨ ।  ࠢ ⮢ 쭮  
 ।,  맮 CanClose  CloseWindow 頥 祭
TRUE. , ᫨  믮 ᭮,    
। ࠢ騬 ⠬.  ⮩ 奬   
ᨭ஭.
    ,   אַ ।    ࠢ  
. ਬ,    ।   ࠢ
⮢   쭮 .    
⠭ ﭨ ࠢ ⮢, ᯮ   
।  ⢥ ॠ樨  饫箪 짮⥫   Reset.
ᯮ   砥 㭪- TransferData, ।⠢
⠭ TF_SETDATA  ।     ࠢ騥  
⠭ TF_GETDATA  ।   ⭮ ࠢ. ਬ,
   맢 TransferData  -㭪樨 CloseWindow
ꥪ :

    void TSampleWindow::CloseWindow()
    {
      TransferData(TF_GETDATA);
      TWindow::CloseWindow();
    }

    䨪 ।  ࠢ ⮢

       ஢ ᯮᮡ 筮 । 
ࠢ ⮢    ࠢ騩 , ।
,  堭 ।.     㦭  
㭪  Transfer  襣 ꥪ ࠢ ⠪, ⮡ 
। TF_GETDATA  ஢  ࠢ饣  
⮯, 㪠 । ᮬ. ᫨ । TF_SETDATA,
   ⮯, 㪠 । ᮬ, 
ࠢ騩 . ᫨ । TF_SIZEDATA,  頩 ࠧ
।   믮 - 㣨 ⢨. 
।  㯥    TextLen TStatic. ਬ,
 ਢ TStatic::Transfer:

    WORD TStatic::Transfer(Pvoid DataPtr, WORD TransferFlag)
    {
      if (TransferFlag == TF_GETDATA)
        GetText((LPSTR)DataPtr, TextLen);
      else
        if (TransferFlag == TF_SETDATA)
          SetText((LPSTR)DataPtr, TextLen);
      return TextLen;
    }

    㭪- Transfer ᥣ   ᫮ ।
⮢.

    ਬ ।

      ணࠬ TranTest ந    ﬨ
  짮⥫ ଠ樨   .  ᯮ 
।  ࠭ ⮩ ଠ樨  ।⠢   ࠢ
 ,   ᭮ 믮. ⨬,   
  㦤  ।  ⠭  祭 
.
     TRANTEST.CPP    ४ਨ EXAMPLES. ணࠬ
LBXTTEST.CPP  CBXTTEST.CPP  ।   ᯨ᪠ 
஢ .  ணࠬ  ஢묨 ﬨ
ணࠬ LBOXTEST.CPP  CBOXTEST.CPP, ।⠢ ࠭  ⮩ .




     13

           

    ⠭ ࠪ⨪, ।⠢  ० ࠡ ᮢ
⮢ ࠢ ObjectWindows 뫨 ᠭ  । .
 ᯮᮡ, 묨     ⠭ ⠭,
뫨 㯮.   ⠫쭮 뢠 孨,   
ᯮ짮  䨪樨 ࠪ⨪ ।। ࠢ
⮢ ObjectWindows.  ।⠢ 楤 ࠧࠡ⪨ 
ᮡ⢥ ஢ ࠢ ⮢.

         䨪 ।। ࠢ ⮢

      ᭮ ᯮᮡ 䨪樨 ࠪ⨪
।। ࠢ ⮢ ObjectWindows:

* 䨪  ⨫ ᮧ
* । ⮤ ॠ樨  ᮮ饭

    䨪 ⨫ ᮧ

      ஢  ⠭ ० ࠡ
।। ࠢ ⮢    ਡ⮢
ᮧ ⨫ ( ᮤন Attr.Style). ਬ,  ।饭
᪫ 롮஢  㯯 ᥫ⨢  㤠   ⨫
ᮧ BS_AUTORADIOBUTTON   BS_RADIOBUTTON. (⨬,   
㦭 ᠬ ஢ .) 㣮 ਬ  ,   
 ᫥ 롮 ⮢  ᯨ᪠ 
LBS_MULTIPLESEL  ⨫ ᮧ  ᯨ᪠.
     ࠭祭 ࠧ   ஢ ।⠢
।। ࠢ饣      ⨫
ᮧ. ਬ,    ⥪ ࠢ饣 
 ஢ન ᫥  :

    MyBox = new TCheckBox(TheParent, ID_CHECKBOX, "Text",
                          100, 100, 80, 20, NULL);
    MyBox->Attr.Style |= BS_LEFTTEXT;

       ࠬ ࠢ饬    
WS_BORDER  ⨫ ᮧ.
       ⨫ ᮧ owner-draw  
।। ࠢ ⮢  襭 ⥩
ࠢ ।⠢ ࠢ饣 . 㥬 ࠢ騥
 㦤  ᫥饬 ࠣ.
     䨪樨 ࠪ⨪ ।। ࠢ
⮢    ⨫ ᮧ ࠭稢 ਠ⠬
⨫,   ⨯ ࠢ饣 .  ᯨ᮪ ⨫
ᮧ   ⨯ ࠢ ⮢    "ࠢ筮
㪮⢥" (Reference Guide) ObjectWindows for C++.

     ᤥ ।। ࠢ騩  㥬

    ᫨   । 譨  襣 ࠢ饣 
(  ।। ),    ⨫ owner-draw 
 ⨯ ।। ࠢ ⮢.  ⮣, ⮡
ᤥ, ਬ,  㥬,   ⢥   ⨫
ᮧ BS_OWNERDRAW:

    Attr->Style |= BS_OWNERDRAW;

    ஬ ⮣,  㦭 । ᯮᮡ,   㤥 ᮢ.
 ⮣, ⮡  ᤥ, । 㭪- ODADRAWENTIRE 
஦ .     ८। 㭪樨-
ODAFocus  ODASelect  䨪樨 ।⠢ 襣 㥬
ࠢ饣 ,   砥 䮪  롨ࠥ.
    㭪樨- ODADrawEntire, ODAFocus  ODASelect ।
DRAWITEMSTRUCT,  ᮤন ଠ, ᯮ㥬  ᮢ
ࠢ饣 .    hDC ᮤন ਯ 
।⠢ ᯮ㥬 ⥪;  ਯ  ।
㭪 GDI Windows, 뢠  ᮢ ࠢ饣 . 
  rcItem ᮤন  짮⥫ ࠢ饣
. DRAWITEMSTRUCT ⠫쭮 ᠭ   6 "ࠢ筮
㪮⢠" (Reference Guide) Object Windows for C++.
    㥬 ࠢ騩  ⠪  ᮢ த⥫᪨ ,
஥ ८। WMDrawItem. ⥫  DRAWITEMSTRUCT ।
 LParam  RTMessage; 䨪 㥬 ࠢ饣
 ।   CtlId .
    ਪ ணࠬ DCTLTEST.CPP  ४ਨ EXAMPLES ।⠢
  㥬묨 ࠢ騬 ⠬ ,  롨ࠥ 㭪
 "Test".  ,  뢠,  㥬 
ॠ   䮪  롮. ᯮ  Tab  ५
 ४祭 䮪  饫箪     롮 .  
ᮡ⢥ ਫ   ᯮ짮 ⮢ ⮡ࠦ 
 㥬 .
     ,  ஢ન, ᥫ⨢    㯯 
 ᤥ 㥬묨    BS_OWNERDRAW  ⢥ ⨫
ᮧ.  ᯨ᪮  ஢    ᤥ
㥬묨    LBS_OWNERDRAW  CBS_OWNERDRAW, ᮮ⢥⢥,
 ⢥ ⨫ ᮧ. Windows  ।⠢   
 ப⪨, ।㥬 ࠢ ।  ᪨
ࠢ ।.

    䨪 ।। ॠ権  ᮮ饭

      । ஢ ॠ   ᮮ饭 Windows,
஥ 砥 ।। ࠢ騩 .  ⮣, ⮡
ᤥ , । 㭪樨- ॠ樨  ᮮ饭  ,
஦ ᮬ ।। ࠢ饣 .  
ᯥਬ஢  ⮩ 孨  䨪樨 ।⠢ 
० ࠡ ।। ࠢ饣 .

     ⥫쭮 ࠡ⪨  ।। ࠢ饣


      믮 ⥫ ࠡ  ᮮ饭
।। ࠢ饬  ।  ᫥ 맮 DefWndProc
 ।। ॠ樨.
    ਬ,  ⮣, ⮡  㪮 ᨣ  饫窥 
    ।०  த⥫, ८।
WMLButtonDown:

    void TBeepButton::WMLButtonDown(RTMessage Msg)
    {
      MessageBeep(0);
      DefWndProc(Msg);
    }

      ⠭⭮ ࠡ⪮ WM_LBUTTONDOWN   
뫪 ।०饣 ᮮ饭 BN_CLICKED, ୠ⨢ 믮
   ८। BNClicked.
     ⢥ 㣮 ਬ   । 㭪樨-
WMSetFocus  WMKillFocus  䨪樨 ࠬ ।㥬 ࠢ饣
,   砥 䮪.   ⠭⭮ ࠡ⪮ 
뫪 ⨬ ᮮ饭ﬨ ।० ᮮ饭 ENSetFocus 
ENKillFocus, ୠ⨢ 믮    ८।
㭪権- ENSetFocus  ENKillFocus.

    室 ॠ樨 ।। ࠢ饣 

      ।     ⠭ ࠡ
।। ࠢ饣 .    訥 ,
祬  ।, ⠪  ⠭⭠ ࠡ⪠ ࠢ ⮢
  ᭮. 易⥫쭮   १.
  㤥 ᨬ㫨஢  ।। ० ࠡ.
    ਬ,  믮 ।㥬 ࠢ饣  
ਡ⮬ ⮫쪮  ⥭   ᤥ "祣  " ॠ
WMChar  , ஦  TEdit.  ।㥬 ࠢ騩
  ᯮ짮  ।⠢ ⥪,  
஢   ଠ樮 ,    
஢.
    㣨 ਬ஬ 室 ।। ० ࠡ  室
।। ࠡ⪨ WMLButtonDown    ⮣, ⮡ ᮧ
"" ,    ।⠢  饫窥  
.  㤥 ⮣ 뫠 ।०饥 ᮮ饭   BN_CLICKED
த⥫  ᠬ, ⠪  筮  뫠  ।।
ࠡ⪥ WMLButtonDown.

    void TFlatButton::WMLButtonDown(RTMesage Msg)
    {
      SendMessage(Parent->HWindow, WM_COMMAND, Attr.Id,
                  MAKELONG(HWindow, BN_CLICKED));
    }

    ᫨  諨 ᠬ⥫쭮 ஢  ॠ権, 㦭
稭 ।  ᮡ⢥ ஢ ࠢ騩 .

         ᯮ짮 ஢ ࠢ饣 

    ᫨ ० ࠡ ࠢ饣 , ॡ㥬 ,  宦 
० ࠡ ।। ࠢ饣 ,  㦭
ᯮ짮 ஢ ࠢ騩 .  ।
।⠢ ஢ ࠢ饣  ⠪,   ०
ࠡ ࠢ饣 .

    ࠡ⪠ ஢ ࠢ饣 

    ᭮ 蠣 ࠧࠡ⪨ ஢ ࠢ饣 :

* । ⨯ 짮⥫᪮ 
* ᠭ 㠫쭮 ।⠢ 襣 ࠢ饣 
* । ॠ樨  

    ⮩ ࠢ騩  筮 ॠ  饫箪  
 뫪 ।०饣 ᮮ饭 த⥫.   㦭
ࠧࠡ뢠 ॠ樨 襣 ࠢ饣    ਠ ࠡ
襩 ਪ ணࠬ. , 襩 楫  ।⠢
㤮  ᯮ짮  ᮤঠ⥫쭮 䥩,   ।
᫥  ᮣ襭.

    ᠭ ஢ ࠢ饣 

    ᭮ 蠣 ॠ樨 ஢ ࠢ饣 :

*  , ஦  TControl
* ८। Paint  ᮢ 襣 ࠢ饣 
* । ⮤ ॠ樨  ᮮ饭,  墠뢠 
ॠ  짮⥫᪨ 

    ஢ ࠢ騩  ᯮ  ਬ ਪ
ணࠬ CCTLTEST.CPP, 室饩  ४ਨ EXAMPLES.  ࠢ騩
 梥 ।⠢ ਠ 梥,    ࠭
짮⥫. ꥪ TColorControl ॠ  饫箪   
뫪 ।०饣 ᮮ饭 த⥫:

    void TColorControl::WMLButtonDown(RTMessage)
    {
      SendMessage(Parent->HWindow, WM_COMMAND, Attr.Id,
                  MAKELONG(HWindow, CN_CLICKED));
    }

    void TColorControl::WMLButtonDblClk(RTMessage)
    {
      SendMessage(Parent->HWindow, WM_COMMAND, Attr.Id,
                  MAKELONG(HWindow, CN_DBLCLICKED));
    }

    ⠭ CN_CLICKED  CN_DBLCLICKED, ।騥 த⥫
ࠢ饣  梥,  ।०騬 , 뢠騬
⨯ ந襤襣 ᮡ (   饫箪). ஢
ࠢ騥  뫠 ।०騥 ᮮ饭  ஢묨
।०騬 ; ࠢ騩   ᫠  ,
  த⥫.
       ।० ࠢ饣  ⠭, 
 ।  ᠬ:

    const unsigned int CN_CLICKED = 0;
    const unsigned int CN_DBLCLICKED = 1;

    TColorControl  ਪ ணࠬ CCTLTEST ८। Paint 
ᮢ  짮⥫, ᯮ ।⠢塞 梥.  ⠪
㦭 ८। Paint  襣 ஢ ࠢ饣
; ० ᥣ,  ࠢ騩  殮 ᯮ짮!
  ⠪  ।⠢ 㭪樨- ॠ樨 
ᮮ饭 WMSetFocus  WMKillFocus   ।⠢ 襣
ࠢ饣 ,   砥   䮪.
    TControl ᫥ 㭪- GetWindowClass TWindow, 
 ਡ ॣ樨,   㬮砭 室 ஢
ࠢ饬 . ᫨   ஢  ⠭
⠭  襣 ࠢ饣 ,  㦭 ८।
GetWindowClass  GetClassName.
     ஡ ଠ   ⠭ ਡ  
८। GetWindowClass  GetClassName    ࠣ
"  "   10 "ꥪ ".
    TColorControl, ਬ,  ॣ樮 ⨫  
㪠 ⮣,  ࠢ騩  ਭ ᮮ饭   饫窥
:

    void TColorControl::GetWindowClass(WNDCLASS& AWndClass)
    {
      TControl::GetWindowClass(AWndClass);
      AWndClass.style |= CS_DBLCLKS;
    }

    LPSTR TColorControl::GetClassName()
    {
      return "ColorControl";
    }

     㦭    Windows ஢ ࠢ饣
   । ᮢ .   Windows
ࠢ饣   , 頥 
㭪樥-⮩ GetClassName. ᫨   ८।﫨 GetClassName,
  "OWLWindow".


      14

          MDI

    ⨤㬥⠫ 䥩 (MDI)  ⠭ 䥩 
ਫ Windows,   짮⥫ ६ ࠡ 
᪮쪨 묨 㬥⠬. 㬥,  ⮬ ᫥,  筮
䠩ਥ஢ , ⠪  ।஢ ⥪⮢ 䠩 
ࠡ  䠩 ⠡.  ਫ  MDI 짮⥫ , ਬ,
   ਫ ᪮쪮  䠩. ਬ ਫ MDI
  ᯮ짮, , ਬ,  ணࠬ Windows 
  Windows. ⠭ MDI   ᯥ䨪権 饣
㯠 짮⥫ (Common User Access) IBM.

          ਫ MDI

     । , 騥   ਫ
MDI. -, ⠬   , 뢠  ࠬ. 
 짮⥫  ࠬ 室  ,  짮⥫
MDI, ஥ ।⠢ 㫨᭮ ࠢ ᪨ ᮧ묨
୨ , 뢠묨 ୨  MDI.

. 14.1   ਬ ਫ MDI

     ࠬ ⠪  ,   Window,  ஬
짮⥫   樨, ࠢ騥 ୨  MDI,
ਬ, ᪠ ⨥, "䥫쭮" ⨥,   
.   뢠  ୨ .    ⮣
୥  MDI ⮬᪨    ⮣ . 饥
࠭  砥 ⪮.
     ୥  MDI   ࠪ⨪ ४뢠饣
.    ᨬ஢   ࠧ  ࠬ 
஢  ⮣ࠬ   ࠬ. ୨  MDI 
   ࠭   ࠬ. ୥  MDI   
, ⠪    㭪樨 ࠢ   ࠬ. 
 ୥  MDI    ⮣ 䠩, 易 
⨬ ,   ० ࠡ 易⥫  室  ࠢ
ணࠬ.   ᬠਢ ਫ MDI  ᥠ Windows 
᪮쪨 ਫﬨ, ।⠢묨   ⮣ࠬ.

      MDI  ꥪ⮬

    ObjectWindows । ,   ।⠢ 
ࠬ  ୨  MDI.   TMDIFrame  TMDIClient,
ᮮ⢥⢥. ୨  MDI  ࠬ ,  
஦  TWindow.
     ਫ MDI ObjectWindows  ࠬ   
짮⥫ MDI  ࠭ 뫪      
ClientWnd.  ࠬ ⠪ ᮤন    ୨  MDI  
ᯨ᪥ ୨ .
    㭪- TMDIFrame   ᭮ ஥ 
ࠢ ୨  MDI   짮⥫ MDI  ࠡ⪮ 롮ࠬ
 . ᭮ ஫ TMDIClient ⮨  㫨᭮ ࠢ ୨
 MDI.  ࠧࠡ⪥ ਫ MDI  㤥  ࠧ
஦    TMDIFrame  TWindow  襣  ࠬ 
୨ , ᮮ⢥⢥.   짮⥫ MDI 筮 ᯮ
 TMDIClient.

         ஢  MDI

     ਢ  ᮮࠦ  ஢  
ਫ MDI.  ᠭ ஢  ਢ   10
"ꥪ ".

    ஢  ࠬ MDI

     ࠬ ਫ MDI ⠪   , ⠪  
   㭪樨- InitMainWindow ꥪ
ਫ. ,  ⫨稥  TWindow,  TMDIFrame 
ᯮ த⥫᪮  ( ࠬ,  묨 ,  
த⥫),  ᯮ 㣮 ࠬ, 䨪  . 
ࠬ MDI ॡ  , ⠪   TMDIFrame ॡ
㬥   ⠭   Attr.Menu.
      ࠬ    ୨  ⨫ MDI.  ,
 ஥    ୨  MDI.  
ChildMenuPos TMDIFrame ᮤন   ୥ .
 TMDIFrame ࢮ砫쭮 ⠭ ChildMenuPos  ,
㪠뢠 ᠬ  㭪  孥 ஢. ,  
⠭ ChildMenuPos  襬   MDI:

    TMyMDIWindow::TMyMDIWindow(LPSTR ATitle, HMENU AMenu) :
                               TMDIFrame(ATitle, AMenu)
    {
      ChildMenuPos = 1;
    }

    TMDIFrame::SetupWindow 뢠 InitClientWindow  ஢
ꥪ TMDIClient 饣  짮⥫ MDI.
    TMDIFrame::SetupWindow ᮧ  짮⥫ MDI.

    ஢ ୨  MDI

    TMDIFrame । 㭪- ⮬᪮ ॠ樨,
뢠 CMCreateChild,  뢠,  롨ࠥ 㭪 
 䨪஬ CM_CREATECHILD. 筮  㭪  뢠 
 .   । TMDIFrame, CMCreateChild 
ꥪ ୥  MDI   맮 TMDIFrame::CreateChild. ⥬,
CreateChild 뢠 InitChild  㭪- MakeWindow ꥪ
ਫ  ᮧ .
    TMDIFrame::InitChild  ᮧ  ⨯ TWindow  ,
⠪     ८। InitChild  襣  
MDI  ஢  襣  ୨  MDI:

    PTWindowsObject TMyMDIWindow::InitChild()
    {
      return(new TMyMDIChild(this, "New Child Window"));
    }

    , ᫨ 㤥 맢 CreateChild, 㤥 ᪮஢  ᮧ
 襣  ୨  MDI.   , ⮡ 
 ࠬ ந  ୥  MDI,    ࠧ
.  ⫨稥  㣨 ୨ , ୨  MDI 
஢  ᮧ   㭪樨- SetupWindow
 ࠬ MDI,     .  㤥 ⠪  ᮧ
୥ :

    void TMyMDIWindow::SetupWindow()
    {
      TMDIFrame::SetupWindow();
      CreateChild();
    }

    ᫨  , ⮡ ࢮ ୥  MDI 뫮 ᨬ஢,
 ꥪ ୥  MDI  אַ,    맮
InitChild,   WS_MAXIMIZED  ⨫, ࠭ ⠭ 
ꥪ. ⥬,  맢 ⮤ MakeWindow ꥪ ਫ 
ᮧ ୥  MDI:

    void TMyMDIWindow::SetupWindow()
    {
      PMyMDIChild NewChild;

      TMDIFrame::SetupWindow();
      NewChild = new TMyMDIChild(this, "New Child Window");
      NewChild->Attr.Style |= WS_MAXIMIZE;
      GetApplication()->MakeWindow(NewChild);
    }

      ਫ    ᮧ ୨  MDI
 ⢥ ॠ樨  ᪮쪮 롮஢ . ਬ, 㭪   
  । 䠩   ।⠢  ୥  
 䠩  ⢥ .  ⮬ 砥  㤥 ।
㭪- ॠ樨,   ,   㭪
,  㤥 ஢  ᮧ ୥ .

         ࠡ⪠ ᮮ饭  ਫ MDI

        ( MDI) த⥫᪨  ୨ , ᮮ饭
Windows, 騥  , ᭠砫 室  ୥  
ᯥ祭  墠  ࠡ . ⨬ ᯮᮡ 
 ࠬ  ᯮ짮  ࠢ ⨢  ⥪饬
⨢ ୥  MDI.  ࠬ ⠪   ॠ஢
 롮   .

         ࠢ ୨  MDI

      MDI Windows ।⠢ 㭪樨- 
樨 ୨  MDI ਫ MDI.  ᭮ 
ࠡ 믮 TMDIClient,  㭪樮   
㯭 १ 㭪樨- TMDIFrame.

    ⨢ ୨ 

    짮⥫ ਫ MDI  ᢮ ⨢஢ 
  ஢ ୨  MDI. ,   
।ਭ  ⢨,  짮⥫ ⨢
- ୥  ⨢樥 㣮. ਬ,   ࠬ
 ࠦ ⥪饥 ﭨ ⨢ ୥   
 梥  ⪨. 直 ࠧ,  ୥  ⠭
⨢  ⨢,  砥 ᮮ饭 Windows WM_MDIACTIVATE. 
 ८। TMDIClient::WMMDIActivate (஥ 筮 
뢠 DefWndProc)  ꥪ ୥   ॠ樨 ᮮ⢥騬
ࠧ.

     ୨ 

    TMDIFrame । 㭪- ॠ樨 ᮮ饭 Windows,
 ⮬᪨ ॠ  ⠭ 롮  MDI: "䥫쭮"
ᯮ, ᪠ ᯮ,  ⮣ࠬ  
.  㭪樨-  ᮮ饭, 騥  , 
।।묨 ⠭⠬ 䨪 . ᯮ 
䨪,   ᮧ   ୨ :

 14.1  ⠭ ⢨,   㭪樨- MDI

⢨      ⠭ 䨪   㭪- TMDIFrame
---------------------------------------------------------------------------
"䥫쭮"
ᯮ  CM_TILECHILDREN                CMTileChildren
᪠
ᯮ  CM_CASCADECHILDREN             CMCascadeChildren

⮣ࠬ   CM_ARRANGEICONS                CMArrangeIcons
    CM_CLOSECHILDREN               CMCloseChildren

    㭪樨- ॠ樨 TMDIFrame, ⠪  CMTileChildren,
뢠 㣨 㭪樨- TMDIFrame, ⠪  TileChildren. 
㭪樨- 뢠 㭪樨- TMDIClient  ⥬ 
, ⠪  TMDIClient::TileChildren. 筮,   㤥 
८।  ० ࠡ,  ᫨      ᤥ,
  ८। TMDIFrame::TileChildren  㣨
㭪樨- TMDIFrame (  ⮬᪨ ⮤ ॠ樨).

         ਬ ਫ MDI

    ணࠬ MDITest ந ਫ, ᯮ饥 MDI  
 . 14.1.
     䠩 MDITEST.CPP 室  ४ਨ EXAMPLES.


     15

    ,     

      뢠,   ⮪ ObjectWindows ।⠢
"⢮"  ꥪ⮢ ObjectWindows.  ꥪ,  
ᮧ  ਫ ObjectWindows, - ,  ,  
.. -  .  , ।⠢, ᯥ稢
  㭨⮦   ࠡ ਫ. ꥪ 
  뢠,  ⥬ 祧 ,  ४頥
ணࠬ.  ⮪   ࠭  ꥪ  
,   䠩 ⮪, ⠪    ᫥  筮
஬⪠ .
     ⢮ ਫ  ﭭ ꥪ⮢.  ࠭
 ࠧ , ਬ,   ।⠢ 㭨 
ᠬ.    । १    ⥬.  ᠬ
, ꥪ  ﭭ ࠭  ᪥, ᯮ 䠩
⮪.    ⮬ ⠭  ⠭ ⥬  ਫ 
㣨 ࠬ ⮣  ਫ,  㣨 ਫﬨ.
䥪⨢  ᭠  ⢮  ⮪ ।⠢
  ꥪ⮢ ObjectWindows.   ObjectWindows,  TButton,
TDialog  TWindow, ࠧࠡ⠭,  , 騥  ⢮
 ⮪, ⠪  ᯮ짮  ⮪     䠩
/뢮.
      ᮡ⢥ , 騥  ⢮ 
⮪, ⠪ 쭮 . ਤ   ⢮ 
⮪   ᮡ 祭  ࠡ.   㦤 
 㠫 㭪 (read, write  streamableName), ந⥫ 
 ந⥫. 㭪樨 read, write  streamableName 
 㠫 㭪樨  TStreamable.  , 騥 
⢮  ⮪,   ஦ אַ  ᢥ 
TStreamable. TWindowsObject 㦥  TStreamable  ⢥  
᢮ ᮢ, ⠪   , ஦  TWindowsObject, 
 ⢮  ⮪.
    ꥪ ⮪ ᮧ    pstream  ஦ 
ᮢ.  , ।⠢塞 ᯥ樠쭮  ࠭塞 ⮪
/뢮,  ⠭ ᠬ iostream C++, ⠪  ᫨ 
  ,  㦥   .

    ⥪ iostream

     C,  C++   祢 ᫮  ।। ஢ 
ࠢﬨ ﬨ /뢮.  ᯮ 㭪樨, 騥 
⠭ ⥪: stdio  C  iostream  C++. ⥪ iostream
C++  , 塞   - ।⠢ ॣ㦥
஢  /뢮  ஫ ⨯  ⠭  ।
짮⥫ ⨯ .  㭪樨 stdio, , ਬ, printf,
  C++, 設⢮ ணࠬ⮢  C++ । २⢠
⮪ 室.    ⠪, ᮡ⢥, ⮪?
    ⮪  ࠪ ⨯ , ।⠢騩 ࠭祭
(筮, ⮫쪮 ⥮᪨) ᫥⥫쭮 ⮢  ࠧ묨
᢮⢠ 㯠. ⮪   (᫮ ⮢), ⥪ 
(㭨  㯠    )  ० 㯠 ("⮫쪮
 ⥭"  , "⮫쪮  "  뢮  "⥭/"
 ஢ /뢮). ⥭ ( 祭) 稭 
⥪饩 樨 ( ⥬ 筮 㪠뢠  ᫥騩 ), 
 ( ⠢) 믮    ⮢  
⮪.
    ࠤ樮 ᪮ 䠩    ॠ権 ⮪,  楯
⮪   ⮪  , ⮪ ᨬ   (,
ਬ, ⠭ , cin)   ࠭ (, ਬ, ⠭
뢮, cout  cerr)  ⮪    ਩ ⮢  㣨 ன.
  ⮩ 楯樨 ௭  UNIX,  "  䠩".
᪨,   孮 OOP  筨 ( ⠢騪) 
 ।⠢   ⮤ 祭  ᬠਢ 
⮪ .  ⮬, ਥ ( ॡ⥫)  
।⠢ ⮤ ⠢  ᬠਢ  ⮪ 뢮.
⮪, 易  ᪮묨 䠩, ।⠢  ,  뢮.
ᠭ ⠭⭮ ⥪ iostream C++ ਢ  "㪮⢥
짮⥫" (User's Guide) Borland C++.  ।⠢  
ᮢ ⮪  믮 ࠧ ⥩.  ⮪ 
।⠢ ࠧ 樨 ᫥饣: ਧ 
ਧ, ଠ஢  ଠ஢, " "  "
䠩",  , 뢮  ஢ /뢮. ObjectWindows
for C++ ࠡ⠥  ⨬ ﬨ  ।⠢ ⮪
/뢮  ࠧࠧ ᫮ ꥪ⮢, ᯮ㥬 
ObjectWindows.

         ॣ㦥  <<  >>

      २ ⮪ /뢮 C++  㤮⢮
ॣ㦥 ஢: <<  뢮 (⠢)  >>  
(祭).  ᨭ⠪ 㭪樨 printf  㣨 㭪権 ⥪
stdio  묨, 묨 ࠬ, , ਬ:

    cout << "Hello, World" << endl;

    ।⠢  ⮣,  <<  >> ॣ㦠
ᮮ⢥騬 ࠧ   ⨯   ⮪ ,
ꥪ ⮣ ⨯  뢠  뢠  ᮮ⢥
⮪ ꥪ⮢.  ॣ㧪 "஥"  C++  ⠭
⨯, ⠪  char, short, int, long, char *, float, double  void *.
ॣ㧪    ७  । 짮⥫,
ᮢ ⨯ . ⨦ ॣ㧪  ᮢ ꥪ⮢
᪮쪮  ᫮, ,  뫮 ᤥ  ObjectWindows. ⮬,
  뢠  뢠 ꥪ   ⠪ ஢, :

    os << AWindow << ADialog;
    is >> AButton;

     ᮡ ᯮ  ७ ⠫.   
।⥫ ⢨,   ᮧ  ॣ 
ᮡ⢥ , 騥  ⢮  ⮪;  
⪮ ᠭ.  ࠣ ணࠬ, ਢ , os 
ꥪ⮬ opstream ( ஦),  is  ꥪ⮬ ipstream (
஦).   , ஦ pstream, ।⠢ 
⮪   ﭭ ꥪ⮢ ( "p"   . 
  ᮢ istream  ostream, ஦  ios, 
⠭⭮ 娨 ᮢ C++.  ⠪  iopstream,
騩 ipstream  opstream.  ⠪   ਠ⠬
䠩 ⮪, ifpstream, ofpstream  iofpstream.  ᮮ⢥
⠭ ᠬ C++ ifstream, ofstream  fstream   宦  
⮤.  ਢ   psteam.

. 15.1  ᮢ,   ⢮  ⮪ 
ᯮ  ObjectWindows

    ॣ㦥  <<, ᯮ騥, ਬ,  
ꥪ⮢ TWindow  㪠⥫ ꥪ⮢  opstream, ।  WINDOW.H
᫥騬 ࠧ:

    inline Ropstream operator << (Ropstream os, RTWindow cl);
       { return os << (RTStreamable) cl; }
    inline Ropstream operator << (Ropstream os, RTWindow cl);
       { return os << (RTStreamable) cl; }

     ࢮ ਠ ꥪ TWindow cl 㤥 ᠭ  ꥪ opstream os.
⮪ 뢮 頥 ஬,   ᮥ 樨 <<,
ᯮ騥  ⠭⭮  C++ ostream. ன ਠ ந
   㪠⥫  ꥪ TWindow. ⨬,   ॠ
 㪠 ꥪ 祭  맮  <<, ।
  .  襬 砥, TWindow    TStreamable.
     ॣ㦥  <<  >> ।⠢  
⠭ ᮢ,   ⢮  ⮪, 
ObjectWindows.  筮 ॠ  ࠨ  ᫥
襮ᠭ 蠡. 筮  㦭 㤥   
 ॣ㧪 <<  >>   ᮡ⢥ ᮢ,  
⢮  ⮪,  㦤  ᫥饬 ࠣ.

         , 騥  ⢮  ⮪,  TStreamable

    , 騩  ⢮  ⮪,    
ꥪ⮢,    ᠭ  ⠭  ﭭ ⮪,
ᯮ ।⢠, ।⠢塞 ஬ ⮪ ObjectWindows. 
  騬 室騬 ࠬ /뢮 (筮
ॣ㦥 <<  >>,    । ᢮ ᮡ⢥) ,
騩  ⢮  ⮪   TStreamable 
⢥    -  ᢮ 娨. ᬮ७
ॢ ᮢ ObjectWindows 뢠,  TWindowsObject ஦ 
Object  TStreamable.   ஦  TWindowsObject, ⮬
᫥ ᢮⢠ TStreamable. TScroller ⠪ ஦  TStreamable, ,
⮬,   ⢮  ⮪.

          ⮪

      䮭 ⢨ 室,  ᫮ ꥪ
࠭  訢  ⮪.     
⮪.  ꥪ  뢠  ⮪,    
祭  ⢥  ࠧ  ᮡ ᫮. ꥪ
ᮢ, ,  ᮤঠ  ⢮ ࠧ ⨯ ,
 㪠⥫  㣨 ᫮ ꥪ , , 㪠⥫ 
vtable (㠫 ⠡).
     ⮣, ⮡ ࠢ  ⨬ 㤭ﬨ,  ⮪
ࠡ⠥    ᮢ,   ⢮  ⮪,
ᯮ  TStreamableTypes, TStreamable  TStreamableClass.
   12 ⮢  , 騩  ⢮ 
⮪.     ।⠢  ॣ樨,
⥭,   㭪権 ᮧ  㠫 ꥪ⮢.  
ॣ樨     ⮪ 㦨, 䠪᪨, , 
   ⥭  ⮪  , 騩 
⢮  ⮪,  ᮮ⢥騬 ⮬  ⮩  .
樨 ஥ ᬠਢ  ᫥饬 ࠣ.
    ஬ ⮣,  ६ ⮪ ⥭  ,  ⮪
ࠡ⠥      ꥪ⮢, ᠭ  ⠭ 
⮪.  譥 㣫㡫  堭  ⢨ (⠪  樨
믮  䮭 ०), ᬮਬ ஡  ꥪ⮢  ⮪
१ 㪠⥫. ।⠢,  ptr1  ptr2 㪠뢠     
ꥪ,   뢠 *ptr1  *ptr2  ⮪.   ꥪ
᫥⥫쭮 뢠  ⮪,     
  ꥪ  ࠧ묨 㪠⥫ﬨ,   ⥭樠 堮.
  ᠭ ꥪ⮢  ⮪ 蠥  ஡: 
⮪ 뢠 ⮫쪮   *ptr1.  ࠧ,  ⥭
ꥪ  ⮪  *ptr1  *ptr2 㤥 ᮧ ⮫쪮  ꥪ,  ptr1 
ptr2   㪠뢠  .
     ⮪ ࠡ⠥  ꥪ⠬ ⮪   ।⠢
४ 㭪権 read  write. TStreamable  ᫠ 㠫
㭪樨 read  write (뢠 ⥫ﬨ  ⥫ﬨ),  
 ८।   , 饬  ⢮ 
⮪, ஦  :

    class TStreamable {
    ...
    protected;
      virtual Pvoid read(Ripstream) = 0;
      virtual void write(Ropstream) = 0;
    };

     ⥫ ⮨  ⮬, ⮡ 뢠  室 
ꥪ  ⮪.  , 騩  ⢮  ⮪,
  ⥫,   ॠ   ᨫ쭮 饭 
 맮 ⥫  .  ਢ ।
TWindow::write:

    void TWindow::write(Ropstream os)
    {
      long SaveStyle;
      BOOL NameIsNumeric;
      TWindowsObject::write(os);
      if ( !IsFlagSet(WB_FROMRESOURCE) )
      {
        SaveStyle = Attr.Style & ~(WS_MINIMIZE | WS_MAXIMIZE);
        if ( HWindow )
          if (IsIconic(HWindow) )
            SaveStyle |= WS_MINIMIZE;
          else
            if ( IsZoomed(HWindow) )
              SaveStyle |= WS_MAXIMIZE;
        os << SaveStyle << Attr.ExStyle << Attr.X
           << Attr.Y << Attr.W  << Attr.H
           << (long)(Attr.Param);
      }
      os << Attr.Id;

      NameIsNumeric = HIWORD(Attr.Menu) == NULL;
      os << NameIsNumeric;
      if ( NameIsNumeric )
        os << (long)(Attr.Menu);
      else
        os.fwriteString(Attr.Menu);

      os << Scroller;
    }

     㭪樨 ⥭, 뢠 ⥫, ਬ  ᮮࠦ,
ᠭ .  , 騩  ⢮  ⮪,
 ८। ᫠ 㠫 㭪 ⥭  TStreamable. 
  ७ ⥫    墠 
⥫ .
     ।  ⥭  ᮡ 砩. ᫨ 
뢠 ꥪ  ⮪  騩 ꥪ ᮮ⢥饣 ⨯,
⥭  ७ ᮮ⢥騥   㪠⥫  㠫
⠡. , ᫨  ⥭  ⠪ ꥪ,    ᭠砫
᪮஢,   ⥭ 蠡 ꥪ   樠஢
 ⮪.     ந⥫. ந⥫ 뢠 ᯥ樠
 StreamableInit  ந⥫ , 
ࠧ頥 ࠡ⠭  筮 ꥬ  ᮤঠ ꥪ
  㠫 ⠡.  , 騩 
⢮  ⮪,     ⠪ 樨,  
ந⥫  ந⥫ .
    ⥫, ⥫, ந⥫  ந⥫ 
।।  ⠭   ⢮  ⮪
ᮢ ObjectWindows. ᫨   ᮧ ᢮ ᮡ⢥ ,
騩  ⢮  ⮪,  㦭 ।⠢  .

          ᮢ,   ⢮  ⮪


     뢠 ࠭, , 騩  ⢮ 
⮪, ꥪ ண   ⮬ 祭 ⮪ 樨
⥭,   ᯥ樠 .    
⢥ 㬥 streamableInit, ⠭ ⨯ enum, । 
OBJSTRM.H.   㦨,   ⠭ 騥 
⢮  ⮪   ⠪ ,   
⨯ public.   ᫥騩 :

    class TMyStreamable : public TBase, public TStreamable {
    ...
    public:
      TMyStreamable(StreamableInit s);
    ...
    };
    StreamableInit ⨯   ⨯ enum   ⮩
streamableInit.   ᮧ ꥪ  ᯮ짮 ⮣
:

    TMyStreamable str(streamableInit);

       ᮤঠ 㪠⥫  뢠,  
ந室   砥  ⠭ ஢. ⮬ 
饭 ࠢ .   뢠 ꥪ  ⮪ 
ꥪ str, ⥫ ꥪ  ᢮  㦭   str:

    TMyStreamable str(streamableInit);
    // ᮧ "⮣" str
    ...
    ifpstream ifps("str.sav");   //  䠩 ⮪  /
    ifpts >> str;                //  ꥪ  str
    ...

    쪮 砭: ꥪ, ᮧ   
streamableInit, ⠪  str,   筮 ᯮ짮, 
   "樠஢" 樥 ⮪ ⥭.  稬,
 ᫥     ᮡ 稬:  
।⠢ 㭨 㬥 ⨯   ⫨ ⮣
  㣨.
    㭪- build  , 饣  ⢮ 
⮪, । ᫥騬 ࠧ:

    PTStreamable TMyStreamableClass::build()
    {
      return new TMyStreamableClass(streamableInit);
    }

    TMyStreamableClass::TMyStreamableClass(StreamableInit s) :
      TBaseClass(streamableInit)
    {
    }

    㣨 ᫮, ந⥫   뢠 ⠪ 
    ⠪ .

          ᮢ,   ⢮  ⮪

     , 騩  ⢮  ⮪, 㦤 
८। ਢ⭮ 㠫쭮 㭪樨 streamableName, ஦
 TStreamable.  㭪   㭨쭮    
ப, 饩  ᨬ:

    class TMyStreamable : public TBase, publc TStreamable {
    ...
    private:
      virtual const Pchar streamableName() const
      { return "TMyStreamable"; }
    };

     ࠡ 㦥 뫠 ᤥ   ⠭ ᮢ, 
 ⢮  ⮪, ObjectWindows.  ᫨  । 
ᮡ⢥ , 騩  ⢮  ⮪,  
।⠢  ᮡ⢥ ८।.  室,
ᯮ騩  ⮣, ⮡ streamableName 頫  ,
 .  ⮪ ᯮ  㭨쭮   ࠡ 
ࠧ묨   ᮢ.

         ᯮ짮  ⮪

      蠣 ᯮ짮  ⮪:

* ⠭ 痢  ணࠬ  ⮪
*  室饣 ⮪ ꥪ
* ᯮ짮 ⮪ ꥪ

     ᬮਬ  蠣 ⠫쭮

    ⠭ 痢  ணࠬ  ⮪

     ࠢ ꥪ⠬  , 騩  ⢮
 ⮪,  । ᫥騥  㭪樨: read, write  build.
 㭪樨     ⮪  易  ᥬ
ਫﬨ,  ᯮ  ⮪.  ⠭ 痢,
 뢠 ॣ樥      ⮪,
⨣   ᯮ짮  __link, 祭 ண
⮨  ।⠢ 뫪  ꥪ ⨯ TStreamableClass. 
ᮣ襭,  ⮣ ꥪ  Reg-, ᪫ 砫
㪢 T  , ᫨  . ਬ, ᫨    
TBase, ।  BASE.CPP ᫥騬 ࠧ

    class TBase : public TStreamable
    {
      int x;
      int y;
    };

      TDerived, ।  MYAPP.CPP,  ᮤন 
,  㪠⥫  ꥪ TBase,  㦭 ᯮ짮
 __link  㪠  ⮪ ⠭ 裡  ⮪,
ন  TBase.  ⮪   ।
TDerived  ᫥騩 :

    __link(RegBase)
    class TDerived : public TStreamable
    {
      int z;
      PTBase zz;
    };

    ,  P-⨯  㪠⥫!!!
    ᯮ  __link ,     ,
 㪠⥫  , ।  室 䠩.

     ⮪ ꥪ

     ⮪ ꥪ ipstream  opstream ॡ  
ᮮ⢥騬 㬥⠬, ⠪    ᮢ iostream. 
࠭   䠩 ⮪, 뢠饬 DLG.SAV,  
 ꥪ ofpstream ᫥騬 ࠧ:

    TChDirDialog cdlg;
    ...
    // ᮧ 

    ofpstream of("dlg.sav");
    // ⨥ 䠩 ⮪ 뢮

    of <<cdlg;
    //  ꥪ   䠩 ⮪

     ⨯ ஢ ⮪   㬥⮢ ᠭ   2
"ࠢ筮 㪮⢠" (Reference Guide) ObjectWindows for C++.

     

    ofpstream(PChar filename, int mode = ios::out,
              int prot = filebuf::openprot)

    뢠  ⠭묨 㪠ﬨ.

    ᯮ짮 ⮪ ꥪ

    筠  ⥭   ᫥饩:

    TChDirDialog cdlg (streamableInit);
    // 맮 ந⥫쭮 ; ᮧ 蠡 ꥪ

    ifpstream ifps("dlg.sav");
    // ⨥ 䠩 ⮪ 

    ifpts >> cdlg;
    // ⥭ ꥪ   䠩 ⮪  cdlg

         㯭  ⮪

    ⥩  C++  㬮砭    ⢮ 
⮪. 騩 ࠣ ।⠢ ਬ ⮣,  த 
⥩   饣, ᤥ  騬 
⢮  ⮪. 㦤 ⠪ ।⠢ 蠣 樨
⮣,  ᤥ  騬  ⢮  ⮪   室
뢠,    ॠ樨 ᯮ ஬
⮪. ਬ ணࠬ STEP9.CPP 室  ४ਨ EXAMPLES\STEPS.

    ਤ ᨢ  ⢮  ⮪

    ணࠬ ᯮ  Array ( ⥪ ⥩ ᮢ)
 ࠭ ᮢ㯭, 饩  TPoint (ꥪ, । 
⮬ ਬ ணࠬ).   Array    ⢮ 
⮪, ⠪  㤥 ।   TPointArray. TPointArray
஦  Array  TStreamable.  , 騥 
⢮  ⮪,  ஦  TStreamable.

    ந⥫쭠 㭪 , 饣  ⢮ 
⮪

    , 騥  ⢮  ⮪,  ।
ந⥫  㭪-, ᯥ樠  
 㠫 㭪樨: read, write  streamableName. 饥
।  ।⠢     
㭪権-:

    class TPointArray : public Array, public TStreamable {

    public:
      TPointArray(int upper, int lower = 0, sizeType aDelta = 0) :
        Array(upper, lower, aDelta) {};
    ...
    public:
      static PTStreamable build();
    protected:
      TPointArray(StreamableInit) : Array(50, 0, 50) {};
      virtual void write(Ropstream);
      virtual Pvoid read(Ripstream);

    private:
      const Pchar streamableName() const {
        return "TPointArray";}
    };

    騩 ਬ ணࠬ 뢠 TPointArray  ⮪:

    ofpstream os("save.dat");
    PTPointArray APointArray;
    ...
    os << APointArray;

           ண 易⥫, 
, 騩  ⢮  ⮪,  ।
⠢騪  ⥫,  믮 ८ࠧ ⨯ 
ꥪ⮬  ⮬ TStreamable ꥪ,   :

    inline Ripstream operator >> (Ripstream is, RTPointArray cl)
      { return is >> (RTStreamable)cl; }

    inline Ripstream operator >> (Ripstream is, RTPointArray cl)
      { return is >> (RTvoid)cl; }

    inline Ropstream operator << (Ropstream is, RTPointArray cl)
      { return is << (RTStreamable)cl; }

    inline Ropstream operator << (Ropstream is, RTPointArray cl)
      { return is << (RTStreamable)cl; }

     ⮬ ਬ ࠣ ணࠬ 㪠⥫  TPointArray
뢠  ⮪ os. , 뢠 ⢥⮥ ஥
।,   맮 ⠢騪 ( <<)  㬥⮬
PTStreamable.  ⠢騪 । । ॠ樥 ⮪ 
 १⮬ 맮 㠫쭮 㭪樨- write ꥪ,
।⠢  ⢥ ࠬ. ਬ, 뢠
TPointArray::write.

    void TPointArray::write(Ropstream os) {
      RContainerIterator PointIterator = initIterator();
      os << getItemsInContainer();

      while (int(PointIterator) != 0) {
        RObject PointObject = PointIterator++;
        if (PointObject != NOOBJECT)
        {
          os << ((PTPoint)(&PointObject))->X;
          os << ((PTPoint)(&PointObject))->Y;
        }
      }
      delete &PointIterator;
    }

    TPointArray::write ࠧ頥   ⥩ Array, 뢠
 ⮪ ᫮ ⮢ ᨢ,  ⥬ 室  ᨢ, 뢠
  ᨢ, , , 㭨⮦ ꥪ . ᪮쪮
  室 㤥 ⢫, ᫨ ᤥ  TPoint 騬
 ⢮  ⮪;  ⮬ 砥, 横  
ꥪ TPoint  ⮪,   㤥 뢠   
TPoint (X  Y).

    㭪- streamableName

     ꥪ 뢠  ⮪,  ⮪ 뢠
㠫 㭪- streamableName ꥪ  । 
.   뢠  ⮪ ।  ꥪ. ᠭ
஥ 㭪樨- streamableName ᫥  । .

    class TPointArray : public Array, public TStreamable {
    ...
    private:
      const Pchar streamableName() const
        { return "TPointArray"; }
    ...
    };

     ꥪ 뢠  ⮪,  ⮪ ᭠砫
⢫ ⥭  ப, ।⠢饩  .   뫮
ॣ஢    ⮪ 맮 ᪮
 TStreamableClass.  , 騥  ⢮
 ⮪,  ᮧ ᪨  ⨯ TStreamableClass 
믮 ⮩ ॣ樨:

    TStreamableClass RegPointArray("TPointArray", TPointArray::build,
                                   __DELTA(TPointArray));

         ("TPointArray"), 
ந⥫쭮 㭪樨 (TPointArray:: build)  ᬥ饭  ஢ 
ꥪ   TStreamable ꥪ.  __DELTA ⮬᪨
  ᬥ饭.
     ⮪ ᯮ    ᮢ, 
 ⢮  ⮪,    ᪨ ꥪ⮢. 
ꥪ ⨯ TPointArray 뢠  ⮪,  ᪨  ⮩ 
  ⮣, ⮡   ந⥫쭮 ᪮
㭪樨- TPointArray::build.

    PTStreamable TPointArray::build()
    {
      return new TPointArray(streamableInit);
    }

     ந⥫ 㭪樨  뢠 ᯥ樠 ,
  㬥 ⨯ StreamableInit.   뢠
   ᮢ,   樠  
.  ࠧ, ᮧ ꥪ  ४ ࠧ 
 㠫 ⠡.
    ।       । .
 StreamableInit  ᫨ (enum)   祭:
streamableInit. 樠   ࠡ  ⮪ 롨ࠥ
ࠬ஬ ⨯ enum    ஢  .

    㭪-⥫,   ࠡ  ⮪

     ⨦ ⥯ ⨬ ꥪ  ⮪ 
맢 㠫 㭪- read.  । ਢ
:

    Pvoid TPointArray::read(Ripstream is) {
      sizeType NumPoints;
      PTPoint APoint;

      is >> NumPoint;

      for (int i = 0; i < NumPoints; ++i)
      {
        APoint = new TPoint(0, 0);
        is >> APoint->X;
        is >> APoint->Y;
        add(* (APoint));
      {;

      return this;
    }

     ⮬ ਬ 㭪-⥫ TPointArray 뢠 ᫮ ⮢
ᨢ,  ⥬ 뢠 祭  X, Y, 易   TPoint.
⥬  㢥稢  TPoint, 㪠뢠騩  Array.
     㪠뢠 ࠭, 訩 室 砥  ⮬, ⮡ ᤥ
ᠬ TPoint 騬  ⢮  ⮪. ᫨  뫮
ᤥ,   ॠ    ⮪ TPoint  㣮
䠩,  㦭 㪠 騪 ᮣᮢ প 
  ⮪  ꥪ TPoint. ࠧ㬥,  ꥪ ॣ樨
TStreamableClass   RegPoint,   ⠭ ᮣᮢ
প    ⮪    __link, 
 :

    __link(RegPoint)

     맮  뫪  ꥪ RegPoint ⨯ TStreamableClass.
   ꥪ ॣ樨 ᮤন 㪠⥫  
ந⥫ 㭪-,  맮 ᮣᮢ ⮩ 㭪樨.
,  ᢮ ।, 맮 ᮣᮢ ᯥ樠쭮  
㠫 㭪権 ⥫  ⥫.



     3

           WINDOWS
---------------------------------------------------------------------------

     16

          

    筮,    ।⢥ ᯮ짮 ।⢠ ࠢ
 Windows. Borland C++   ᥡ   ࠡ 
ࠢ .  饬,   ᯮ ଠ 楤 new
 delete ( malloc  free),   ᥣ ᯮ  ࠧ饭
᪨ ६,   ࠧ頥 ᮮ⢥饥
࠭⢮ ᪨ ।塞   Windows.
    ,   㦭 㤥 ।⢥ ᯮ짮 
 Windows.  樨 ᬠਢ  ᫥ ࠣ
  㦤 ⮣,  ࠢ ࠧ饭  ᯮ짮 
Windows.

         ᯮ짮  

     ࠧࠡ⪥ ਪ ணࠬ  Windows   
樨,   ॡ ணࠬ   ॢ 
אַ ᯥ祭 ᪮஢ ணࠬ. ਬ, ।, 
 ਪ ணࠬ  㭪,  㦠 䠩 ⮢
⮡ࠦ  ᪠  ।⠢ . ணࠬ 㤥 㦤 
஬ ࠭⢥  ࠭  ⮢ ⮡ࠦ ।
।祩   Windows  ⮡ࠦ.  ⮢ ⮡ࠦ 
 쭮 訬.  ᯥ祭 ⠪ ⥫   Windows
।⠢ 㭪樨, 騥  ࠧ  㫨஢ 
 ᮡ⢥ ⥩  ணࠬ.
      Windows  筮 ⥬, ࠧ ਫ
 ᯮ짮  ६. Windows ࠢ 
।⠢  ਫ  䥪⨢ 
ᯮ짮 .  ⮩   㧭  ⨯ , ন
Windows,   ⮬,   㦭  ࠧ饭  ⢫ 㯠 
 Windows   ᮡ⢥ ਫ.

          Windows ࠢ 

     設⢥ ⥬ ࠢ ,   DOS, ,
  ࠧ頥, ⠥ 䨪஢     ६ 
ᯮ짮.  Windows, ,    ६頥 
뢠.  , ࠧ饭  ६頥,  
ﭭ ; Windows  ६   室 
襭 ᯮ짮 㯭 . ਬ,   ࠧ饭
,   ᫥⥫묨,   ६饭 ⠪, ⮡
 뫨 ᫥⥫묨 , ⮬, ।⠢ 訩  ᢮
.
     Windows ⠪  ࠧ  뢠. 뢠
  ६頥 ,  ன Windows  ६
,   ⠪  뢠 , ࠧ饭   㫥
.  ࠧ饭  䥪 㭨⮦  ,
ᮤঠ  . ਫ  ࠧ   
१㧨  ४묨 묨.   ६饭 
  ᮧ 讣 ᫥⥫쭮 ࠭⢠ ᢮
 뢠 㯫⭥.
     אַ㣮쭨  . 16.1 ।⠢ ਬ 
㯫⭥.  ࢮ ( אַ㣮쭨)   ᫥⥫
 ᢮ , ࠧ  1  2. ।,  ᤥ
  襣 ࠧ, 祬     ᢮ .
ࠧ㬥,   1  2 ६頥. ⭥ ६ 
 ⠪, ⮡ ᮧ  ᫥⥫  ᢮ 
(業ࠫ אַ㣮쭨).  ।⠢,  ᢮  
 筮  ࠧ饭. ᫨  2   뢠, 
㤠   (ࠧ  㫥 ), ।⠢ 
 ᫥⥫ ᢮  (ࠢ אַ㣮쭨).

. 16.1  ਬ 㯫⭥

    Ŀ    Ŀ    Ŀ
       ᢮                                       
    Ĵ                                    
                         ᢮                     
         2                                        
                                           ᢮   
    Ĵ    Ĵ                  
       ᢮                                       
    Ĵ         2                      
                                                      
                      Ĵ    Ĵ
         1                                        
                                                      
                           1             1    
    Ĵ                                    
       ᢮                                       
            

    । 㯫⭥   ᫥ ६饭   ᫥ 뢠

    ਯ  

     ।饣 㦤  ,  ࠢ 
Windows 㤭⥫쭮  窨 ७ ਪ ணࠬ.  , 
 ⠪.   ਪ ணࠬ ࠧ頥  Windows, 
砥 ਯ ( 㪠⥫!)  .  㪠⥫ 
 ᮬ 䨧᪮ ⮯  ;  
䨪஬,  ਪ ணࠬ ᯮ  뫪 
,   ᫥⥫ 맮 㭪権 ࠢ . ᫨
ਯ ࠢ 0,  ४⥭.
     , ,  ⢨   
६頥  .  祭    
஢ . ஢  頥 㪠⥫  砫 .
   ஢, 㪠⥫, 祭  楤
஢, ⠥ ४   ,    㤥
ࠧ஢,  ᫨   ६頥  뢠.

    ᮡ ॠ쭮 ०

     ॠ쭮 ०   ࠧ஢ ,   稫
   ; ⢨ ⮣ ⢨ ᤥ ࠢ 
Windows  䥪⨢, ⠪  Windows   ६ 
뢠 ஢ ,    㬥襭 㯭
᢮ . ,    ,   ࠧ஢,
㪠⥫, 祭  ஢,   ४⥭.

    ᮡ 饭 ०

     饭 ० Windows (⠭  386-ᨫ) 
᭮  㯭 ࠧ  ஢  쭮  
६ ࠡ 襩 ਪ ணࠬ.     䥪⨢ 
ந⥫쭮.
    頩     ६頥 -  㤥 ⠢
४,   㤥 ⠢ 㯭 ᬮ  ,  Windows
  室 ६ 䨧 .

         쭠  쭠 

      ࠧ  ᯮ짮    襩 쭮 
쭮  ᪨ ।塞 . Windows, ਫ,
믮塞  Windows,   쭮 , ࠧ頥
ਫﬨ Windows, 室  쭮  ᪨
।塞 . 쭠  ᪨ ।塞 
 , 㯭 ⮫쪮   ਪ ணࠬ.
       롮  쭮  쭮   
ᯥ᪮ ॡ  .  롮   ࠧ
䠪஢, ਢ :

    쭠 

*   
* ࠭祭 ࠧ ( 64 ⮢)

    쭠 

* 32- ⮢ ࠢ 
*  ⮢   १ࢨ Windows  
* ⥬ ࠭祭 ਭ  ਯ஢
*   
* 訩 ꥬ 㯭 

    騬 䠪஬ 筮  室  믮 襩
 ꥬ . ᫨  㦭  1 , ,  
ᯮ짮  .  㣮 ஭, ᫨  㦭 訥
 ,   ᯮ짮  祭 ⪨ ஬⪮
६,    .

         ᯮ짮 쭮  ᪨ ।塞 

    쭠  ᪨ ।塞  ᮤন ,
   㯭 ⮫쪮 ᮡ ஬ 襩 ਪ
ணࠬ.  Windows 쭠  ᪨ ।塞 
筮 ⠭  ᥣ  ਪ ணࠬ.  ᥣ
 ⠪ ᮤন ⥪  ᪨ ६ 襩 ਪ
ணࠬ.  ⠢襥 ࠭⢮ ᥣ  ( 64) 㯭
 ᯮ짮  ⢥ 쭮 ᪨ ।塞 
.
    Windows  ।⠢ 襩 ਪ ணࠬ 
᪨ ।塞   ⮬᪨.   
ࠧ 쭮 ᪨ ।塞    
, ᯮ ⢥ত HEAPSIZE  襬 䠩 ।
㫥 (.DEF).     ਭ ⠭ ࠧ
᪨ ।塞   TLINK, ࠢ 4096 ⠬.
    ᨬ ࠧ 쭮 ᪨ ।塞  
 ⮣,   ᥣ , ᮤঠ騩  ᪨
।塞  , 䨪஢  ६頥. ᫨ 
䨪஢,   ࠧ   ⮫쪮  ᨬ
ࠧ஬, ࠢ ࠧ ᪨ ।塞  ,
  樨  . ᫨ ᥣ  ६頥, 
 ᤥ   ,  祬  ࠧ 쭮 
᪨ ।塞 , Windows ࠧ ⥫ 
( 64)  ⪨ 㤮⢮७ .  室, Windows
 ६ ᥣ   祭 ⥫쭮 , 
१ 祣 ⠭ ४묨  쭨 㪠⥫  
.

    饭    쭮 

    㭪 LocalAlloc ࠧ頥   ࠧ  ⨯,  
⢥ ࠬ஢  맮 㭪樨.   , 㤥  
䨪஢, ६頥  ६頥  뢠 ( ⮣, ⮡ 
 뢠,    ६頥).  樨,  
ࠬ Flags  맮 㭪樨, 

* LMEM_FIXED  䨪஢  
* LMEM_MOVEABLE  ६頥  
* LMEM_MOVEABLE | LMEM_DISCARDABLE  뢠  

     ࠧ頥    쭮  ᪨
।塞 , 㣨   쭮  ᪨
।塞   ६  뢠. 
।饭 ⮣, ⮡ 㣨  뫨 뢠묨, 
LMEM_NODISCARD  ࠬ Flags.  ।饭 ६饭 
뢠 㣨   LMEM_NOCOMPACT.
    㭪 LocalAlloc 頥 ਯ  , ᫨ ࠧ饭
諮 ᯥ譮,  頥 , ᫨  㤠 १. ᫨
ࠧ饭 諮 ᯥ譮,   㤥   ࠩ 
襭 ( ) ࠧ. ᯮ 㭪 LocalSize 
। ⢨⥫쭮 ࠧ. ᨬ  ࠧ
쭮  । ࠧ஬ 쭮  ᪨
।塞 .
     ᫨   ਯ ,     ⢨
  .  ⮣, ⮡ ᤥ ,  㦭 ஢ 
 祭    .     맮 㭪樨
LocalLock. LocalLock ६ 䨪   ﭭ  쭮
 ᪨ ।塞   頥 㪠⥫  .
, 頥 ⮩ 㭪樥 ⠥ ४,    㤥
ࠧ஢   㭪樨 LocalUnlock. LocalLock 㢥稢 稪
஢ . 稪 ஢, ⠪ 뢠 稪 뫮,
뢠 ᫮ 䨪権   .
      ᥣ ஢ 祭, 頥 㭪樥 LocalLock;
 ࠭⨨,    ४ 㪠⥫. 頥
祭 㤥 NULL, ᫨ । ਯ  ४  
 襭 (    LMEM_DISCARDABLE).  ணࠬ
ࠧ頥 256-⮢  쭮 .

    HANDLE TheLocalHandle;
    PSTR TheLocalData;
    ...
    TheLocalHandle = LocalAlloc(LMEM_MOVEABLE | LMEM_DISCARDABLE, 256);
    if (TheLocalHandle != 0) {
      TheLocalData = LocalLock(TheLocalHandle);
      if (TheLocalData != NULL)
      {
        // ࠡ⪠ ,  ᯮ짮 TheLocalHandle  ⢥
           㪠⥫
        LocalUnlock(TheLocalHandle);
      }

      else // ஢ ᯥ譠;
    }

    else // ࠧ饭 ᯥ譮
    }

    ᫨  쭮   ࠧ饭  ਡ⮬ LMEM_FIXED,  
㤥 ६  . ⮬,   뢠 LocalLock 
஢ ꥪ  䨪஢ .  ⮬  ⮫쪮  ⮬ 砥
16- ⮢ ਯ, 饭 LocalAlloc, ⠪  16-
⮢ ᮬ  .

    ᢮  뢠  쭮 

      ᢮  쭮    㭪樨
LocalFree. ᢮ 쭮  頥  ࠭⢠,
  ᯮ짮,    ᪨
।塞     ਯ ४. ਪ
ணࠬ  ᥣ ᢮    । 室  
᢮   㦭  .
         쭮    㭪樨
LocalDiscard. 뢠 쭮  ࠧ頥  ࠧ  
 㤠  ᮤঠ  쭮  ᪨ ।塞
.  ਯ, , ⠥ ४    ᭮
ᯮ짮 ।祩   㭪 LocalReAlloc   祭 ࠧ.
  ࠭ ஥ ६ ࠡ 襩 ਪ ணࠬ,
ᯮ 뢠  ࠧ饭,   ᢮  
ࠧ饭 .

    HANDLE LocalHandle;
    ...
    // TheLocalHandle  ࠭ ࠧ饭
    LocalDiscard(TheLocalHandle);

    // ⥯ ᭮ ᯮ㥬 ਯ  ᮧ   
    LocalHandle = LocalReAlloc(TheLocalHandle, 256, LMEM_MOVEABLE);

     쭮     ᢮  襭, ᫨ 
稪 ஢  㤥 ࠢ .

    ࠧ饭  䨪  쭮 

       ࠧ , ࠭  ᮤঠ,  
㭪樨 LocalReAlloc. Windows 㤥 ᥪ , ᫨   
ࠧ , 祬 ⥪騩 ࠧ. ᫨    ࠧ 
⥪饣,   㤥 ᮤঠ 㫨, ᫨   LMEM_ZEROINIT;
 㣮 砥  㤥 ᮤঠ । .   
LocalAlloc, 騥    ६ 
뢠 Windows  ६ ࠧ饭    LocalReAlloc.
   LMEM_NODISCARD  LMEM_NOCOMPACT  ।饭
뢠  ६饭 㣨   ६ ࠧ饭.
    LocalReAlloc ⠪  ᯮ짮   ਡ⮢ 
 LMEM_MOVEABLE  LMEM_DISCARDABLE.    LMEM_MODIFY 
   ਡ.
       ᯮ짮 LocalReAlloc  ਡ⮬ LMEM_MODIFY 
   ਡ⮬ LMEM_FIXED.  ணࠬ  ⨯
  뢠:

    HANDLE TheLocalHandle;
    ...
    TheLocalHandle = LocalAlloc(LMEM_MOVEABLE, 256);
    TheLocalHandle = LocalReAlloc(TheLocalHandle, 256, LMEMMODIFY |
                                  LMEM_DISCARDABLE);

       쭮 

    LocalSize  LocalFlags  ᯮ짮  祭 ଠ樨 
 쭮 . LocalSize 頥 ࠧ 쭮 . 
 ࠧ饭   ᮧ , 訩 襭 ࠧ,
ᯮ LocalSize  । ⢨⥫쭮 ࠧ .

    HANDLE TheLocalHandle;
    unsigned int BlockSize;

    TheLocalHandle = LocalAlloc(LMEM_MOVEABLE, 256);
    if (TheLocalHandle != 0)
      BlockSize = LocalSize(TheLocalHandle);

      ᯮ짮 LocalFlags  । 稪 ஢
   ।,    뢠,  ᫨  ⠪,
   襭.

    HANDLE TheLocalHandle;
    unsigned int Flags;
    unsigned int LockCount;

    // ࠧ㬥,    ࠧ饭
    Flag = LocalFlags(TheLocalHandle);
    LockCount = Flags & LMEM_LOCKCOUNT;

      ᯮ짮 㭪 LocalCompact  祭 ࠧ
襣  ᢮   쭮  ᪨
।塞 ,   ⢥ ࠬ . ᫨  
㫥 祭  ⢥ ࠬ, LocalCompact 㤥 㯫 
뢠  (᫨  )  ।⠢ 襣
⢠ ᢮ ᫥⥫ ⮢  쭮 
᪨ ।塞 .

    砭  ணࠬ஢

    ᥣ ࠧ  ६頥  뢠 , 
⮫쪮  稢   . ᫨   ࠧ  ,
Windows  ᬮ ६   ᮧ 筮 ࠭⢠
᢮   쭥 ࠧ饭.  ⠪  ᢮ 
  । 室  襩 ணࠬ.

         ᯮ짮 쭮  ᪨ ।塞 

    쭠  ᪨ ।塞   ,
ࠧ塞 Windows  ਪ묨 ணࠬ.  쭮 
᪨ ।塞 , 㯭 襩 ਪ ணࠬ,
  ० 믮 Windows.   쭠 
ࠧ,  ਪ ணࠬ  ᯮ짮  䥪⨢,
 ࠤ  ࠡ ⥬.

    饭    쭮 

    㭪 GlobalAlloc ࠧ頥   ࠧ  ⨯,  
⢥ ࠬ஢  맮 㭪樨.    ࠧ饭 쭮
   , 㤥   䨪஢, ६頥 
६頥  뢠 ( ⮣, ⮡   뢠,  
 ६頥).  樨,   ࠬ Flags  맮 㭪樨,


* GMEM_FIXED  䨪஢  
* GMEM_MOVEABLE  ६頥  
* GMEM_MOVEABLE | GMEM_DISCARDABLE  뢠  

     ࠧ頥    쭮  ᪨
।塞 , 㣨   쭮  ᪨
।塞   ६  뢠. 
।饭 ⮣, ⮡ 㣨  뫨 뢠묨, 
GMEM_NODISCARD  ࠬ Flags.  ।饭 ६饭 
뢠 㣨   GMEM_NOCOMPACT.
    㭪 GlobalAlloc 頥 ਯ  , ᫨ ࠧ饭
諮 ᯥ譮,  頥 , ᫨  㤠 १.  ᥣ
 ஢ 祭, 頥 GlobalAlloc  ⮣, ⮡
।, 뫮  ࠧ饭 ᯥ. ᫨ ࠧ饭 諮 ᯥ譮,
  㤥   ࠩ  襭 ࠧ. ᯮ
㭪 GlobalSize  । ⢨⥫쭮 ࠧ. ᨬ
 ࠧ  쭮 ,    ࠧ饭, 
⠭⭮ ० Windows ࠢ 1,  386 ᨫ ० ࠢ 64.
     祭   쭮    ஢
   㭪樨 GlobalLock.  ॠ쭮 ० GlobalLock ६
䨪   ﭭ ⮯  䨧᪮ ; 
饭 ०   䨪,    (ᥫ) ᥣ
⠥ ४,  ᫨ Windows ६頥   .  
०, , GlobalLock 頥 쭨 㪠⥫,  ⠥
४,    㤥 ࠧ஢   GlobalUnlock.
      ᥣ ஢ 祭, 頥 㭪樥 GlobalLock;
 ࠭⨨,    ४ 㪠⥫. 頥
祭 㤥 NULL, ᫨ । ਯ  ४  
 襭. ணࠬ  ࠧ頥  쭮 :

    unsigned short BigArray[20000];
    unsigned short far * TheGlobalData;
    HANDLE TheGlobalHandle;

    TheGlobalHandle = GlobalAlloc(GMEM_MOVEABLE, sizeof(BigArray));
    if (TheGlobalHandle != 0)
    {
      TheGlobalData = GlobalLock(TheGlobalHandle);
      if (TheGlobalData != NULL)
      {
        // ࠡ⪠   ᯮ짮 TheGlobalData  ⢥
           㪠⥫
        GlobalUnlock(TheGlobalHandle);
      }

      else
      // ஢ ᯥ譠;
    }

    else
    // ࠧ饭 ᯥ譮;

     ⫨稥   쭮 , ᫨    ࠧ饭
 ਡ⮬ GMEM_FIXED,   ஢  । 㯮  
. ਯ,  頥 GlobalAlloc  䨪஢ 
 ⮬ 砥   㪠⥫  .

    㣨 ᯮᮡ ஢  쭮 

     ᪮쪮 ⥫ 㭪権,   ᯮ짮
 ஢  ࠧ஢ 쭮 . GlobalFix  
   ।࠭   ६饭  ᨬ  ०
믮 Windows.     ⢨⥫쭮 䨪, 
稪 ஢ 㢥稢  .  ᯮ GlobalFix, ᫨
   ᮫⭮ 室, ⠪    ⢮
 㯫⭥  Windows.  ਪ ணࠬ ॡ 䨪樨
  ᯮᮡ.
    GlobalUnfix ࠧ   㬥蠥 稪 ஢ 
.
    GlobalWire 䨪   襬  䨧᪮ , 
⥬  , 㢥稢 稪 ஢  . GlobalWire
   ,    ஢묨  祭
⥫쭮 ਮ ६.     ᯮ   
 ᮬ,   㤥 ⢮  㯫⭥  Windows,
  䨪஢. GlobalUnWire ࠧ   㬥蠥 稪
஢.

    ᢮  뢠  쭮 

     쭮    ᢮  襭 ⥬ 
ᯮᮡ,    ; ⢥ ⫨稥 ⮨  
㭪権, GlobalFree  GlobalDiscard.

    ࠧ饭  䨪  쭮 

       ࠧ , ࠭  ᮤঠ,  
㭪樨 GlobalReAlloc. Windows 㤥 ᥪ , ᫨   
ࠧ , 祬 ⥪騩 ࠧ. ᫨    ࠧ 
⥪饣,   㤥 ᮤঠ 㫨, ᫨   LMEM_ZEROINIT;
 㣮 砥  㤥 ᮤঠ । .   
GlobalAlloc, 騥    ६ 
뢠 Windows  ६ ࠧ饭   
GlobalReAlloc.    LMEM_NODISCARD  LMEM_NOCOMPACT 
।饭 뢠  ६饭 㣨   ६
ࠧ饭.
    GlobalReAlloc ⠪  ᯮ짮  ⮣, ⮡  
६頥묨  뢠묨.
    ᫨  ࠧ⨫     ࠧ஬,   64,
Windows    ਯ  ⮣ . (᫨ 
ਪ ணࠬ 믮  ⠭⭮ ०,  ⭮ 
⭮ 65 519 ⠬.) ᫥⢨ ⮣,   ࠭ 室
ਯ  ஢ ᮮ⢥⢨  ਯ, 頥
GlobalReAlloc. ᫨ GlobalReAlloc 믮 ᯥ譮,   
 ਯ  ;  ⨢ 砥   ࠭ 室
ਯ:

    HANDLE TheGlobalHandle;
    HANDLE OriginalHandle;

    // ࢮ砫쭮  ࠧ饭  ࠧ஬ 32
    // ࠧ  㢥祭  64
    OriginalHandle = TheGlobalHandle;
    TheGlobalHandle = GlobalReAlloc(TheGlobalHandle, 102400,
                                    GMEM_MOVEABLE);
    if (TheGlobalHandle == 0)
      TheGlobalHandle = OriginalHandle;

       쭮 

    GlobalSize  GlobalFlags  ᯮ짮  祭 ଠ樨
  쭮 . GlobalSize 頥 ࠧ 쭮 .
  ᯮ짮 GlobalFlags  । 稪 ஢
   ।,    뢠,  ᫨  ⠪,
   襭. GlobalFlags 㪠뢠 ⠪,    ࠧ饭 
GMEM_DDESHARE  GMEM_NOT_BANKED. ᯮ GMEM_DDESHARE  
,    ࠧ ᪮쪨 ࠬ ਪ
ணࠬ  DLL, ᯮ饩 ᪮쪮 ஢ ਪ ணࠬ.
GMEM_NOT_BANKED ᯮ ⮫쪮  ॠ쭮 ०.

    HANDLE TheGlobalHandle;
    unsigned int Flags;
    ...
    Flags = GlobalFlags(TheGlobalHandle);
    // ஢ઠ,    뢠
    if (Flags & GMEM_DISCARDABLE)
      //  뢠
    else
      //    뢠

      ᯮ짮 㭪 GlobalCompact  祭 ࠧ
襣  ᢮   쭮  ᪨
।塞 ,   ⢥ ࠬ . GlobalCompact
ᥣ ᭠砫 㯫 .  ⠪  ᯮ짮 GlobalCompact
 뢠  뢠 ஢   ⥬,
 -1  ⢥ ࠬ.

    HANDLE TheGlobalHandle;
    unsigned long BlockSize;
    ...
    //  祭 ࠧ 襣 ᢮ 
    BlockSize = GlobalCompact(0);
    //   뢠 ஢ 
    BlockSize = GlobalCompact((unsigned long)-1);

     쭮 뢠

    Windows ᯮ  "   ᯮ짮" (LRU)
 । ⮣,  뢠    
室 襭.   ,   ᯮ
।    ᯨ᪥ 뢠 ,   㭪権
GlobalLRUOldest  GlobalLRUNewest. ,   맮
GlobalLRUOldest 㤥 ᫥騬 襭 . GlobalLRUNewest
६頥     ᯨ᪠ 뢠;  㤥 襭
᫥.

    祭 ।०  筮 

     Windows ।,   㯫⭥ 쭮 
᪨ ।塞  室 ᫨誮  ६, ᥬ
 ᮪ ஢ 뫠 ᮮ饭 WM_COMPACTING.  ᮮ饭
㪠뢠,  ⥬  ,   ਫ  
᢮ ⠪  , ᪮쪮  .

    砭  ணࠬ஢

    ᥣ ࠧ  ६頥  뢠 , 
⮫쪮  稢   . ᫨   ࠧ  ,
Windows  ᬮ ६   ᮧ 筮 ࠭⢠
᢮   쭥 ࠧ饭.  ⠪  ᢮ 
  । 室  襩 ணࠬ.
     ࠧ饭 쪨   (, 祬 128 ⮢) 
쭮  ᪨ ।塞 , 뢠  
⮢ ࠢ 쭮 .  ⠪  ন 
ࠧ饭 讣 ⢠  쭮 . 
   讥 ⢮  .
      ।  ਯ 쭮  
ਫﬨ  ᮧ ࠧ  . 쪮 쭠
, ࠧ饭  GMEM_DDESHARE,  ࠧ ਪ묨
ணࠬ. ஬ ⮣,   ᯮ짮 DDE   ଠ樮
  ।⠢ ࠧ塞 . .  17 " 㭨樨
 ᠬ".



     17

          

      Windows  믮 ᪮쪮 ਫ ६,
 뢠 ⥫쭮 ࠧ  ⨬ ਫﬨ  ६
믮.  প ⢨ ᮢ Windows ।⠢
 ଠ樮  (Clipboard), 㥬 ⮪
᪮  묨 (DDE)   ।  ᮮ饭
Windows  뫠   ਫﬨ.

          ଠ樮  Windows

     ଠ樮  Windows 㭪樮  ࠭ 
ࠧ筮 ଠ.  ਫ Windows, ஥ 頥  
 ଠ樮 ,  롨 ।। ଠ 
। ᢮ ᮡ⢥. ਫ, 饥   
ଠ樮 ,    ଠ樮  
ଠ ⥪ ࠭ . ਫ  ६ 
   ଠ樮   ࠧ ଠ, । 롮
ଠ ਫ, 饬    ଠ樮 .

    ଠ  ଠ樮 

    ଠ  ଠ樮 , ।। Windows,
  맮 㭪権  ଠ樮  Windows
⠭⠬ CF_.   ଠ, ।⠢  ⠡ 17.1.

 17.1  ଠ  ଠ樮 

ଠ           祭
----------------------------------------------------------------
CF_TEXT          ᨢ ᨬ, 騩  ᨬ
CF_BITMAP        ଠ ⮢ ⮡ࠦ Windows
CF_SYLK          ଠ ᨬ᪨ 痢 Microsoft
CF_TIFF          ଠ 䠩 ࠧ ਧ
CF_METAFILEPICT  ଠ 䠩 㭪 Microsoft

     ଠ  ⠭⠬, ন騬 
騬 ਫﬨ Windows.  ᯮ짮 ᯥ樠஢
ᮡ⢥ ଠ   ⠭  ⠭   
ॣ஢ ᢮ ᮡ⢥ ଠ  ଠ樮 .
, 饭   ଠ樮    ᮡ⢥
ଠ,   祭 ⮫쪮 ⥬ ਫﬨ,  ᯮ
 ଠ.
    ਫ, ᯮ饥  ଠ,  맢 㭪
RegisterClipboardFormat  ॣ樨  ଠ, ᫨   
ॣ஢.  맮 RegisterClipboardFormat  ᥠ Windows
頥  㭨 䨪 ଠ  ଠ樮
,  ⠭⠬ CF_.  ⥫쭮 ਫ,
ॣ饥 ଠ  ⥬  , 砥   䨪
ଠ.  ⮬ 砥  ਫ  ᯮ짮 
䨪  ⮣  ଠ .

    饭    ଠ樮 

    饭    ଠ樮  ⮨  
蠣:

1. ⨥  ଠ樮  (OpenClipboard).
2. 襭  ଠ樮  (EmptyClipboard).
3. 饭     ଠ樮 
(SetClipboardData).
4. ⨥  ଠ樮  (CloseClipboard).

    맮 OpenClipboard ᯮ  ⢥ 㬥 ਯ .
 ࠭,  ⮫쪮   ࠡ뢠  ଠ樮
    ६.
     饭    ଠ樮  ਫ 
஢     (.  16)  । ਯ
  맮 SetClipboardData.  ਯ ।, 
ଠ樮  砥   ᢮ ᮡ⢥,  ਫ
   ᯮ짮 .  ⮬, । ਯ 
 . 㭪 SetClipboardData ⠪ ᯮ  ⢥
㬥 䨪 ଠ  ଠ樮 , ,
ਬ, CF_TEXT.  ਫ  ᪮쪮 ࠧ 뢠
SetClipboardData     ࠧ ଠ.
    騩 ࠣ ணࠬ  楤 ࠧ饭  
 ଠ樮   ଠ CF_TEXT.

    BOOL TMyWindow::CopyText(LPSTR TextString); {
      HANDLE StringGlobalHandle;
      LPSTR StringGlobalPtr;

      StringGlobalHandle = GlobalAlloc(GMEM_MOVEABLE,
                                       (LONG)lstrlen(TextString) + 1);
      if (StringGlobalHandle)
      {
        StringGlobalPtr = GlobalLock(StringGlobalHandle);
        if (StringGlobalPtr)
        {
          lstrcpy(StringGlobalPtr, TextString);
          GlobalUnlock(StringGlobalHandle);
          if (OpenClipboard(HWindow))
          {
            EmptyClipboard();
            SetClipboardData(CF_TEXT, StringGlobalHandle);
            CloseClipboard();
            return TRUE;
          }

          else GlobalFree(StringGlobalHandle);
        }

        else GlobalFree(StringGlobalHandle);
      }

      return FALSE;
    }

    ⨬,  ⥪⮢  ਫ (।  CopyText 
㬥 TextString)    lstrcpy   쭮 ,
 ⥬ ਯ ⮣    ० ᯮ짮. ᫥
맮      ᯮ짮 ਫ.
    쭠 , ࠧ饭   GlobalAlloc,   
ࠧ饭  䫠 GMEM_DISCARDABLE, ⠪   ଠ樮 
 㤥 ,   ᮧ .

    祭    ଠ樮 

    祭    ଠ樮  ⮨  
蠣, 믮塞 ਫ, 騬  :

1. ⨥  ଠ樮  (OpenClipboard).
2.   ⥪ ଠ  ଠ樮 
(IsClipboardFormatAvailable).
3. 祭    ଠ樮  (GetClipboardData).
4. ⨥  ଠ樮  (CloseClipboard).

    祭    ଠ樮  ᯮ ਯ
쭮 .    ଠ樮    㤥
த  ᢮ 묨,  ਫ  ஢
, 易  ਯ஬. ਫ   אַ ᯮ짮 
ࠡ뢠 ਯ,  ᪫祭 ஢ .
     㭪  楤 祭 ⥪⮢  
 ଠ樮 .

    int TMyWindow::PasteText(LPSTR TextString, int TextSize) {
      HANDLE StringGlobalHandle;
      DWORD StringGlobalSize;
      LPSTR StringGlobalPtr;
      int CharsPasted;

      CharsPasted = -1;
      if (OpenClipboard(HWindow))
      {
        if (IsClipboardFormatAvailable(CF_TEXT))
        {
          StringGlobalHandle = GetClipboardData(CF_TEXT);

          if (StringGlobalHandle)
          {
            StringGlobalSize = GlobalSize(StringGlobalHandle);
            StringGlobalPtr = GlobalLock(StringGlobalHandle);

            if (StringGlobalPtr)
            {
              if (TextSize < StringGlobalSize)
                StringGlobalSize = TextSize ;

              _fstrncpy(TextString, StringGlobalPtr, StringGlobalSize);
              TextString(StringGlobalSize) = '\0';
              GlobalUnlock(StringGlobalHandle);
              CharsPasted = lstrlen(TextString);
            }
          }
        }
        CloseClipboard();
      }
      return CharsPasted;
    }

    ᫨  ਫ  ࠡ뢠 ࠧ ଠ ,
᭠砫   訢  ଠ⨢ ଠ .
ਬ, ᫨  ଠ樮  ন  ଠ
, ணࠬ  ᭠砫 訢 ,   ଠ 
CF_TEXT, ⨬   訡 ८ࠧ ᥫ  ⥪ 
.

    প ८ࠧ

    ਫ, ন騥 ᪮쪮 ଠ⮢ , ⥫쭮
, ᫨  ८ࠧ    ଠ 直 ࠧ 
饭    ଠ樮 .  ⢥ ୠ⨢ 
 ঠ ८ࠧ  ,  㣮 ਫ 
 ⮣.
     প ८ࠧ । 㫥 ਯ  
맮 SetClipboardData   ଠ⮢,     ঠ
८ࠧ. , ਫ, ন饥 ८ࠧ, 
࠭ ᫥ , 饭   ଠ樮 , ⠪,
⮡    ८ࠧ .  ਫ 訢
    ଠ⮢,   ঠ ८ࠧ, Windows
뫠 ᮮ饭 WM_RENDERFORMAT ਫ, ஥ ᫠ .
㬥 (᫮), ।  ᮮ饭 WM_RENDERFORMAT, ᮤন
ॡ㥬 ଠ . ਫ  ⥬    
ଠ樮   訢 ଠ,  ᠭ ࠭ (,
 ।⥫쭮 饭).
    ८ࠧ饥 ਫ 砥 ᮮ饭 WM_DESTROYCLIPBOARD, 
ᮤঠ  ଠ樮  頥 㣨 ਫ.
 ਫ  ᢮  , ࠭  ঠ
८ࠧ.  ਫ, ঠ襥 ८ࠧ ,
४頥, Windows 뫠 ᮮ饭 WM_RENDERALLFORMATS  ⮣,
⮡  ᯮ    ଠ,   뫮
ঠ ८ࠧ.

          ᮮ饭ﬨ  ᠬ

    設⢮ ᮮ饭, 砥   ਫﬨ, 뫠
Windows  㣨  ⮣  ਫ (. "饭, ।
짮⥫ﬨ"   7). ,   ᫠ ᮮ饭
  ਫ 㣮.   ६,    ଠ 
⮪ ᪮  묨 (DDE), Windows । 堭
 饭  ᮮ饭ﬨ  ᠬ.  堭 
室  뫪 ।० ᮮ饭  । 
祭 . DDE  室  । ᫮ .
    ਬ, ᪠  ᠫ  ਫ,  ஭
,   . ਫ ஭  砥 ᯥ樠
楤  墠 ।० ᮮ饭 ஭  
⥢ ࢥ. ணࠬ ஭   ⥬ ।।
ணࠬ     ⮬,  祭 ᮮ饭 ஭
.  ⮬ 砥   ।  ᮮ饭, ਬ,
WM_EMAILARRIVED.  ਫ, 뫠饥  饥  
ᮮ饭,  ॣ஢    㭪樨 Windows
RegisterWindowMessage.  뫪 ᮮ饭   ਫ  㣮
ᯮ SendMessage  PostMessage.  뫪 ᮮ饭 
⮬  ।  ⢥ ࠬ ਯ  -1. 
஢ન 祭 ᮮ饭 ਫ, 稢襥 ᮮ饭, 
᫠  㣮 ᠬ⥫쭮 ࠧࠡ⠭ ᮮ饭.
    ,  ᫥ ।  ࠬ ⨯ DWORD (LParam) 㪠⥫
 , ⠪  Windows  ६    ᤥ
㪠⥫ ४. ,  । ਯ 쭮 ,
⠪      ᢮, ६饭  襭. 
⠪  ஡, ᫨ 뫠饥  饥 ਫ 
᢮ ਯ .  饬,   । ଠ
אַ  ࠬ ⨯ WORD  DWORD.

         ᪨  묨

    ᪨  묨 (DDE)  ⮪,   ண 
易 ਫ ᮣ  ࠧ . ⨥ "易"
㪠뢠  ,  ⮪ DDE ॡ, ⮡  ਫ , 
訢     ⥬  ⥬, । ਫﬨ. DDE
ॠ  㯯 ᮮ饭 Windows (稭  WM_DDE_), 
 뫪   ਫ 㣮  ।   
 㣮 ਫ.  ணࠬ   䠩 DDE.H 
ᯮ짮 DDE.
    ⮪ DDE ⠪ ᢮  ਫ  ஡, 祭 
।    ਫﬨ.  ⮣  ᯮ
 ⮬  । ⥪⮢ ப  ᯮ 
, ࠧ饭  䫠 GMEM_DDESHARE,  । . ⮬ 
 ப ⠭, 㯭   ⥪ 믮
ਫ Windows.

    ନ

      ਫ ᮣᮢ뢠   묨,  
 .  ਫ, 稭饥 , 뢠 짮⥫᪨
,   ਫ, ⢥饥   砫 , 뢠
ࢥ஬.
     ६  ⢮ ⮫쪮   . ਫ,
஥  ⢮ ६  ᪮쪨 , 
ᮧ ᪮쪮 ,    㤥 ⢮  
.  室  ⥫    묨.
    ⮪ DDE  ॢ ⥬  ।  
.  ᮪ ஢   ਫ, ᫥ ண  ⥬
,  ⥬  .  ਫ  , ⠪ 
  ਫ 筮 "" ᮡ  ⥬ ਫ.
ਬ, ⥪⮢  Windows  ᯮ짮  䠩
㬥⮢  ⥬ .   । 訢 ⮪
.  ⥪⮢  ⮬   ⥪騩 ࠣ 
.
    ਫ  ⥬ ᯮ  ⠭ ,   
 । . ଠ⮬ ,   , 
  ଠ  ଠ樮 .

    ⠭ 

    짮⥫᪮  稭   ࢥ஬;  த,
 짮⥫᪮   ࢥ  ४ . 饭ﬨ,
묨 稭  ४頥 ,  WM_DDE_INITIATE 
WM_DDE_TERMINATE, ᮮ⢥⢥.
    짮⥫᪮  稭  뫪 ᮮ饭
WM_DDE_INITIATE   㭪樨 SendMessage,  -1  ⢥
ࠬ ਯ .   ⮪ DDE ᨭ஭,  
SendMessage 㦭 ᫠ ⮫쪮 WM_DDE_INITIATE. ᫥ ⮣,  
  㤥 ⠭ , 㭪 PostMessage ᯮ
 । ᫥⥫ ᮮ饭 DDE. PostMessage ⫨砥 
SendMessage ⥬,   ᫠襬 ਫ 믮 
 ⢥. 㤮⢮ ᨭ஭ DDE ⮨  ⮬, 
짮⥫᪮ ਫ ⢥⢥     ⢥⮢.
     WM_DDE_INITIATE  ⢥ ᪮쪮  ਫ ࢥ஢.
짮⥫᪮  롨ࠥ  ࢥ  뫠 㣨 ᮮ饭
WM_DDE_TERMINATE, ⠪  ⢥ 㤥 ⮫쪮  ࢥ.
     砫  ᮮ饭 WM_INITIATE ਫ  
 ਫ  ⥬ . ᫨  ⢥  ਫ 
⮥ 祭,      믮騬 ਫ.
᫨ ।⠢塞 ⥬  ⮩,     
 ⥬.
     㭪-  ᯮ짮   砫
.  ᯮ  ⢥ 㬥⮢  ਫ  ⥬
.  ⢥  㬥⮢   㪠뢠 NULL.

    void TClientWindow::InitiateConversation(LPSTR AppName,
                                             LPSTR TopicName)
    {
      WORD AppGlobalAtom, TopicGlobalAtom;

      if (AppName)
        AppGlobalAtom = GlobalAddAtom(AppName);
      else
        AppGlobalAtom = NULL;
      if (TopicName)
        TopicGlobalAtom = GlobalAddAtom(TopicName);
      else
        TopicGlobalAtom = NULL;
      SendMessage(-1, WM_DDE_INITIATE, HWindow,
                  MAKELONG(AppGlobalAtom, TopicGlobalAtom));
      if (AppGlobalAtom)
        GlobalDeleteAtom(AppGlobalAtom);
      if (TopicGlobalAtom)
        GlobalDeleteAtom(TopicGlobalAtom);
    }

    ⨬,   㭪樨 SendMessage ।  ⮬,  
㪠⥫ DWORD. ⮬ ᮧ, ⮫쪮 ᫨ ப ਫ  ⥬ 
ࠢ NULL. ਫ ᥣ  ᢮   ⮬,
ᮧ ᫥ 맮 SendMessage.  ⢨ ᭮, ⠪  맮
SendMessage  ந ,    ਫ  ⥬ 
  ࠡ ᮮ饭 WM_DDE_INITIATE. ࠢ ᮧ
 㭨⮦  ⮬ 㦤   ᠭ
ᮮ⢥ ᮮ饭 DDE.   ਫ,  
ࠡ । ਫ  ⥬, ⢥⢥  뫪
⢥ত  ଥ ᮮ饭 WM_DDE_ACK.
    ꥪ   । ⮬ 㭪- ॠ樨
 ᮮ饭, 뢠  ⢥ ॠ樨  WM_DDE_INITIATE.  ⮩
㭪樨- ꥪ  㤥 ஢  ⥬ , ᫨ 㤥
ᮢ  , 諥 ⢥ত 짮⥫᪮ . ᫨
⥬  ⮥ 祭, -ࢥ   ⥬,  ன 
  .   砥 -ࢥ 筮 ᮧ  
 ࠢ . (,     DDE ᯮ 
.) ਯ     । ᫥ ⢥ত.
     ,  -ࢥ, 뢠饥 TServerWindow, 㤥
뫠 ⢥ত  ᮮ饭 WM_DDE_INITIATE:

    void TServerWindow::ACKTopic(HWND ClientHWnd, HWND ConversationHWnd,
                                 LPSTR TopicName)
    {
      WORD AppGlobalAtom, TopicGlobalAtom;

      AppGlobalAtom = GlobalAddAtom(GetApplication()->Name);
      TopicGlobalAtom = GlobalAddAtom(TopicName);
      if (!SendMessage(ClientHWnd, WM_DDE_ACK, ConversationHWnd,
          MAKELONG(AppGlobalAtom, TopicGlobalAtom)))
      {
        GlobalDeleteAtom(AppGlobalAtom);
        GlobalDeleteAtom(TopicGlobalAtom);
      }
    }

     ࠢ  DDE,  ࢥ ।  ⢥
ࠬ (ConversationHWnd),   ᯮ HWindow TServerWindow. 
  ॠ樨  ⮣,    ⥬  ᮧ
 ꥪ .  짮⥫᪮   롮  ⥬ 
த .  ⨬,   ⮬ ᮧ ᭮ 
㤠, ⮫쪮 ᫨ 맮 SendMessage  ᯥ.   ,
⠪  짮⥫᪮ , 饥 ᮮ饭 WM_DDE_ACK,
⢥⢥  㤠  ⮬.
     ⮣   ⠭. ࢥ  짮⥫, ⠪ 
 稫 ਯ 짮⥫᪮   ᮮ饭 WM_DDE_INITIATE, 
짮⥫᪮   ࢥ, ⠪   稫 ਯ
-ࢥ  ᮮ饭 WM_DDE_ACK. ⥬ ਯ  ᯮ 
᫥⥫ ᮮ饭 DDE   ਫﬨ.

    ४饭 

    짮⥫᪮   ࢥ  ࢠ ⥪騩  
 뫪 ᮮ饭 WM_DDE_TERMINATE. 筮  ᮮ饭 뫠
짮⥫᪮ ,  ࢥ ⠪   ᫠, ᫨ 
ਫ 뢠.  祭 ᮮ饭 WM_DDE_TERMINATE 
 ᫠ ᮮ饭 WM_DDE_TERMINATE .  ᮮ饭 DDE,
祭 ᫥ ࠡ⪨ ᮮ饭 WM_DDE_TERMINATE,  
ந஢,    ⮬   㭨⮦. ᫥
祭 ⢥⭮ ᮮ饭 WM_DDE_TERMINATE,    .
      ᮮ饭 WM_DDE_TERMINATE   ᫠  ६
᫮, , ਬ, ⠫쭠 訡, 뢠 ਫ, ⢥⭮
ᮮ饭 WM_DDE_TERMINATE    ࠡ⠭.    ⮣
뫠饥 ਫ  ,   ਤ ᮮ饭
WM_DDE_TERMINATE    ன । ஬⮪ ६.
   ᮮ饭 DDE, ᯮ 㭪 PostMessage,
 ⠪ ஫  ६.  । 맮 PostMessage 
 맢 㭪 /sWindow  ஢ન, ४⥭  ࠬ
ਯ  ⢥稪.  ।஦   
⮪ DDE,  ।࠭   ᪨ ᡮ 짮⥫
 ࢥ.

    㭪樨-  묨

      ᯮᮡ,    짮⥫  ࢥ 
뢠  ᮡ:

1.         뫪 짮⥫
ᮮ饭 WM_DDE_REQUEST  ⢥ ࢥ ᮮ饭 WM_DDE_DATA.
2. 짮⥫   ନ஢  ⮬,    ,
  ᮮ饭 WM_DDE_ADVISE  WM_DDE_DATA.   ⥬
ᯮ짮 WM_DDE_REQUEST  WM_DDE_DATA  祭 .  騩
堭 뢠 "祩 ". WM_DDE_UNADVISE ᯮ 
४饭  ᫥⥫ .
3. 堭 1  2   ᪮஢, ⠪  ᫥⥫
ᮮ饭 WM_DDE_DATA ⢨⥫쭮 । ,  WM_DDE_REQUEST 
 室묨.
4. 饭 WM_DDE_POKE  㪠 ࢥ  祭 
.
5. 饭 WM_DDE_EXECUTE  ।   ਫ
ࢥ  樨  믮 ࢥ஬.

       

    筮, 짮⥫᪮  訢 祭   
ࢥ.         ᫥饩
ணࠬ:

    void TClientWindow::RequestData(WORD DataFormat, LPSTR Item,
                                    HWND ServerHWND)
    {
      WORD ItemGlobalAtom;

      ItemGlobalAtom = GlobalAddAtom(Item);
      if (!PostMessage(ServerHWND, WM_DEF_REQUEST, HWindow,
          MAKELONG(DataFormat, ItemGlobalAtom)))
        GlobalDeleteAtom(ItemGlobalAtom);
    }

    ࠬ DataFormat    ଠ⮢  ଠ樮 ,
⠪  CF_TEXT. ᫨ ࢥ  ८ࠧ   ॡ㥬
ଠ,   ⢥ ᮮ饭 WM_DDE_DATA:

    #include <dde.h>
    #include <mem.h>
    ...
    void TServerWindow::ACKData(LPSTR Item, WORD DataFormat, LPSTR Data,
                                WORD DataSize)
    {
      DDEDATA far * LPDataRecord;
      WORD ItemGlobalAtom;
      WORD DataGlobalHandle;

      DataGlobalHandle = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
                                     (LONG) (sizeof(DDEDATA) + DataSize));
      if (DataGlobalHandle)
      {
        LPDataRecord = (DDEDATA FAR * )GlobalLock(DataGlobalHandle);
        if (!LPDataRecord)
          GlobalFree(DataGlobalHandle);
        else
        {
          LPDataRecord->fAckReq = LPDataRecord->fResponse = TRUE;
          LPDataRecord->fRelease = FALSE;
          LPDataRecord->cfFormat = DataFormat;
          _fmemcpy(LPDataRecord->Value, Data, DataSize);
          GlobalUnlock(DataGlobalHandle);
          ItemGlobalAtom = GlobalAddAtom(Item);
          if (!PostMessage(ClientHWND, WM_DDE_DATA, HWindow,
              MAKELONG(DataGlobalHandle, ItemGlobalHandle)))
          {
            GlobalFree(DataGlobalHandle);
            GlobalDeleteAtom(ItemGlobalAtom);
          }
        }
      }
    }

      砭  ⮬ ਬ. -, 쭠 
ࠧ頥  GMEM_DDESHARE.    ࢥ,  짮⥫
     ਯ. -,   
뢠 । ⢨⥫묨 묨  쭮 . 
।⠢ ᯮᮡ   ଠ ,  ᪮쪮 ⮢ 権,
㪠뢠 饬 짮⥫  ⢥.
    ஬   権  fResponse,  㪠뢠, 
ᮮ饭 WM_DDE_DATA 뫠  ⢥  ᮮ饭 WM_DDE_REQUEST, 
fAckReq, 㪠뢠 饬 짮⥫ ᫠ ⢥ত
WM_DDE_ACK, 稢 ᮮ饭 WM_DDE_DATA. ᫨   ଠ
CF_TEXT,  ப   । 㪠⥫   
࠭祭 ன ᨬ -⪨/ॢ-ப,  ᫥
ப.
    ᫨ ࢥ   ࠡ ᮮ饭 WM_DDE_REQUEST,  
᫠ ⥫쭮 ⢥ত 짮⥫.  㤥 室,
᫨ ࢥ   ८ࠧ   ॡ㥬 ଠ. 饥 ࠢ
⮨  ⮬, ⮡ ᭠砫 訢    ᫮ ଠ,
 ⥬  訢   ଠ   ,  
㤥 祭 ⥫쭮 ⢥ত. ⥫쭮 ⢥ত
룫廊  ᫥饬:

    ...
    ItemGlobalAtom = GlobalAddAtom(Item);

    if (!PostMessage(ClientHWND, WM_DDE_ACK, HWindow /*  ࢥ */,
                     MAKELONG(0, ItemGlobalAtom)))
      GlobalDeleteAtom(ItemGlobalAtom);
    ...

    ᫨ 짮⥫ 稫 ᮮ饭 WM_DDE_DATA,   ࠡ
祭 .   ⠪ ஢  DDEDATA  砫
㪠⥫  , ᫨ ⠭ fAckReq, ᫠  ⥫쭮
⢥ত:

    ...
    if (DataRecord->fAckReq)
    {
      ItemGlobalAtom = GlobalAddAtom(Item);
      if (!PostMessage(ServerHWND, WM_DDE_ACK, HWindow /*  - */,
          MAKELONG(0x8000, ItemGlobalAtom);
    }
    ...

    ᫨ ⠭ fRelease, 짮⥫ ⢥⢥  ᢮
ਯ :

    ...
    GlobalUnlock(ItemGlobalHandle);
    if (DataRecord->fRelease)
      GlobalFree(ItemGlobalHandle);
    ...

     fAckReq  fRelease ( )   ⠭  ᮮ饭
WM_DDE_DATA. 쭠  ᢮  ࢥ஬,  
砥 ⢥ত,  짮⥫. ᫨    䫠 
⠭, ࢥ  㤥 ,  ᢮  , 
짮⥫  㤥 ᢮ .
        쭮 ᫮,   ⮪ DDE
ࠧࠡ⠭  ⨦   楫:

1.  ᯥ祭 ⮣,   ࠧ饭 ꥪ 쭮 
 ᢮.
2.  ࠧ饭  ꥪ⮢ 쭮   ଥ,  室
 짮⥫,  ࢥ.
3.  ।饭 㯨 権,   ਫ 
⢥  㣮 ਫ.
     ⮣,    楫 믮    ᮮ饭 DDE,
᭨ 設⢮ ᫮⥩ ⮪.

    ⨩ ८ࠧ 

    짮⥫  ⠭ ᮡ⨩  -   - 
ࢥ஬, 뫠騬 ।०    .  
⠭ 뫪 ᮮ饭 WM_DDE_ADVISE:

    void TClientWindow::Advise(LPSTR Item, WORD DataFormat)
    {
      DDEADVISE FAR * LPDataRecord;
      WORD ItemGlobalAtom;
      WORD DataGlobalHandle;

      DataGlobalHandle = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
                                     (LONG) (sizeof(DDEADVISE));
      if (DataGlobalHandle)
      {
        LPDataRecord = (DDEADVISE FAR *)GlobalLock(DataGlobalHandle);
        if (!LPDataRecord)
          GlobalFree(DataGlobalHandle);
        else
        {
          LPDataRecord->fAckReq = LPDataRecord->fDeferUpd = TRUE;
          LPDataRecord->cfFormat = DataFormat;
          GlobalUnlock(DataGlobalHandle);
          ItemGlobalAtom = GlobalAddAtom(Item);
          if (!PostMessage(ClientHWND, WM_DDE_ADVISE, HWindow,
              MAKELONG(DataGlobalHandle, ItemGlobalHandle)))
          {
            GlobalFree(DataGlobalHandle);
            GlobalDeleteAtom(ItemGlobalAtom);
          }
        }
      }
    }

    ᫨ ࢥ  ८ࠧ   ॡ㥬 ଠ,  
᫠ ⥫쭮 ᮮ饭 WM_DDE_ACK. ᫨    㦨
,   ᫠ ⥫쭮 ᮮ饭 WM_DDE_ACK.  祭
⥫쭮 ᮮ饭 WM_DDE_ACK 짮⥫  
⠭   㣨 ଠ⮬   ଠ樮 .
    ⨬,  ⠭ 䫠 fDeferUpd ᮮ饭 WM_DDE_ADVISE.
 ࠧ㬥,  짮⥫   ⮫쪮 ।०,
  ᠬ ,   . ᫥⥫ ᮮ饭
WM_DDE_DATA, 뫠  ࢥ,  뫠  . ਬ,

    ...
    ItemGlobalAtom = GlobalAddAtom(Item);
    if (!PostMessage(ClientHWND, WM_DDE_DATA, HWindow /*  ࢥ */,
        MAKELONG(0, ItemGlobalAtom)))
      GlobalDeleteAtom(ItemGlobalAtom);
    ...

    짮⥫ 㤥 뫠 ᮮ饭 WM_DDE_REQUEST, ᫨ 
 . ᫨ 䫠 fDeferUpd  ⠭, ᫥⥫
ᮮ饭 WM_DDE_DATA  ࢥ  ⢨⥫쭮 ᮤঠ .
饭 WM_DDE_DATA 뫠  ⮬,  뫮 ᠭ  ࠭
ᬮ७ 㭪樨 ACKData,  ᪫祭 ⮣,  䫠 fRequest 
⠭.

      ࢥ   祭 

    void TClientWindow::Poke(LPSTR Item, WORD DataFormat, LPSTR Data,
                             WORD DataSize)
    {
      DDEPOKE FAR * LPDataRecord;

      WORD ItemGlobalAtom;
      WORD DataGlobalHandle;

      DataGlobalHandle = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
                                     (LONG) (sizeof(DDEPOKE) + DataSize));
      if (DataGlobalHandle)
      {
        LPDataRecord = (DDEPOKE FAR * )GlobalLock(DataGlobalHandle);
        if (!LPDataRecord)
          GlobalFree(DataGlobalHandle);
        else
        {
          LPDataRecord->fRelease = FALSE;
          LPDataRecord->cfFormat = DataFormat;
          _fmemcpy(LPDataRecord->Value, Data, DataSize);
          GlobalUnlock(DataGlobalHandle);
          ItemGlobalAtom = GlobalAddAtom(Item);
          if (!PostMessage(ServerHWND, WM_DDE_POKE, HWindow,
              MAKELONG(DataGlobalHandle, ItemGlobalHandle)))
          {
            GlobalFree(DataGlobalHandle);
            GlobalDeleteAtom(ItemGlobalAtom);
          }
        }
      }
    }

    ணࠬ  TClientWindow::Poke  ணࠬ 
TServerWindow::ACKData. ⫨稥 ⮨  ⮬,  WM_DDE_POKE 뫠
 짮⥫  ࢥ,  WM_DDE_DATA ᥣ 뫠  ࢥ 
짮⥫. ࢥ  뫠 ⥫쭮 ⢥ত, ᫨ 
ࠡ⠫ WM_DDE_POKE,  ⨢ ⢥ত, ᫨    ⮣
ᤥ. ࢥ  ࠡ⪥ WM_DDE_POKE    
 ࠧ:

    ...
    char ItemName[128];

    ItemGlobalAtom = Msg.LP.Hi;
    GlobalGetAtomName(ItemGlobalAtom, ItemName, sizeof ItemName);
    ...

    믮  ᮢ  ࢥ

    饭 WM_DDE_EXECUTE  짮⥫ ᫠ ப,
  ᨬ, ࢥ  믮  ⢥ 
. ᫨ ࢥ  ਫ, ࠡ뢠騬 ⥪, 
ப    ଥ 몠 ⥪⮢ .  筮
ந室  ⠪ 砥, ࢥ  ᫠ ⥫쭮 
⥫쭮 ⢥ত 믮 ᮮ饭 WM_DDE_EXECUTE. 
ਢ ਬ ᯮ짮 ⠪ 堭:

    void TClientWindow::Execute(LPSTR Command) {
      WORD DataGlobalHandle;
      LPSTR DataGlobalPtr;

      DataGlobalHandle = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
                                     (LONG)_fstrlen(Command));
      if (DataGlobalHandle)
      {
        DataGlobalPtr = GlobalLock(DataGlobalHandle);
        if (!DataGlobalPtr)
          GlobalFree(DataGlobalHandle);
        else
        {
          _fstrcpy(DataGlobalPtr, Command);
          GlobalUnlock(DataGlobalHandle);
          if (!PostMessage(ServerHWND, WM_DDE_EXECUTE, HWindow,
              MAKELONG(0, DataGlobalHandle)))
          {
            GlobalFree(DataGlobalHandle);
          }
        }
      }
    }

    뫠  ப    ᨬ  
 ᫥騩 ᨭ⠪ (  ᪮   , 
䨣 ᪮ 㪠뢠 易⥫ ):

    [macroCall] { [macroCall] }

 macroCall 

    macroName(parameter1 {, parameter2 ...})

    ਬ, ᫨  ⥪⮢   
३  ।  ப, "goto_line(lineno)",  
⥪騩 ࠣ, "select_current_paragraph",   ᫠ 
ப

    [goto_line(50)][select_current_paragraph]

 롮 ࠣ,  ஬ 室 50- ப.  ਫ,
 ন DDE  ࢥ   ७ , ᯨ᮪
 ⢨ ᪮祭.

    ⥬ ⥬

     ਫ, ন騥 DDE,  ࠡ  ᯥ樠쭮
⥬, 뢠饩 ⥬ ⥬. ⥬ ⥬  ᯮ짮
짮⥫ﬨ, 묨  訬 ਫﬨ.   ⮣ 堭
⠪ 짮⥫   뢮,  DDE ॠ  襬
ਫ.  ਢ ᯨ᮪ ⮢ ,  
ন ⥬ ⥬:

1. SysItems  ᯨ᮪ ⮢ ⥬ ⥬.
2. Topics  ᯨ᮪  ন    ⥬.  
 ਫ । ࠧ ⥬   ⮣ 䠩,
 ᯨ᮪  ﭭ .
3. Formats  ᯨ᮪ ন ଠ⮢  ଠ樮 
 ८ࠧ .
    , ⠢騥  ,  ࠧ ⪠
⠡樨.


     18

           GDI

     ⨯ ਫ Windows 㦤 ⮫쪮  , 
  ࠢ ⮢  業 짮⥫᪮
䥩.   ਫ, ⠪  ਫ ᮢ 
ࠡ⪨ ࠦ, ॡ 䨪.  䨪    ଥ
, , ⥪  ⮢ ⮡ࠦ.
     ।⠢ ਫ 㭪樮 ⥩ ࠡ 
䨪 Windows   㭪権, 뢠 䥩  ᪨
ன⢠ (GDI). GDI  ᬠਢ  ᪨ ,
 ᯮ ਫ Windows  ।⠢  権 
䨪. 㭪樨 GDI  襬 ਫ  ᮢ, 
騥  ᯮ㥬 ன⢠ ।⠢. ਬ,  
ᯮ짮     㭪樨 GDI  ᠭ ணࠬ  ᯫ
EGA  VGA   ਭ PostScript. ᨬ  ன
⨣   ᯮ짮 ࠩ஢ ன, ॢ 맮
㭪権 GDI  ,  ᯮ饬 ன 뢮.

         ⥪ ।⠢

     ⫨稥  ࠤ樮 ᪨ ணࠬ DOS, ணࠬ Windows
⢫   אַ  ᥫ ࠭,   ᪨ ꥪ,
뢠 ⥪⮬ ।⠢. ⥪ ।⠢  㠫쭠
孮  ᮮ⢥騬 ਡ⠬, ⠪  "࠭", "",
, 梥 䮭, 梥 ⥪  ⥪ .
      뢠 㭪樨 GDI  ᮢ  ⥪ ।⠢,
ࠩ ன⢠, 易  ⨬ ⥪⮬ ।⠢, ८ࠧ
⢨ ᮢ  ᮮ⢥騥 .   ந
⢨ ᮢ ⠪ 筮,     ன⢥ ।⠢.
ᯫ    ஬ ࠭   ࠧ襭,  24-⮢
梥 ࠭.
      ᬠਢ ⥪ ।⠢  宫 ⨭, ⮣
   楫 ⨭  ࠬ.  ⮣, ⮡ ᮢ אַ 
⨭  ࠬ,  ᭠砫   宫,  ⥬ ७ 宫 
ࠬ. 筮 ⠪     ⥪ ।⠢. ⥪
।⠢ ᮤন ।⢠ ᮢ, ⠪  "࠭", "" 
.
    ⥪ ।⠢  , ࠢ塞 Windows, 
 ,  ᪫祭 ⮣,  ⥪ ।⠢  
ᮮ⢥饣 ꥪ ObjectWindows.

    ࠢ ⥪⮬ ।⠢

     ᮢ 䨪  ⥪ ।⠢  ਫ 
᭠砫  ⥪ ।⠢   .   
  ⥪ ।⠢ , ⮫쪮  ⥪⮢
।⠢  ६  㯭묨  ६ ᥠ Windows.
 ࠧ㬥,      ࠡ뢠 ᢮ ᮡ⢥
⥪ ।⠢.     ⥪, ⮫쪮 
㦤  ,  ᢮  ⠪ ᪮,   .
     祭, ᯮ짮  ᢮ ⥪⮢
।⠢ ⠫쭮 ᠭ  ࠣ "।⠢ 䨪  " 
⮩ .

     室  ⥪ ।⠢?

     筮   㦤   設⢠ ਡ⮢
⥪ ।⠢,  ࠢ   ,  ᮤন
⥪ ।⠢.  ࠣ 뢠 ᢮⢠ ⥪⮢
।⠢,  ⮢ ⮡ࠦ, 梥, ० ⮡ࠦ,
祭  ।⢠ ᮢ.    ⥬ ஡
ᬠਢ  ⮩ .

    ⮢ 䨪

    ⢨⥫쭠 孮 ⥪ ।⠢  ⮢
⮡ࠦ. ⮢ ⮡ࠦ ।⠢ 䨣 
। ன⢠. ⮬    ⨯ 㥬
ன⢠.  ஦ ஡, ⠪  ⮢ ⮡ࠦ,
࠭   ன⢠,   ᮢ⨬묨  㣨
ன⢮. GDI ।⠢ । 孨  ࠧ襭 ⮩
஡,  ⮢ ⮡ࠦ,  騥  ன⢠ (DIB).
㭪樨 GDI, ᮧ騥 ⮢ ⮡ࠦ,   ᥡ
CreateCompatibleDC, CreateCompatibleBitmap  CreateDIBitmap. 㭪樨 GDI
 ࠡ⪨ ⮢ ⮡ࠦ   ᥡ BitBlt, StretchBlt,
StretchDIBits  StretchDIBitsToDevice.

    

    ,  ᯮ ன⢮  ᮢ, ᮤঠ 
梥⮢ . ᫨ 梥,    ᯮ짮, 㯥, 
    .  饬,   ࠩ ன⢠
பᨬ஢  梥 ७ 梥⮢ .  梥⮢
 ७  ⠫쭮 ᬠਢ  ࠣ "ᯮ짮
".

     ⮡ࠦ

        ᮢ,    , 
ன⢮ 㤥 ᯮ짮  ।⠢. 設⢮ ਫ
  ஡  ,  ⠭   (
ᥫ) 祭  ࠡ. ,  ਫ ॡ, ⮡
।⠢ 筮 ந ࠧ  ࠦ.  ⠪
ਫ GDI । ࠧ ० ⮡ࠦ,  
 ᨬ  ன⢠.
     ० ⮡ࠦ     न
ਥ. ⠭ ० ⮡ࠦ ⠭ 砫  
 孨 㣮 ⥪ ।⠢  ⥫ ࠢ 
 x ࠢ  ⥫ ࠢ   y .  ⥪
।⠢  ਡ ० ⮡ࠦ  । ⮣, 
஢   न.
     室 ८ࠧ뢠 ᪨ न, ᯮ㥬
  ᮢ,  䨧᪨ न ⮢ ⮡ࠦ ⥪饣
० ⮡ࠦ.  設⢠ ਫ 窠   ࠭
室   孥 㣫,    窮   
孨 㣮 짮⥫᪮  .   ப稢 
짮⥫ 孮 ⠪,  窠  室 
짮⥫᪮ .  㭪樨 GDI ࠡ  ᯥ᪮
⥬ न, ⠪  ८ࠧ 室. GDI ।⠢
㭪樨  ࠢ ⨬ न묨 ८ࠧﬨ, ⠪ 
ScreenToClient, ClientToScreen, DPtoLP  LPtoDP.

     祭

     ।饭 ᮢ  ७  ⥪
।⠢   祭.  祭  㣮쭠
 ᪠ ଠ,  ன  ⢨⥫쭮 
१ ᮢ  㠫쭮 孮 ⥪ ।⠢.
 設⢠ ਫ ⠭⭠  祭, 짮⥫᪠
 , 㤥 筮. 쪮 ਫ, ந騥
ᯥ樠 㠫 䥪, 㦤    祭.

    ।⢠ ᮢ

     믮 ᮢ ⥪ ।⠢ ন 
।⢠: "࠭", ""  . ࠭ ᯮ  ᮢ
,   . ਡ ࠭  梥, ਭ  ⨫
(뢭  , ਬ).  ᯮ  
뢭 , ⠪  אַ㣮쭨,   㣮쭨.
㭪樨 GDI,   뢭 , ᯮ ࠭ 
ᮢ ࠭     ७ ࠭⢠.
  ⨯ ⥩: 뢭, , ᯮ
⮢ 蠡  ᯮ 騩  ன ⮢ 蠡.
।⢠  ᯮ  ᮢ ⥪  ⥪
।⠢.   , ਭ, 蠣, ᥬ⢮  
⠭.
      ।⢠ ᯮ ਡ 梥 䮭 ⥪ ।⠢
  ࠭⢠. ।⢠ ᮢ ஡ ᬠਢ 
᫥饬 ࠣ.

         ।⢠ ᮢ

    ⥪ ।⠢ ࠢ ।⠢ 䨪  ࠭. 
।⠢ 䨪 ࠧ묨 ᯮᮡ   ஢
।⢠ ᮢ,      ८ࠧ뢠 䨪.
ਡ  । 㪠뢠 譨  䨪, 㥬  
㭪権 GDI, ⠪  LineTo, Rectangle  TextOut. ࠭ ࠢ
譨  㥬 ;  ࠢ 譨  ७
࠭⢠ ;  ࠢ 譨  ⥪.
     祭 ਡ⮢ । ᮢ ਫ Windows 롨ࠥ
᪮  饥 ।⢮  ⥪ ।⠢. ᪮
।⢮    ᮧ 襩 ணࠬ    
ன , LOGPEN, LOGBRUSH  LOGFONT. 饥 ।⢮ 
饥, । Windows ।⢮, ।⠢饥  騥
롮 ਡ⮢, ⠪  뢭  ࠭,   
⥬ .

    騥 ।⢠

       ਯ 饣 ।⢠   㭪樨 GDI
GetStockObject. ਬ,

    HBRUSH TheBrush;
    ...
      TheBrush = GetStockObject(LTGRAY_BRUSH);
    ...

 LTGRAY_BRUSH  楫 ⠭, । WINDOWS.H. 
ਢ ᯨ᮪   ⠭  ।:

 18.1: 騥 ।⢠ ᮢ

          ࠭                   
-----------------------------------------------------------------
WHITE_BRUSH    WHITE_PEN   OEM_FIXED_FONT        DEFAULT_PALETTE
LTGRAY_BRUSH   BLACK_PEN   ANSI_FIXED_FONT
GRAY_BRUSH     NULL_PEN    ANSI_VAR_FONT
DKGRAY_BRUSH               SYSTEM_FONT
BLACK_BRUSH                DEVICE_DEFAULT_FONT
NULL_BRUSH                 SYSTEM_FIXED_FONT
HOLLOW_BRUSH

     ⫨稥  ᪨ ।, 騥 ।⢠   㤠
᫥ ᯮ짮.

    ᪨ ।⢠

     ᪨ । LOGPEN, LOGBRUSH  LOGFONT ᮤঠ ,
ᮤঠ騥  ਡ ।⢠. ਬ, LOGPEN.lopnColor ᮤন
ਡ 梥 ࠭.   । ᢮ ᮡ⢥ 
ਡ⮢, ᮮ⢥騩 ⨯ ।⢠.
     ᮧ ᪮ ।⢠  । ᮧ饩 㭪樨 GDI
 ᪮ ।⢠,  ன  । ਡ ।⢠.

    ᪨ ࠭

      ᮧ ᪨ ࠭   㭪権 GDI
CreatePen  CreatePenIndirect. ਬ,

    ThePen = CreatePen(PS_DOT, 3, RGB(0, 0, 210));
    ThePen = CreatePenIndirect(&ALogPen);

     ਢ ।  LOGPEN:

    typedef struct tagLOGPEN {
      WORD   lopnStyle;
      POINT  lopnWidth;
      DWORD  lopnColor;
    } LOGPEN;

     ⨫, lopnStyle, ᮤন ⠭, 㪠뢠  
᫥ ⨫ .

. 18.1  ⨫   । ࠭

⠭         ⢥騩 ⨫ 
---------------------------------------------------
  PS_SOLID        
  PS_DASH                        
  PS_DOT          
  PS_DASHDOT      
  PS_DASHDOTDOT   
  PS_NULL

     ਭ, lopnWidth, ᮤন , न x ன 
楫 ᫮, 㪠뢠騬 ਭ   न ன⢠.  ࠭
VGA, ᫨ 祭 ࠢ , 㥬 ப 㤥  ਭ 
ᥫ. 祭 न y .
     梥, lopnColor, ᮤন ࠬ ⨯ DWORD,  ᮤন
祭 ⥭ᨢ ᭮ 梥⮢, ᭮,   ᨭ,
   祭  梥. 祭 lopnColor 
  ଥ 00x00bbggrr,  bb  祭  ᨭ 梥, gg -
祭   梥,  rr - 祭  ᭮ 梥. 
⥭ᨢ   ࠭  0  255 ( 0  0xFF). 
⠡ ।⠢   祭 梥⮢.

 18.2   RGB-祭 梥⮢

祭     
----------------------
0x00000000   
0x00FFFFFF   
0x000000FF   
0x0000FF00   
0x00FF0000   
0x00808080   

     ୠ⨢,   ᯮ짮  RGB  祭
梥⮢. RGB(0,0,0) 頥 , RGB(255,0,0) 頥  
. .

    ᪨ 

      ᮧ ᪨    㭪権 GDI
CreateHatchBrush, CreatePatternBrush, CreateDIBPatternBrush 
CreateBrushIndirect. ਬ,

    TheBrush = CreateHatchBrush(HS_VERTICAL, RGB(0, 255, 0));
    TheBrush = CreateBrushIndirect(&ALogBrush);

     ਢ ।  LOGBRUSH:

    typedef struct tagLOGBRUSH {
      WORD   lbStyle;
      POINT  lbColor;
      DWORD  lbHatch;
    } LOGBRUSH;

     lbStyle ᮤন ⠭ ⨯ ᫮, 㪠뢠 ⨫ :

* BS_DIBPATTERN 㪠뢠,  , । 蠡, ।
騬  ன⢠ ⮢ ⮡ࠦ.
* BS_HATCHED    ।। 客 蠡 (.
lbHatch).
* BS_HOLLOW   .
* BS_PATTERN ᯮ  孨 㣮, ࠧ஬ 8  8 ᥫ,
⮢ ⮡ࠦ, 室饣     .
* BS_SOLID  뢭 .

     lbColor ᮤন 祭 梥,  ᮮ⢥饬
祭  ᥩ LOGPEN.    ﬨ  ⨫ﬨ
BS_HOLLOW  BS_PATTERN.
     lbHatch ᮤন 楫 ⠭, 㪠뢠 客 蠡
 ⥩  ⨫ BS_HATCHED. ᫨ ᯮ ⨫ BS_DIBPATTERN,
lbHatch ᮤন ਯ ⮢ ⮡ࠦ.

. 18.2  ⨫ 客  । 

    ᪨ 

      ᮧ ᪨ , ᯮ 㭪樨 GDI CreateFont
 CreateFontIndirect.
     ਢ ।  LOGFONT:

    typedef struct tagLOGFONT {
      int   lfHeight;
      int   lfWidth;
      int   lfEscapement;
      int   lfOrientation;
      int   lfWeight;
      BYTE  lfItalic;
      BYTE  lfUnderline;
      BYTE  lfStrikeOut;
      BYTE  lfCharSet;
      BYTE  lfOutPrecision;
      BYTE  lfClipPrecision;
      BYTE  lfQuality;
      BYTE  lfPitchAndFamily;
      BYTE  lfFaceName[LF_FACESIZE];
    } LOGFONT;

      ᯮ LOGFONT  ᮧ ।⢠ ,  
ਡ  . ,  ணࠬ  ᯮ ⮩
ଠ樨  樨 ࠭ .  ⮣  ⮡ࠦ
   ࠭ ,     ।  ᥠ
Windows.
     lfHeight    . 㫥 祭 
१⮬ ⠭ ࠧ. ⥫쭮 祭  訢
 祩  ᪨ . ⥫쭮 祭 ८ࠧ 
⥫쭮   訢 ⮩ ᨬ  ᪨
.
     lfWidth   ਭ   ன⢠. ᫨ 
ࠢ , ࠭ 樥 ᦠ.
     ⮣ ⥪ ⠭ lfEscapement  祭  
 ࠤ,  ஥ ⥪ 㤥  ⨢ ᮢ ५.
fOrientation  ⠪     ᨬ.
     ⫨   lfWeight.   ᯮ짮
⠭ ⫨ , ⠪  FW_LIGHT, FW_NORMAL, FW_BOLD 
FW_DONTCARE,  祭  0  1000.
     ਡ  - ᨢ, ભ  ભ -
訢   㫥 祭  lfItalic, lfUnderline 
lfStrikeOut.
     lfCharSet ॡ ᯥ樠쭮  ᨬ, ANSI_CHARSET,
OEM_CHARSET  SYMBOL_CHARSET.  ᨬ ANSI ।⠢ 
ਫ B "㪮⢠ 짮⥫" (User's Guide) Microsoft Windows.
OEM_CHARSET  ⥬-ᨬ.
     lfOutPrecision 㪠뢠,  筮 , ।⠢塞
Windows,  ᮮ⢥⢮ ᠬ ࠧ  樨. ⠭
祭  OUT_DEFAULT_PRECIS.  lfClipPrecision 㪠뢠, 
ᥪ 筮  ᨬ. ⠭ 祭 
CLIP_DEFAULT_PRECIS.
     lfQuality 㪠뢠,  筮 , ।⠢塞 Windows,
ᮮ⢥ 襭 ਡ⠬ .    ⠭ 
DEFAULT_QUALITY, DRAFT_QUALITY  PROOF_QUALITY.  祭
PROOF_QUALITY , ᨢ, ભ  ભ 
ᨭ⥧, ᫨   㯭묨.
     lfPitchAndFamily 訢 蠣  ᥬ⢮ .  
 १⮬ ࠧ來 樨  |   ⠭⮩ 蠣 
 ⠭⮩ ᥬ⢠.

 18.3  ⠭ 蠣  ᥬ⢠ 

⠭ 蠣    ⠭ ᥬ⢠
--------------------------------------
DEFAULT_PITCH     FF_MODERN
FIXED_PITCH       FF_ROMAN
VARIABLE_PITCH    FF_SCRIPT
                  FF_SWISS
                  FF_DECORATIVE
                  FF_DONTCARE

    , lfFaceName  ப,   ॡ㥬
⠭. ᫨ 祭 ࠢ 0,   ⠭, 饥 
祭  㣨  LOGFONT.
     ਢ ⮩  ⮢  ⥪⮬ ணࠬ, 
।   LOGFONT:

    void MyWindow::MakeFont()
    {
      LOGFONT MyLogFont;

      MyLogFont.lfHeight         = 30;
      MyLogFont.lfWidth          = 0;
      MyLogFont.lfEscapement     = 0;
      MyLogFont.lfOrientation    = 0;
      MyLogFont.lfWeight         = FW_BOLD;
      MyLogFont.lfItalic         = 0;
      MyLogFont.lfUnderline      = 0;
      MyLogFont.lfStrikeOut      = 0;
      MyLogFont.lfCharSet        = ANSI_CHARSET;
      MyLogFont.lfOutPrecision   = OUT_DEFAULT_PRECIS;
      MyLogFont.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
      MyLogFont.lfQuality        = DEFAULT_QUALITY
      MyLogFont.lfPitchAndFamily = VARIABLE_PITCH | FF_SWISS;
      strcpy(MyLogFont.lfFaceName, "Helv");

      TheFont =CreateFontIndirect(&MyLogFont);
    }


    void MyWindow::MakeFont()
    {
      LOGFONT MyLogFont;

      MyLogFont.lfHeight         = 10;
      MyLogFont.lfWidth          = 0;
      MyLogFont.lfEscapement     = 0;
      MyLogFont.lfOrientation    = 0;
      MyLogFont.lfWeight         = FW_NORMAL;
      MyLogFont.lfItalic         = TRUE;
      MyLogFont.lfUnderline      = TRUE;
      MyLogFont.lfStrikeOut      = 0;
      MyLogFont.lfCharSet        = ANSI_CHARSET;
      MyLogFont.lfOutPrecision   = OUT_DEFAULT_PRECIS;
      MyLogFont.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
      MyLogFont.lfQuality        = DEFAULT_QUALITY;
      MyLogFont.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
      strcpy(MyLogFont.lfFaceName, "Courier");

      TheFont =CreateFontIndirect(&MyLogFont);
    }


    void MyWindow::MakeFont()
    {
      LOGFONT MyLogFont;

      MyLogFont.lfHeight         = 30;
      MyLogFont.lfWidth          = 0;
      MyLogFont.lfEscapement     = 0;
      MyLogFont.lfOrientation    = 0;
      MyLogFont.lfWeight         = FW_NORMAL;
      MyLogFont.lfItalic         = 0;
      MyLogFont.lfUnderline      = 0;
      MyLogFont.lfStrikeOut      = 0;
      MyLogFont.lfCharSet        = SYMBOL_CHARSET;
      MyLogFont.lfOutPrecision   = OUT_DEFAULT_PRECIS;
      MyLogFont.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
      MyLogFont.lfQuality        = PROOF_QUALITY;
      MyLogFont.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
      strcpy(MyLogFont.lfFaceName, "Tms Rmn");

      TheFont =CreateFontIndirect(&MyLogFont);
    }

         ।⠢ 䨪  

    ᮢ   ।⠢ ᮤঠ . ਫ Windows
⢥⢥  ᮢ ᢮ ,   ।⠢  ࠧ,
   㦤  , ਬ, ᫥ ⮣,  
⠭  ⮣ࠬ,  - 㣮  
 ࠧ.  Windows  ।⠢ ⮬᪮ ᮢ
ᮤঠ ,  ।०,   㦤  ᮢ.
 ࠣ 뢠,  ᮢ  , 뢠 堭 ᮢ
  ᯮ짮 ⥪ ।⠢.
     ⮬ ࠣ ᮢ  ᮢ ᬠਢ 
।⠢ 䨪  . ᮢ ᬠਢ  ⮬᪮
।⠢ 䨪,      㦤 
. ᮢ ᬠਢ  ᮧ  ।⠢ 
䨪   㣮 ६  ࠢ ணࠬ. 䨪
ᬠਢ  ⥪⮢  ᪨ , ⠪  ⮢
⮡ࠦ  אַ㣮쭨.

    ᮢ  

     ᮢ ⥪  䨪  ꥪ    ᭠砫
 ⥪ ।⠢. ᫥ ᮢ   ᢮
⥪ ।⠢. ( ⮫쪮  ⮢ ⥪
।⠢, 㯭  ६  ᥠ Windows.)  ६
ᮢ   ᯮ짮 ਯ ⥪ ।⠢ 
⢥ 㬥   㭪樨 GDI.

    ࠢ ⥪⮬ ।⠢

    筮  㤥 ।     ࠭
ਯ ⥪饣 ⥪ ।⠢  ⮬,  HWindow
࠭ ਯ :

    class TMyWindow : public TWindow
    {
      HDC TheDC;
    ...
    };

     祭 ⥪ ।⠢    맢 㭪
Windows GetDC:

    TheDC = GetDC(HWindow);

       믮 樨 ᮢ  ⥪
।⠢, । ਯ ⥪ ।⠢  㭪樨 GDI,
⠪  Rectangle:

    Rectangle (TheDC, 10, 10, 100, 1000);

     ⮫쪮   ⢨  ⥪⮬ ।⠢, ᢮
   㭪樨 ReleaseDC:

    ReleaseDC(HWindow, TheDC);

     뢠 GetDC   맮 ReleaseDC  .  筮
⮣  ਢ  ⥬ ᡮ  믮 襩 ணࠬ, ⠪
  멤  ।   ⥪⮢ ।⠢.

    맮  ᪨ 㭪権

    筮  㤥 뢠 㭪樨 GDI  㭪権- .
ਬ, TextOut  㭪,   ⥪  ⥪
।⠢   :

    void TMyWindow::DrawText
    {  TheDC = GetDC(HWindow);
       TextOut(TheDC, 50, 50, "Sample Text", 11);
       ReleaseDC(HWindow, TheDC);
    }

    ᮢ 

      㦤  ᮢ,  ⠭ ४, 
砥,   ।⠢    ४  㦤 
.  ந室,    ࢮ砫쭮,  
⠭ ᫥ 樨  ⮣ࠬ,   
- 㣮 .     Windows 뫠 ᮮ饭
WM_PAINT ᮮ⢥饬 ਫ.
    TWindow । 㭪- ॠ樨  ᮮ饭 WM_PAINT,
TWindow::WMPaint,  ( 㣨 饩)

* 砥 ⥪ ।⠢
* 뢠 㠫 㭪- Paint, । ⥪
।⠢  ⢥ ࠬ
* ᢮ ⥪ ।⠢

    㭪- Paint TWindow   ᮢ, ⠪  ꥪ
TWindow    㬮砭 䨪  ᮢ. ᫨  
।⠢ 䨪  ⥪, ८। 㭪- Paint,
 뢠 㭪樨 GDI  ᮢ.
    ⢥ ⢨, ஥   ந  ⥪⮬
।⠢,  롮  । ᮢ, ⠪  ࠭ 
ࠧ묨 梥⠬    ࠧ묨 蠡.   
  ।⢠  ᮢ뢠 ⥪ ।⠢  襩
㭪樨- Paint.

    ⥣ 䨪

    㭪- Paint ⢥⢥  ᮢ ⥪饣 ᮤঠ
   ६,  ࢮ  . ⮬,
㭪- Paint   ᯮᮡ ᮢ  
"ﭭ" 䨪. ஬ ⮣,     
ᮧ  䨪, 塞   ᫥  砫쭮 .
 ᮧ ⮩ "᪮" 䨪 㭪- Paint 
     ,    ᮧ 䨪.
      室  祭 ⠪ 㯠.  ⮨ 
樨 襩 ணࠬ 䨪  㭪-  맮 
㭪権-,  ᮧ 䨪, 祬   㭪樨-
Paint. 㣮 室, ।⠢  ⮬    3, ⮨ 
࠭ , ⭮  ᪮ ᮤঠ ,  
ꥪ .      ᥡ, ਬ, न,
  ⮢ ⮡ࠦ.     㭪樨- Paint
믮 楤 䨪, ॡ㥬  ८ࠧ   䨪.
    ᯮ  ⥣   ꥪ ࠭  ᮡ⢥
  㭪樨,   ᮧ ࠡᯮᮡ ᪨
ਫ.

    ᯮ짮 । ᮢ

    ⥪ ।⠢ ஬ ।⠢  ᮢ  
ᮤন ।⢠ ᮢ: ࠭, ,   , 
ᯮ  ᮢ ⥪  䨪.     
⥪ ।⠢,    ਡ⠬ ⥪饣 ࠭,
⠪  梥, ⨫ (뢭,   . .) ⮫騭.  
 ,    ਡ⠬ ⥪饩 , ⠪ 
蠡   梥.    ⥪  ⥪ ।⠢,
   ⮬ (Modern, Roman, Swiss  . .), ࠧ஬  ⨫
(ᨢ, 뤥  . .) ⥪饣 ।⢠ .  ᮤন
 㯭    梥⮢.
    ⥪ ।⠢ ᮤন     ⨯ ।
ᮢ.  祭 ⥪ ।⠢ ᮤন ⠭
।⢠: ⮭  ࠭, 뢭  , ⥬ 
 ⠭ . ᫨  㤮⢮७ ⨬ ।⢠,   㦭
 ஢.
       ⠭ ।    ਯ
  ।⢠     ⥪ ।⠢.  
롨ࠥ, ਬ,  ࠭, 롮 ண ࠭ ⮬᪨
㤠.  ४㥬  ࠭ ।騥 ।⢠  롨 
 ᫥ ᯮ짮  ।⢠:

    {
      HPEN NewPen, OldPen;
      HDC  TheDC;

      // ᮧ ࠭  ⮫騭 10
      NewPen = CreatePen(PS_SOLID, 10, RGB(0,0,0));
      TheDC = GetDC(AWindow->HWindow);
      OldPen = SelectObject(TheDC, NewPen);

      // 믮 ᮢ
      SelectObject(TheDC, OldPen);
      ReleaseDC(AWindow->HWindow, TheDC);
      DeleteObject(NewPen);
    }

       ⮬ ਬ,  ।⢠ ᮢ ᮧ, 
᫥ 㭨⮦.  ⥪⠬ ।⠢  
⠬, ࠭塞묨   Windows. ⢨ 㤠  뢠
     ᡮ. ,  ⥪⠬ ।⠢
  ࠭ ਯ । ᮢ  ६ ⨯ HPEN,
HBRUSH, HFONT  HPALETTE.
    㭪 Windows DeleteObject 㤠 ।⢠ ᮢ  
Windows.  㤠 ।⢠ ᮢ, 騥 ࠭묨  
  ⥪ ।⠢!
     ⥪ ।⠢ ६   ⮫쪮 
࠭    ⨯ ।⢠ ᮢ,   ࠭
㯭 ।⢠ ᮢ.  ᥣ 㤠  । ४饭
ࠡ 襣 ਫ.  室, ᯮ㥬  ਬ   3,
⮨  ।   , 뢠饩 ThePen, 
࠭ ਯ ⥪饣 ।⢠ ࠭.  짮⥫
롨ࠥ  ⨫ ࠭,  ।⢮ ࠭ ᮧ, 
஥ 㤠. ᫥ ࠭ 㤠    .
   㤠 ⠭ ।⢠, ।⠢塞  
祭 ⥪⮬ ।⠢.
      ᯮᮡ  ਯ  । ᮢ. 
 室 ⮨  ᯮ짮 ୠ⨢  ।,
 ᫥   18.1.
     ⠭ 饣 ।⢠  ꥪ ⥪ ।⠢
ᯮ 㭪樨- SetStockPen, SetStockBrush, SetStockFont 
SetStockPalette. ਬ,

    ThePen = GetStockObject(BLACK_PEN);

     㤠 騥 ।⢠   Windows,    
 ᮡ⢥ ।.
      室 饣 ।⢠  묨 ਡ⠬.
ਬ,  騥 ࠭ ந ⮭ ,   
 ⮫ .  ⮬ 砥     ᮧ
஢ । ᮢ.   ⮨  맮 㭪権
Windows CreatePen, CreateFont, CreateSolidBrush  CreateDIBPatternBrush.
 㭪樨 ᯮ ࠬ, 뢠騥  ।⢮, 
 ਯ ।,   ᯮ짮  맮
SelectObject.
    㣮  ᮧ ஢ । ⮨  ஥
ᠭ ਡ⮢ ।⢠, 뢠饣 ᪨ ।⢮. ᪮
।⢮ 頥 ࠬ  Windows LOGPEN, LOGBRUSH, LOGFONT 
LOGPALETTE. ਬ, LOGPEN  , ᮤঠ騥 ⮫騭, 梥  ⨫.
  ⠭   ᪮ ।⢠,  
।   ⢥ ࠬ  CreatePenIndirect, CreateBrushIndirect,
CreateFontIndirect  CreatePalette.  㭪樨  ਯ
।,   ᯮ짮  맮 SelectObject.  ਬ
⠭ 梥 ࠭ ⥪ ।⠢  ᨭ:

    void SampleWindow::ChangePenToBlue()
    {
      LOGPEN ALogPen;
      HPEN ThePen;

      ALogPen.lopnColor = RGB(0, 0, 255);
      ALogPen.lopnStyle = PS_SOLID;
      ALogPen.lopnWidth.X = 0;
      ALogPen.lopnWidth.Y = 0;
      ThePen = CreatePenIndirect(&ALogPen);
      SelectObject(TheDC, ThePen);
    }

         㭪樨 ᮢ GDI

     ࠣ 뢠 맮 ࠧ 㭪権 GDI,   
ᯮ짮  ᮢ  .

    ᮢ ⥪

    㭪樨 GDI  ᮢ ⥪ ᯮ ⥪騩  
⥪ ।⠢. TextOut  ⥪   窨. 
ᨬ  祭 䫠 ⥪饣 ଠ஢ ⥪ TextOut
ࠢ ⥪. ⠭  ࠢ ᫥. 饥
ࠢ   祭   GetTextAlign  ⠭ 
 SetTextAlign.
    TextOut    ᯮ㥬 㭪 ᮢ ⥪.
ᯮ ⠭  䫠 ଠ஢ ⥪, ᫥
㭪- Paint  ᨢ ᨬ  ࠢ ᫥ 
न (10,15) 짮⥫᪮  .

    void TMyWindow::Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo)
    {
      char MyTextString[20];

      strcpy(MyTextString, "Hello, World");
      TextOut(PaintDC, 10, 15, MyTextString, strlen(MyTextString));
    }

. 18.3   ࠡ 㭪樨 TextOut

    ᮢ 

    㭪樨 GDI, 騥 , ᯮ  ᮢ ⥪騩 ࠭
 ⥪ ।⠢. 設⢮   
ᯮ짮 㭪権 MoveTo  LineTo.  㭪樨   ਡ
⥪ ।⠢, 뢠 ⥪饩 樥. ᫨ ᯮ짮
  ᮢ 窮  㬠,  ⥪  㤥
窮,  窠 ᠥ 㬠.

    Move To  LineTo

    MoveTo ६頥 ⥪    न. 㭪 LineTo
 , ᯮ ࠭, 稭  ⥪饩 樨,  
न,    .  न ⥬ ⠭ ⥪饩
樥.  㭪- Paint    (100,150) 
(10,15):

    void TMyWindow::Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo) {
      MoveTo(PaintDC, 100, 150);
      LineTo(PaintDC, 10, 15);
    }

. 18.4   ࠡ 㭪樨 LineTo

    Polyline

    㭪 Polyline   , ᮥ  窠.  
ࢮ砫쭮 맮 MoveTo  ᫥ 맮 㭪権 LineTo; ,
Polyline 믮    ॥     ⥪
 ࠭.  㭪- Paint  ࠢ 
㣮.

    void TMyWindow::Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo) {
      POINT Points[3];

      Points[0].x = 10;
      Points[0].y = 15;
      Points[1].x = 10;
      Points[1].y = 150;
      Points[2].x = 100;
      Points[2].y = 150;
      Polyline(PaintDC, Points, 3);
    }

. 18.4   ࠡ 㭪樨 Polyline

    Arc

    㭪 Arc    ਬ , ࠭祭 
אַ㣮쭨. 㣠 稭  祭 ࠭   ,
室饩  業 ࠭稢饣 אַ㣮쭨   砫
. 㣠  ⨢ ᮢ ५  窨 祭 ࠭
  , 室饩  業     .
     㭪- Paint  뤥 梥⮬  
  ࠭稢饣 אַ㣮쭨  न⠬ (10,10),
(40,40), 砫쭮 窮 (0,0)  筮 窮 (50,0). 㣠 ,
 ᫨  砫   窨    㣥.

    void TMyWindow::Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo) {
      Arc(PaintDC, 10, 10, 40, 40, 50, 0, 0, 0);
    }

. 18.6   ࠡ 㭪樨 Arc

    Arc    ⥪ .

    ᮢ 

    㭪樨 GDI, 騥 , ᯮ ⥪騩 ࠭ 
⥪ ।⠢  ᮢ ਬ  ⥪  
 ७ ࠭⢠.     ⥪ .

    Rectangle

    Rectangle  אַ㣮쭨   孥 㣫  ࠢ
. ਬ, ᫥饥 ⢥ত  㭪樨- Paint 
אַ㣮쭨  (10,15)  (100,150).

    Rectangle(PaintDC, 10, 15, 100, 150);

. 18.7   ࠡ 㭪樨 Rectangle

    RoundRect

    RoundRect  אַ㣮쭨  㣫묨 㣫. 㣫
㣫 ।  ⢥ . ਬ, ᫥饥 ⢥ত 
㭪樨- Paint  אַ㣮쭨  (10,15)  (100,150), 㣫
ண  ⢥ﬨ   ਭ 9  ⮩ 11.

    RoundRect(PaintDC, 10, 15, 100, 150, 9, 11);

. 18.8   ࠡ 㭪樨 RoundRect

    Ellipse

    Ellipse  , । ࠭稢騬 אַ㣮쭨.
騩 ਬ    אַ㣮쭨  (10,15) 
(100,150).

    Ellipse(PaintDC, 10, 50, 100, 150);

. 18.9   ࠡ 㭪樨 Ellipse

    Pie  Chord

    Pie  Chord  ⪨ .      㭪樨
Arc. , Pie  Chord ᮧ . 㭪 Pie ᮥ 業 
 栬 㣨.  㭪 Pie   ⢥ 㣠 
࠭稢饣 אַ㣮쭨 (10,10), (40,40).

    Pie(PaintDC, 10, 10, 40, 40, 50, 0, 0, 0);

. 18.10   ࠡ 㭪樨 Pie

    㭪 Chord ᮥ   㣨.

    Chord(PaintDC, 10, 10, 40, 40, 50, 0, 0, 0);

. 18.11   ࠡ 㭪樨 Chord

    Polygon

    Polygon  ᫥⥫ ᥣ   㭪樨 Polyline
 ᪫祭 ⮣,  㭪 Polygon 몠  ᮥ
᫥  窨  ࢮ  窮.  
㣮쭨   ⥪饩 .  㭪- Paint
 ࠢ 㣮쭨.

    void TMyWindow::Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo)
    {
      POINT Points[3];

      Points[0].x = 10;
      Points[0].y = 15;
      Points[1].x = 10;
      Points[1].y = 150;
      Points[2].x = 100;
      Points[2].y = 150;
      Polygon(PaintDC, Points, 3);
    }

. 18.12   ࠡ 㭪樨 Polygon

         ᯮ짮 

     ⨯  ன ⮡ࠦ  
।⠢  梥⮢,  ⮫쪮 ᪮쪮 ࠧ. ⥬ 
䨧᪠   㯯   梥⮢,    
  ६ ।⠢  ன⢥. Windows 
襬 ਫ 筮 ࠢ ⥬,  梥 ᯮ짮 
⥪饩 . ᫨  ਫ ᯮ ⮫쪮  梥, 
 㦭 אַ ᯮ짮 .
    , 䨪 ⥬     ᮢ 
࠭,   㣨 ਫ. 䨪  ਫ
ᤥ ४묨 梥  ⠫.   Windows 蠥
 ஡   ।⢠  ਫﬨ, 騬
 ⥬ . Windows ।⠢  ਫ
 ,   㯯 梥⮢, 室
ਫ.   ८ࠧ ॡ㥬 梥  ᪮
  㯭 梥  ⥬ . ᫨ ॡ㥬 梥 
᫥  ⥬ ,     梥 
⥬ . ᫨  ⥬   ⠫ ᢮
࠭⢠, ⥫ 梥 ਢ  ᮮ⢥⢨  
 㯭 梥⮬  ⥬ .
     ਫ ⠭ ⨢,  砥 
 ⥬  梥⠬  ᢮ ᪮ . 
⢨   梥,  ᪨ ࠬ 㣨
ਫ.    Windows १ࢨ 20 ﭭ 梥⮢ 
⥬   饣 ࠭ 梥⮢ 奬  ਫ 
ᮡ⢥ Windows.

    ⠭ 

     ࠭蠬  , ᠭ  ࠣ "।⢠
ᮢ", ᪨   ।⢠ ᮢ.  ᮧ
᪮  ᯮ CreatePalette,  頥 ਯ
᪮ ,    । 㭪樨 SelectPalette 
롮   ⥪ ।⠢.   । 㪠⥫ 
 LOGPALETTE  CreatePalette.  LOGPALETTE ᮤন
ଠ   ᨢ ⮢ .   
 ன PALETTEENTRY,      
梥 (peRed, peGreen  peBlue)    䫠 (peFlags). 騩
ਬ ᮧ ⠭ , ᮤঠ 20 梥⮢,  ᥣ
।⠢  ⥬ :

    GetStockObject(DEFAULT_PALETTE);

    ᫥ ⮣,  ਫ ࠫ ᢮   ⥪
।⠢, ᯮ SelectPalette,   "ॠ" 
। ᯮ짮 .     㭪樨 Windows
RealizePalette:

    ThePalette = CreatePalette(&ALogPalette);
    SelectPalette(TheDC, ThePalette, 0);
    RealizePalette(TheDC);

    RealizePalette 頥 梥  ᪮  襣 ਫ 
⥬  ன⢠. 砫 Windows ࠥ 梥, 㦥
室騥  ⥬ ,  ⥬   梥  ⥬
   ,   ௠ ᢮ ࠭⢮. ,
梥⠬,  稢訬  梥⮢  ⥬ , 
  梥, 騥  ⥬ .
     ਫ  ॠ ᢮  । ᮢ 
 ⢥ 롮 㣮 ।⢠ ᮢ.

    ᮢ   

       ॠ,   ᮢ, ᯮ  梥.
   梥  אַ  ᢥ.  אַ 
梥  ᯮ   COLORREF.   COLORREF
 祭 ⨯ DWORD  訬 ⮬, ⠭  1  ᮬ
 ᪮     . ਬ, 0x01000009
    ᪮ .  祭 
ᯮ짮 ,  । 㬥 COLORREF. ਬ,

    ALogPen.lopnColor = 0x01000009;

    ᫨  ன⢮ ⮡ࠦ ᪠  24- ⮢ 梥 
⥬ ன, ᯮ짮   譥 ࠭稢
 梥⠬ 襩 ᪮ .  ⮣, ⮡  
࠭祭,    梥  ᢥ, ⭮⥫쭮
祭  COLORREF.  祭   RGB COLORREF 
᪫祭 ⮣,  訩  ⠭  2. 訥  
ᮤঠ RGB 祭 梥. ਬ, 0x020000FF 㤥 
⭮⥫쭮 祭  COLORREF  ⮣ ᭮ 梥. ᫨
ன⢮ ন ⥬ , Windows 㤥  RGB
ଠ樨   梥  ࠭ ᪮ ; ᫨
ன⢮  ন ⥬ , COLORREF ᯮ, 
᫨  뫮   RGB 祭.

      ࠬ

      맢 㭪 GetPaletteEntries  祭 ଠ樨 
. GetPaletteEntries   ᨢ  PALETTEENTRY
⠬ .  ࢮ    ᫮ 頥
⮢ ⠪   맮 GetPaletteEntries.

    䨪 

        ᪮  맮 㭪樨
SetPaletteEntries  AnimatePalette. SetPaletteEntries ᯮ  
㬥,   GetPaletteEntries,     
, 㪠 쨬 㬥⮬. ⨬,    
⮡ࠦ  ⥬ ,   㤥 맢 㭪
RealizePalette,    ,   㤥 ᮢ
짮⥫᪠ . AnimatePalette ᯮ   㬥,  
SetPaletteEntries,  ᯮ,  ਫ   
 ᤥ    묨.  뢠
AnimatePalette,     peFlags, ⠭  ⠭
PC_RESERVED,   ᮮ⢥騬 묨 ⠬  
८ࠧ  ⥬ . ⠫   .
    ਬ,      ⮢ , 
 祭, 㢥稢    㬥 ᨭ  
,  ⥬ ᤥ  㯨訬  ᨫ (ࠧ㬥
 , 騥 PC_RESERVED):

    GetObject(ThePalette, sizeof (NumEntries), &NumEntries);
    if (NumEntries >= 10) {
      GetPaletteEntries(ThePalette, 0, 10, &PaletteEntries);
      for (int i = 0; i <= 9; ++i)
      {
        PaletteEntries[i].peRed = PaletteEntries[i].peRed + 40;
        PaletteEntries[i].peGreen = PaletteEntries[i].peGreen - 40;
        PaletteEntries[i].peBlue = PaletteEntries[i].peBlue - 40;
      }
      AnimatePalette(ThePalette, 0, 10, &PaletteEntries);
    }

     AnimatePalette   ᯮ짮

    SetPaletteEntries(ThePalette, 0, 10, &PaletteEntries);
    RealizePalette(ThePalette);

 ⥬ ᮢ   ⮣, ⮡ 㢨  梥⮢.

       

      砥 ᮮ饭 WM_PALETTECHANGED,  , 
⨢   ⥬  ॠ樥 ᢮ ᪮
. 稢襥 ᮮ饭   ॠ஢ ६ ᯮᮡ:

*   祣   (  ਢ  ४⭮ 梥⮢).
*   ॠ ᢮    ᮢ ᥡ (
쭮 ,  梥  ⮫쪮 ४, ᪮쪮 
).
*   ॠ ᢮   ⥬ 맢 㭪 UpdateColors
 ண  짮⥫᪮   ᯮ짮 ⥬
.

    UpdateColors 筮 ࠡ⠥ ॥, 祬 ᮢ 짮⥫᪮
,    ᯮ짮      筮
梥⮢.
     WParam  ᮮ饭 WM_PALETTECHANGED ᮤন ਯ ,
ॠ襣 . ᫨   ⢥ ॠ樨 ॠ ᢮
 ,    ᮧ ᪮筮 横,
㡥  砫,   ਯ   ਯ஬ 襣
.
    ਫ PALETTE.APP, 室饥  ४ਨ EXAMPLES, ᮧ 
ॠ    ᥬ 梥⠬  .   
饫箪   ,     梥.  
 饫箪 ࠢ  ,  頥 梥  ᪮ .
  COLORREF ᯮ ⠪,   ᪠ 
,   ᮢ뢠,  梥  . 
PALETTEINDEX ᯮ  ᮧ   COLORREF.




     19

           

    設⢮ ணࠬ Windows 㤮  ᯮ짮, ⠪  
।⠢ ⠭ 䥩  짮⥫. ਬ, 設⢮
ணࠬ Windows ᯮ   ⮣, ⮡   믮
 ணࠬ,   , ⮡  㪠⥫ 
।⠢ ப ࠧ ।, , ਬ, ५ 
 ᮢ.
         ਬ ᮢ ணࠬ Windows.  
, ࠭  믮塞 䠩 ணࠬ (.EXE), ⤥ 
筮 ᥣ  ணࠬ.  ࠧࠡ뢠   
⥪ ணࠬ,  ⥬   ᪮஢ ணࠬ 
ᮧ 믮塞 䠩 ணࠬ.
      ᮧ  ᯮ㥬  :

* 
*  
* ⮣ࠬ
* 
*  ᥫ
* ⮢ ⮡ࠦ
*  ப

    筮 Windows ⠢   ᪥,  㦠 ਫ 
,   室 㦠 ⤥   ६ 믮
ணࠬ. ஬  ⮢ ⮡ࠦ, Windows 㤠  
,    㦤  . ᫨   㧨 
 㧪 ணࠬ    㤠   ,   
  ਡ.

          ᮢ

      ᮧ    । ᮢ 
 ᮢ. Borland C++ ন  ⮤, ⠪  
   室騩 ᯮᮡ.  設⢥ 砥 
ᯮ짮 । ᮢ  㠫쭮 ᮧ . ,
 㤮 ᯮ짮  ᮢ  樨 䠩
ᠭ ᮢ,  ।⠢    ୠ.
     ᨬ  ᯮ㥬 室  筮 ᮧ 䠩
ᮢ (.RES)   ਫ.  䠩 ᮢ ᮤন
 ଠ   , , ⮢ ⮡ࠦ  㣨
ᮢ, ᯮ㥬 訬 ਫ.
     䠩 ᮢ (.RES)   襬 믮塞 䠩
(.EXE)    ᮢ,  ᠭ   ⮩ . 
 ⠪   ணࠬ 㧪 ᮢ  .  
 㦠   ⤥쭮.  ணࠬ 㤥 ᯮ짮
 ⮫쪮  室    . 㧪 ᮢ 
 ᠭ  ⮩ .

          ᮢ  믮塞 䠩

       ࠭  ୮ ଠ  䠩 .RES, 
 㤥    믮塞 䠩 ணࠬ (.EXE). 
१  䠩, ᮤঠ騩 ᪮஢ ணࠬ
ਫ,  ⠪  .
      ᯮᮡ    믮塞 䠩:

* ᯮ짮 । ᮢ  ஢ ᮢ  䠩 .RES 
㦥 ᪮஢ 䠩 ணࠬ .EXE.
* ᯮ짮  ᮢ (RC)    ᫥饬 ࠣ
 ⮣, ⮡ ᪮஢   䠩 .RES  㦥 ᪮஢
䠩 ணࠬ .EXE.

         ᯮ짮  ᮢ

     ࠣ 뢠 ᯮ짮  ᮢ Microsoft
Resource Compiler  ᮧ 䠩 ᮢ.  ᮢ 
ணࠬ  DOS, ᯮ  室 䠩 ᠭ ᮢ 
  䠩 ᮢ.  ᮢ  ⠪
  אַ  믮塞 䠩.
     ᮢ ᪠  DOS. ଠ  ப 
:

    RC [ࠬ] <.RC 室 䠩> [.EXE १騩 䠩]

    ᪮ 易⥫. ਬ,

    RC SAMPPROG.RC

ᮧ 䠩 SAMPPROG.RES  室 䠩 ᠭ SAMPPROG.RC 
  אַ  䠩 SAMPPROG.EXE,  騥 .
      砥 ணࠬ SAMPPROG.CPP  몥 C++   
ᥡ   㧪 ᮢ  .
    ⨬ ࠬ  ப  ᮢ ।⠢
 ᫥饩 ⠡.

 19.1  ࠬ  ப  ᮢ

ࠬ   祭
---------------------------------------------------------------------------
 -r         .RES 䠩
 -l         ਫ, ᯮ饥 LIM 3.2 EMS
 -e         ࠩ, ᯮ騩 EMS 
 -m        ⠭ 䫠 ୮
 -p         ⥪ ⨯ private
 -t         ਫ ⮫쪮  饭 ०
 -v        ଠ⨢ ० ( ᮮ饭  室 믮)
 -d        । 䨪
 -fo       २ .RES 䠩
 -fe       २ .EXE 䠩
 -i           ᪠ INCLUDE
 -x        ஢ ६ । INCLUDE
 -k        ࠭ ᥣ  浪 .DEF 䠩 ( ஢ ᥣ
            ன 㧪)

     ᠭ  ᮢ

    室 䠩 ᠭ .RC  ⥪⮢ । ᮢ, ஥
㤥 ᪮஢   ଠ. ᠭ ᮢ  ᯮ짮
ଠ  ᮢ  ᠭ ணࠬ.  ⮣, ⮡
ਢ ᠭ 몠 ᠭ  ᮢ,  ਢ
᪮쪮 ਬ஢,     室   樨
 ।஢ 䠩 ᠭ. ,   設⢥ 砥 
ᯮ짮 । ᮢ  ᮧ ᫮ ᮢ.  
⠪ ஢ 䠩 ᠭ אַ  । ᮢ.
    騩 ਬ ।⠢  䠩 ᠭ SAMPPROG.RC.

    ; DAMPPROG.RC -- ਬ 䠩 ᠭ ᮢ.
    ;             --  ᠭ  ᯮ짮 ᮢ
    ;                ⮣ࠬ, ப,     Windows.
    ;             --  ᠭ  ஢  
    ;                 ᮢ,  ⥬   ணࠬ
    ;                C++   ४⨢  ᮢ.

    ; 砥 䠩   । ⠭:
    #include <windows.h>
    #include <owlrc.h>
    #include <sampprog.h>

    ; । ⮣ࠬ  ⤥ 䠩
    SampleIcon ICON sample.ico

    ; ப  । ᫥  ᨬ쭮
    STRINGTABLE
    BEGIN
      IDS_NOPROGRM, "Program unavailable"
      IDS_INVALID, "Invalid entry"
      IDS_FATAL, "Fatal error!"
    ;  .
    ;  .   㣨 ப
    ;  .
    END

    ;  ।   짮⥫
    SampleMenu MENU
    BEGIN
      POPUP "&File"
        BEGIN
          MENUITEM "&New..\tCtrl+N",        CM_FILENEW
          MENUITEM "&Open..\tCtrl+O",       CM_FILEOPEN
          MENUITEM "&Save..\tCtrl+S",       CM_FILESAVE
          MENUITEM SEPARATOR
          MENUITEM "&Print \tCtrl+P",       CM_FILEPRINT
        END
      POPUP "&Edit"
        BEGIN
          MENUITEM "&Undo \tAlt+BkSp",      CM_EDITUNDO
          MENUITEM SEPARATOR
          MENUITEM "&Cut \tShift+Del",      CM_EDITCUT
          MENUITEM "&Copy \tIns",           CM_EDITCOPY
          MENUITEM "&Paste \tShift+Ins",    CM_EDITPASTE
          MENUITEM "&Delete \tDel",         CM_EDITDELETE
          MENUITEM "&Clear All \tCtrl+Del", CM_EDITCLEAR
        END
      POPUP "&View"
        BEGIN
          MENUITEM "Summary \tF2",          CM_VIEWSUMMARY
          MENUITEM "Graph \tF3",            CM_VIEWGRAPH
        END
    END

    ; ᥫ ।⠢ "稥 "  , 
    SampleAccelerators ACCELERATORS
    BEGIN
      "^n", CM_FILENEW
      "^o", CM_FILEOPEN
      "^s", CM_FILESAVE
      "^p", CM_FILEPRINT
      VK_DELETE, CM_EDITCUT, VIRTKEY, SHIFT
      VK_INSERT, CM_EDITCOPY, VIRTKEY
      VK_INSERT, CM_EDITPASTE, VIRTKEY, SHIFT
      VK_DELETE, CM_EDITDELETE, VIRTKEY
      VK_DELETE, CM_EDITCLEAR, VIRTKEY, CONTROL
      VK_BACK, CM_EDITUNDO, VIRTKEY, ALT
      VK_F2, CM_VIEWSUMMARY, VIRTKEY
      VK_F3, CM_VIEWGRAPH, VIRTKEY
    END

    ;   ।⠢ ଠ  짮⥫
    AboutBox DIALOG 20, 20, 160, 80
    CAPTION "About SAMPPROG"
    STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
    FONT 8, "Helv"
    BEGIN
      CTEXT "Sample Program"           -1,   0,  10, 160,  10
      CTEXT "Written in ObjectWindows" -1,   0,  26, 160,  10
      CTEXT "for Windows 3.0"          -1,   0,  36, 160,  10
      ICON  "SAMPLE_ICON"              -1,   8,   8,   0,   0
      DEFPUSHBUTTON "OK",            IDOK,  60,  56,  40,  14
    END

    FileOpen DIALOG 20, 20, 204, 124
    CAPTION "File Open"
    STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
    FONT 8, "Helv"
    BEGIN
      LTEXT    "File&name:",    -1,   6,   8,  36,  10
      EDITTEXT                 100,  42,   6,  98,  12, ES_AUTOHSCROLL
      LTEXT    "Directory:",    -1,   6,  20,  36,  10
      LTEXT    ""              101,  42,  20,  98,  10
      LTEXT    "&Files:",       -1,   6,  32,  64,  10
      LISTBOX  102, 6, 44, 64, 82, WS_TABSTOP | WS_VSCROLL | LBS_SORT
      LTEXT    "&Directories:", -1,  76,  32,  64,  10
      LISTBOX  103, 76, 44, 64, 82, WS_TABSTOP | WS_VSCROLL | LBS_SORT
      DEFPUSHBUTTON "OK",         IDOK, 146,  24,  50,  14
      PUSHBUTTON    "Cancel", IDCANCEL, 146,  24,  50,  14
    END

      SAMPPROG.H ᮤন । ⠭ C-⨫. 
।⠢ ⨯ 䠩 :

    /* SAMPPROG.H -- 䠩   ⠭⠬  SAMPPROG.RC */
    #define IDS_NOPROGRM      601
    #define IDS_INVALID       602
    #define IDS_FATAL         603

    #define CM_FILENEW        701
    #define CM_FILESAVE       702
    /*
       .
       .  㪠 ⠫ ⠭
       .
    */

      ࠡ  ஬ ᮢ

     ।⠢ ᯨ᮪ 砭   ணࠬ஢ ᠭ
 ᮢ:

    1. ਨ 稭  窨  ⮩ (;)  த  
ப    /*  */.
    2.  ᮢ  ⢨⥫  ॣ 㪢 祢 ᫮,
⠪  BEGIN, END.
    3.  ᮢ ⢨⥫  ॣ 㪢 
䨪஢, ⠪  CM_FILENEW, AboutBox.
    4.  ᮢ ⢨⥫  ᯮ짮 ஡.
    5.  祭 䠩   ⠭⠬, । 
 #define,   ᯮ짮 ४⨢ #include.
    6.   ᯮ짮 ४⨢ rcinclude  祭 㣨
䠩 ᠭ ᮢ (*.RC  *.DLG); ਬ,  祭 䠩
  ObjectWindows.
    7.  䨪    䨪 ப 
 㭨.
    8.    묨.
    9.    ࠢ ⮢  ᥭ (&) 㪠뢠
ணࠬ ભ ᫥騩 ᨬ. ભ ࠢ騩 
     㯥     Alt 
ભ⮩ 㪢.
    10.  ⮢  ⥪ \t  ᨬ ⠡樨 
ࠢ ⥪.   ᯮ  ࠢ 
  .
    11. 稥   ।  ⠡ ᥫ஢.
    12. ࠢ騥 , ⠪   ⥪,   
⠭ 㯭묨  ࠢ ணࠬ, 筮  䨪
-1.
    13. ⮯   ࠢ ⮢ । 
浪  ࠭, , ਭ, .
    14.  ,   ࠢ騥  , ⠪ 
 ப⪨, ।㥬   ,  ஢ 
 ⠭ Windows-⨫.      ⮢
 |. ਬ, ࠢ騥    ⨫ WS_CHILD,
WS_TABSTOP  WS_BORDER    WS_CHILD |, WS_TABSTOP | 
WS_BORDER |.
    15.  設⢥ 砥  ᯮ짮 । ᮢ,  
 ᫮ । ᮢ, ᯮ 䠩 ᠭ.
    16.     襬 ਫ 㧪  ᯮ짮
ᮢ.

         㧪 ᮢ  ਫ

    ᫥ ⮣,      믮塞 䠩,   
 㦥 ਫ । ᯮ짮 . ᮡ 㧪 
 ⨯ .

    㧪 

         ਡ⮢  ᮧ. 㣨 ᫮, 
ࠪ⨪ ,     । ᮧ
ᮮ⢥饣   (㭪樥-⮩ Create). ⮬, 
         ࠧ ᫥
஢.   㦠 맮 㭪樨-
AssignMenu (஦ TWindow)  ப 䨪 , 
  ꥪ . ਬ,

    SampleMainWindow::SampleMainWindow(PTWindowsObject AParent,
      LPSTR ATitle) : TWindow(AParent, ATitle)
    {
      AssignMenu(100);
    ...
    }

    AssignMenu 㦠    䨪஬ 100   ꥪ
.    ᨬ쭮  (ப), ⠪  "SampleMenu", 
 ᫥ 䨪.  ⮬ 砥 ।騩 ⥪ ணࠬ 㤥
룫拉 ᫥騬 ࠧ:

    SampleMainWindow::SampleMainWindow(PTWindowsObject AParent,
      LPSTR ATitle) : TWindow(AParent, ATitle)
    {
      AssignMenu("SampleMenu");
    ...
    }

     ஡ ଠ  ᮧ ꥪ⮢     
10 " ꥪ".
     믮 㭪   । 㭪- 
, ஥  , ᯮ ᯥ樠쭮 ७ 
। 㭪樨-  䨪஬ CM_FIRST:

    virtual void HandleMenu101(RTMessage Msg) = [CM_FIRST + 101];

    ⨬,  101  䨪஬ ࠭   (
 ᠬ  ).     㭨 楫
䨪.  ⮩ 㭪樨-  㦭  
ᮮ⢥⢥ ॠ樨  㭪 . 筮  㦭 㤥 ।
ᨬ᪨ ⠭    .

    㧪 ⠡ ᥫ஢

    ᥫ  稥   ।⢠ ⨢ 㯠
, ᯮ㥬  맮  ਫ. 筮 ᥫ
।   㭪⮢ . ਬ,  㤠 
⠭ ᥫ,   ᯮ짮  ⢥
ୠ⨢ 롮     ஢. ᥫ
, , 믮 ,  ᮮ⢥騥 㭪⠬ .
     ᥫ஢ ࠭  ⠡ ᥫ஢.  㧪
⠡ ᥫ஢ ᯮ 㭪 Windows LoadAccelerators, 
頥 ਯ ⠡.  ⫨稥   ,  易 
 ,  ᥫ ⭮  ᥬ ਫ. 
ਫ   ६ ⮫쪮  ⠡ ᥫ஢.
ꥪ ਫ १ࢨ   , HAccTable, 
࠭ ਯ  ᥫ஢. 筮  ᥫ஢
㦠  㭪樨- ꥪ ਫ InitInstance:

    void SampleApplication::InitInstance()
    {
      TApplication::InitInstance();
      HAccTable = LoadAccelerators(GetApplication()->HInstance,
                                   "SampleAccelerators");
    }

     ᥫ  ।  ।⢠ ⨢
㯠  㭪⮢ . ਬ, Shift-Ins 筮 ᯮ 
।⢮ ⨢ 㯠   . 롮 ᥫ
 ᮮ饭, 饥  , 筮 ᮮ饭,
㥬 㭪⮬ .  裡 㭪樨- ॠ樨  롮
㭪   ᮮ⢥饩 襩 ᥫ 㡥, 
।   祭 ᥫ 筮 䨪
㭪 .

    㧪  

       ⢥ ⨯ ᮢ,   אַ
ᮮ⢥騥  ObjectWindows. TDialog   ஦ 
। ꥪ 䥩,  ᯮ   .
 ꥪ   筮 易   ᮬ  ,
   ࠧ, ⮯   ࠢ ⮢,
⠪     ᯨ᪠.
      ꥪ    ஢ 
.    ᮢ   ᥫ஢,    
ᨬ쭮   楫 䨪. ਬ,

    ADlg = new TSampleDialog(this, "AboutBox");



    ADlg = new TSampleDialog(this, 120);

     ஡ ଠ  ᮧ ꥪ⮢  室 
 5 "প ".

    㧪 ஢  ⮣ࠬ

        ᯥ樠 ਡ, 뢠 ਡ⠬
ॣ樨. ।  ਡ⮢    ⮣ࠬ.  ⠭
 ਡ⮢     । 㭪-,
뢠 GetWindowClass (⠪,   㭪, 뢠
GetClassName).
    ਬ, ।,   ᮧ   롮 ⮢ 
 ᯨ᪠.  룫廊  㪠뢠饬   ࠭ 
⢥     "Finger". ஬ ⮣, ।,  
ᮧ  ⮣ࠬ   "SampleIcon",  룫廊 
론饥 .   । 㭪- GetWindowClass
᫥騬 ࠧ:

    void SampleWindow::GetWindowClass(WNDCLASS& AWndClass)
    {
      TWindow::GetWindowClass(AWndClass);
      AWndClass.hCursor = LoadCursor(GetApplication()->HInstance,
                                     "Finger");
      AWndClass.hIcon = LoadIcon(GetApplication()->HInstance,
                                 "SampleIcon");
    }

    ,   ⮣ࠬ  ⫨稥, ஥ ⮨  ⮬, 
    ,  ⮣ࠬ ।⠢ 楫
ਫ. ⮬,  ⠭ ⮣ࠬ ⮫쪮   
.  ਢ  ᪫祭  ࠢ " ⮣ࠬ 
ਫ":

*  ୥  MDI  ਫ, ᯮ饬 ⠭
⨤㬥⠫쭮 䥩 (MDI),  ᮡ⢥ ⮣ࠬ.
*  ᯫ뢠饥   ਫ  ᮡ⢥ ⮣ࠬ.

     ᯮ짮  ஢  ⮣ࠬ Windows 
। 0  ⢥ HInstance  ᯮ 祭 IDC_, ⠪ 
IDC_BEAM,  ஢  祭 IDI_, ⠪  IDI_HAND,  ⮣ࠬ.
ਬ,

    void SampleWindow::GetWindowClass(WNDCLASS& AWndClass)
    {
      TWindow::GetWindowClass(AWndClass);
      AWndClass.hCursor = LoadCursor(NULL, IDC_IBEAM);
      AWndClass.hIcon = LoadIcon(NULL, IDI_HAND);
    }

     ஡ ଠ  ਡ ॣ樨  室 
 10 " ꥪ".

    㧪 ᮢ ப

    ᭮ ᮮࠦ । ப ਫ  ⢥ ᮢ,
 祭 ஢ ਫ  ࠧ ਬ 
ॢ ਫ  㣨 모. ᫨ ப । 
室 ⥪,  㦭 㤥  室 ⥪   
ॢ ப. ᫨   ।  ,  ப ࠭ 
⠡ ப  믮塞 䠩 ਫ.   ᯮ짮
। ப  ॢ ப  ⠡ ப  ⥫⢠ 
室 ⥪.  믮塞 䠩   ⮫쪮  ⠡
ப.
     㧪 ப  ⠡ ப    ᥣ  襣
ਫ ᯮ 㭪 LoadString. LoadString  ᨭ⠪:

    LoadString(GetApplication()->HInstance, StringID, TextItem, MaxChars);

* ࠬ StringID   䨪 ப, ⠪  601, 
⠡ ப.   ᯮ짮 ⠭  ⮣ .
* ࠬ TextItem  ⨯ LPSTR  㪠뢠  .
* ࠬ MaxChars  ᨬ쭮 ᫮ ᨬ  ।  .
ᨬ ࠧ  ப ࠢ 255 ᨬ, ⠪  । 
 256 ᨬ ࠭ 祭 楫 ப.

    LoadString 頥 ᫮ ᨬ, 㥬  ,  ,
᫨   .
      ᯮ짮  ப  ।⠢ ⥪ 
 ᮮ饭. ਬ,   ।⠢ ᮮ饭  訡.
⨬,  । ப "Program unavailable"  ⠡ ப 
। ⠭ ID_NOPRGRM  䨪 ⮩ ப. 
ᯮ짮 ⮣  ப   訡   
᫥ 楤:

    virtual void TestDialog::RunErrorBox(int ErrorNumber) {
      char TextItem[255];

      LoadString(GetApplication()->HInstance, IDS_NOPRGRM, TextItem, 20);
      MessageBox(HWindow, TextItem, "Error", MB_OK | MB_ICONEXCLAMATION);
    }

     ਬ 㦠  ப   訡.  㧪 ᯨ᪠
ப   ᯨ᪠ ᯮ LoadString  祭  ப, 
⥬ AddString      ᯨ᪠.
    ஬ ⮣,  ப  ᯮ짮  ⮢ ,
     室 ⥪ 襩 ணࠬ.  ⮬ 砥
᭠砫   ப   㭪樨 LoadString. ⥬
। ப  ⢥ ࠬ  㭪樨 Windows CreateMenu 
AppendMenu. ਬ,

    SampleWindow::SampleWindow(PTWindowsObject AParent,
      LPSTR ATitle) : TWindow(AParent, ATitle)
    {
      char TextItem[255];

      AssignMenu(100);
      LoadString(GetApplication()->HInstance, 301, TextItem, 20);
      AppendMenu(GetMenu(HWindow), MF_STRING | MF_ENABLED, 501, TextItem);
    }

    㧪 ⮢ ⮡ࠦ

    㭪 LoadBitmap 㦠  ⮢ ⮡ࠦ. LoadBitmap
㦠 ⮢ ⮡ࠦ    頥 ਯ. ਬ,

    HMyBit = LoadBitmap(GetApplication()->HInstance, MAKEINTRESOURCE(501));

㦠  ⮢ ⮡ࠦ  䨪஬ 501  ࠭
ਯ ⮢ ⮡ࠦ  ६ HMyBit.  ⮢
⮡ࠦ 㦥,  ⠥  ,     㤠. 
⫨稥  㣨 ᮢ  㤥 ⠢  ,  ᫨
짮⥫ 㦥  ਫ.
    Windows ।⠢  ।। ⮢ ⮡ࠦ,
 ᯮ   ᪮ 䥩 Windows. 
ਫ  㦠  ⮢ ⮡ࠦ, ⠪ 
OBM_DNARROW, OBM_CLOSE  OBM_ZOOM.  ।। ⮣ࠬ 
ࠬ ।। ⮢ ⮡ࠦ  㦠  
⠭ NULL  GetApplication()->HInstance  맮 LoadBitmap:

    HMyBit = LoadBitmap(NULL, OBM_CLOSE);

     ⮢ ⮡ࠦ 㦥,   ᯮ짮  襬
ਫ ࠧ묨 ᯮᮡ:

*  ᮢ ⨭  ᯫ. ਬ,   㧨
⮢ ⮡ࠦ   About ਫ  ᮢ 㫠
ਫ.
*  ᮧ ,    ᯮ짮   
ᯫ  ᯥ祭 䮭 .   ᮧ , ᯮ
⮢ ⮡ࠦ,     䮭, ਬ,
᪠.
*  ।⠢ 㭪 (  ⥪)  㭪⮢   
।⠢ ⮢   ᯨ᪠. ਬ,   ।⠢
㭮 ५  㭪  ,   ᯮ짮 ⥪  "५".

     ஡ ଠ  ᯮ짮 ⮢ 䨪 
   18 "  GDI".
    ᫨ ⮢ ⮡ࠦ  ᯮ,   㤠  
.  ⨢ 砥,    㤥 㯭 
㣨 ਫ. ᫨   㤠  ᫥ ⮣,  ਫ
稫 ࠡ  ,  㦭 㤠  । ४饭 ࠡ
ਫ.
     ⮢ ⮡ࠦ     㭪樨 Windows
DeleteObject:

    if (DeleteObject(HMyBit)) ...  // ᯥ譮

     ⮢ ⮡ࠦ 㤠, ਯ ⠭ ४
    ᯮ짮.

    ᯮ짮 ⮢ ⮡ࠦ  ᮧ 

      ᯮ짮 ⮢ ⮡ࠦ  ᮧ ⥩,
   ᯫ.     ᯫ
梥⮬    蠡.
     ࠧ ⮢ ⮡ࠦ, ᯮ㥬  ⢥
, ࠢ 8  8 ᥫ. ᫨  ᯮ 襥 ⮢
⮡ࠦ,   ᯮ ⮫쪮  孨 㣮 8  8
ᥫ.
    ⨬,     ᪠,    .
19.1.  ⮣, ⮡ ᤥ ,   ᯮ짮 । ᮢ
 ᮧ 蠡   ᪠,   . 19.2, 
   8  8 ᥫ.   室 ⥪ 襩 ணࠬ
  㧨 ⮢ ⮡ࠦ  ᮧ    .
  楫 ,   ᫥饬 㭪, Windows
 ஢ .

. 19.1    ᪠, 騩  ᯫ

    ⢨⥫쭮 ⮢ ⮡ࠦ  ࠧ ⮫쪮 8  8
ᥫ,    ᯮ짮   ᥣ ᯫ.

. 19.2  ⮢ ⮡ࠦ  ᮧ   蠡,
  . 19.1

    騩 ⥪ ⠭ ⮢ 蠡 :

    void SampleWindow:MakeBrush() {
      LOGBRUSH MyLogBrush;

      HMyBit = LoadBitmap(GetApplication()->HInstance,
                          MAKEINTRESOURCE(502));
      MyLogBrush.lbStyle = BS_PATTERN;
      MyLogBrush.lbHatch = HMyBit;
      TheBrush = CreateBrushIndirect(&MyLogBrush);
    }

     ஢ 蠡 ।⠢   אַ㣮쭨:

    void MyWindow:Paint(HDC PaintDC, PAINTSTRUCT& PaintInfo)
    {
      SelectObject(PaintDC, TheBrush);
      Rectangle(PaintDC, 20, 20, 200, 200);
    }

    ᫥ ⮣,   ᯮ짮 ,   㤠 ⮢
⮡ࠦ  :

    DeleteObject(HMyBit);
    DeleteObject(TheBrush);

    ।⠢ ⮢ ⮡ࠦ  

     ।⠢ ⮢ ⮡ࠦ   ᯮ 㭪
ModifyMenu.   騩 㭪 ⠪, ⮡  ।⠢
⮢ ⮡ࠦ,   ⥪ , ।  㭪  
. ਬ,       :

    SampleWindow::SampleWindow(PTWindowsObject AParent, LPSTR ATitle) :
      TWindow(AParent, ATitle)

      WORD HMyBit; {
      AssignMenu(100);
      HMyBit = LoadBitmap(GetApplication()->HInstance,
                          MakeIntResource(503));
      ModifyMenu(GetMenu(HWindow), 111, MF_BYCOMMAND | MF_BITMAP,
                 211, (LPSTR)HMyBit);
    }

     ᠭ ਬ 111  䨪஬  塞
㭪 ,  211    䨪஬. ,  
ᯮ짮     䨪.

. 19.3  , ᯮ饥 ⮢ ⮡ࠦ  ⢥  
᢮ 㭪⮢


     20

             

      ᭮ ᮮࠦ  ࠧࠡ⪥ ணࠬ ᯥ祭
 Windows  㤮⢮ 祭  ᯮ짮 ணࠬ த⮢.
짮⥫ Windows   த⨢  ࠧ
⮬,  騥  ࠧ ணࠬ 樨 믮   ⥬
 ᯮᮡ. ਬ,  ஢      㭪 
 ।⢠ ⨢ 㯠   ⥪⮢  
ਫ ᮢ. 㣨 ᫮, ᫨  ,  ᯮ짮
 ਫ Windows,  ,  ᯮ짮   ⠫.
     ଠ樨 㪮 ਭ樯 饣 ⨢ 㯠 IBM
ࠧࠡ⠫ ⠭ 䥩ᮢ  짮⥫, 뢠 騩
짮⥫᪨  (CUA). ।砢訥  ਫ 
१権 OS/2 㪮騥 ਭ樯 CUA 室   ਫ Windows
  ந⢥ ⠭⮬.  ࠣ ᭮뢠 
㪮 ਭ樯 CUA, 㡫 IBM.

         ਭ樯 ࠧࠡ⪨

     ᭮묨 楫ﬨ ন CUA ਫ 
ᯥ祭 㢥७ 짮⥫  ᯥ譮 १  ⢨ 
ᯥ祭  짮⥫ ࠢ 室 ᮡ⨩.

    ।⠢ ॠ樨,  짮⥫

    訬 ᯮᮡ ᯥ祭 㢥७ 짮⥫  ᯥ譮
१  ।⠢ ॠ樨 ਫ ᫥⥫묨,
묨 ⮤.  ᮢ⠬, ਢ :

* ᯮ . ᫨    ਫ  ᭮
ணࠬ த,   짮⥫  , , ਬ,
 ⥬ ࠡ  㬥⠬, 짮⥫ 㤥 
 ᭮ 楯㠫  ਫ.
*  ᫥⥫. ਤন ᫥⥫쭮  ࠧࠡ⪥
譥   ᯮ짮 襣 ਫ. ᯮ 騥 
(롮  , 饫窨   ⮣ࠬ  . .)   権.
 ࠭  宦  묨.
*  ०.   ﭨ ਫ,  ஬ 짮⥫
 ࠭祭    ।⢠.   㯮ॡ
 ஢ ⨢ 짮⥫   । ࠢ.
 ᯮ짮 ०  ⪨ ᮮ饭  訡   ६
롮 ।. ਬ,    ࠭讬, 짮⥫
 ᮢ,    ⢫ ஢. ᯮ 㠫쭮
㢥  稨 ०      ⮭
㭪⮢ .

     짮⥫ ࠢ 室 ᮡ⨩

    짮⥫  ᥡ  㢥७, ᫨  ࠢ
ࠢ ⨢.  짮⥫  㢥७ 
ࠢ 室 ᮡ⨩ ᥨ ⠨⢥, 㦠 ୮
ਫ; ணࠬ 砥 ਬ.

* 㠫쭮   롮. ।⠢ 㠫
ᯨ᮪ ⢨,   ।ਭ 짮⥫. 騥
㭪樨- ᮤঠ  ᥡ  ।  梥⮢  
⥩.
* ।⠢  .  ⢨ 짮⥫ 
뢠  १ 㠫쭮  㪮 ⭮ 裡.
*  ᫥.  뢠 짮⥫  ᫥⥫᪨
⢨.    訬 ᯮᮡ 祭 ਫ.
ᯮ  ⬥ ⢨.

         ⠭ 譨   ० ࠡ

    設⢮ ⠭⮢ Windows  譥   ० ࠡ
ਫ 祢  ᬮ७  ணࠬ  ।⠢
ਬ஢ ணࠬ. ਬ,  ਫ ।⠢  
. 窨   饫窨  筮      १ 
ࠧ ਫ.

    饥 ।⠢

* ᯮ  ꥪ-⢨. 筠 ᫥⥫쭮 ᮡ⨩
 ࠡ ਫ ⠪: 짮⥫ 롨ࠥ   ꥪ, 
⥬ 믮   ⢨. ਬ,  ਫ ࠡ⪨ ⥪
짮⥫   ⥪,  ⥬     ࠧ. 
ணࠬ ᮢ 짮⥫   אַ㣮쭨  ६
   ⮯  ࠭.   ᪮쪮 ᯮᮡ
 ꥪ    ᯮᮡ  ⢨, ⠩
ਤন ⮩ 饩 .
* 㬭 롨ࠩ  . ਫ Windows   ।⠢ 
  ᪮쪨 .  ࠧࠡ⪨ ⨬쭮 ᯮ짮
襣 ਫ      ࠧ묨 ⨯  
ᯮᮡ  ᯮ짮.   ⮦⢫ ਫ  㦨
 ᭮.   䠪᪨ ।⠢ ਫ, 
  ⮣ࠬ ਮ⠭ ⢨ ਫ.   ⠪
३  ࠭  ᨬ஢ ﭨ. 㣨 , ⠪
 ᯫ뢠騥    ,  ஦   
१  ⢨  . ᯫ뢠騥   
  ।⠢ ⤥ 㫨 ਫ,   
஢.

    ⢨     

* 뢠 롮 ꥪ.  ꥪ 롨ࠥ   饫窠
,  뤥  㠫쭮, ਬ, 뤥 㣫
אַ㣮쭨   梥  ⮫騭. ⪠ 롮  
ﭭ ⢮  ꥪ. ᫥ ⮣,  짮⥫ ந
⢨  ꥪ⮬, ࠭ 롮.   짮⥫
।ਭ ⥫ ⢨. ࠩ 롮 ꥪ, 
짮⥫ 롨ࠥ - .
*  ࠭稢 㪠⥫ . ⥫   ᢮
६     ਫ  㣮.  ࠭稢  
뢠  ६饭 ᨬ  .  ,  㣮 蠥
䨧   㪠⥫   .
* ᯮ  롮 .  롮  ⬥砥
,  ஥ 㤥 ⢮   . ਬ,
騩 ᨬ ^ ।⠢  롮   ਫ
ࠡ⪨ ⥪.  롮   ᨬ 
㪠⥫ . ,   ᮥ,  ⢫ 饫箪
.
* ⬥砩 䮪 .    窠  ࠭,   
 ਭ     . ਬ, ᫨ 짮⥫
ࠫ 믠饥 ,   砥 䮪 . ᥣ 뤥
㠫쭮 ꥪ, 騥 䮪 . ਬ, ࠭ 㭪 
筮 ᢥ稢  ⨢ 梥,  ࠢ騥   
⮢   祪. ,  짮⥫  
࠭ 㯯 ⮢,  ஢ ⮢ 饩 
 祪, 뢠 ஬.
* ࠡ⪠ ୮ 䥩. ᯮ  ५,
⠡樨   ᥫ  ।⠢ ୠ⨢
짮⥫,  騬    騬 ᯮ짮 .
*  蠩 ᮣ襭  ᯮ짮 饫窮 . Windows
ᯮ । ᮣ襭  饫窠 ,   ⠨ 
.  饬, ᯮ     롮 ꥪ⮢ 
権 ,  ࠢ   㣨 , ਬ,  
०  ।⠢ ᯫ뢠饣 ᯨ᪠ ਠ⮢ 롮.  
  ਤন ᫥ ᮣ襭:

+ 箪 롨ࠥ ꥪ.
+  饫箪 롨ࠥ ꥪ  뢠  ⠭ 
ࠧ㬥騥 ⢨.
+ 箪  ஢   ࠧ   ꥪ  롨ࠥ
 뤥 ⥪.
+ Ctrl  饫箪  ࠭ ꥪ   ࠭ ࠭
ꥪ⮢.
+ Shift  饫箪  ࠭ ࠭ ࠭  ꥪ⮢ 
 ꥪ⮬  ( 类६)  ꥪ⮬,  ஬ ⢫
饫箪 (ਬ, .  䠩 Windows).

    

    Windows 㦥 ।⠢  ⠨  ᮢ襭 ।
⠭  譥  믠 . ,    ன
⥯ ࠢ 롨ࠥ묨  ⨫ﬨ  ॠ㥬묨 
ﬨ.   ᫥  ⥫ ᮣ襭 
⨫, ᫥ :

* ᯮ 㭨   ୮ 㯠  
㭪  孥 ஢  믠饣 .
* ᯮ 稥 (...), ᫥饥  㭪⮬ , 롮 ண
ਢ    .
* ᯮ ⥭ ⨢ 㭪 .
    設⢮ ਫ, ᪨, ᪨, ࠧ⥫,
  , 믮 騩  権  権 
䠩, ।஢  㯠  ⥬ . 室  
ᮮࠦ, CUA । ଠ   , ஢ 
᪠. ஬ ⮣,  । 㪮騥 ਭ樯   ᬮ
 樨. CUA ॡ, ⮡  ᯮ 㭪  孥 ஢ 
᫥饬 浪,  ᪠ ᥣ ᫥ 㭪, ᨬ 
⮣,    㣨  孥 ஢.

. 20.1  ⠭⭠   CUA

    騩 㭮 ࠦ 㭪 , ४ CUA. ⬥⨬
४  ᥫ,   ᫥
 㭪⮢ .

. 20.2  㭪  , ४ CUA

. 20.3  㭪  ஢, ४ CUA

. 20.4  㭪  ᬮ, ४ CUA

. 20.5  㭪  樨, ४ CUA

. 20.6  㭪  ᪠, ४ CUA

          

     ⠪  ᯮᮡ ࠧࠡ⪨  ,  
㫨஢ ⮫쪮 ᪮쪮  㪮 ਭ樯. , 
 ⨫  襣 ਫ  ਤন .   ⨯
 ,   .   
ᯮ짮   , ਮ⠭騩 믮
ணࠬ.   ,   த 믮
 樨 ணࠬ,  ᯮ짮 ⮫쪮  ᮡ 楫 
ࠫ쭮 믮 ⢨, ਬ, ᨭ⠪᪮ ஢ન
㬥.
    CUA । ᮡ ⨫       
࠭ . 騩   ObjectWindows 㤮⢮ ⨬
ॡ.

    㣨 ᮣ襭 ࠧࠡ⪨

* 롨ࠩ 室騩 ࠧ  .    
筮 訬, ⮡ ।⠢ ॡ㥬 ଠ  ᯥ稢
 짮⥫ .
* ⥫쭮 ⭮  ᮢ  .    
ᯮᮡ ᮢ  ᫥   ࠧ.   ᮢ
ᮤঠ  室 ய, ᥪ  , ᫨ 
᫨誮 .  訩 ᯮᮡ  ਫ, ࠡ  ० 
ᮮ⢥⢨ (WYSIWYG).    ଠ஢ ᮤঠ ⠪, 
  ० 㤥 室  ࠭ .  ਠ 
室    ⨫.
* ७ ᯮ 梥.   ९ ⠭
㭨樮   짮⥫.   ᯮ짮
᫥⥫쭮,  짮⥫    ஢
 ᯮ㥬 梥.

         ᠭ  ணࠬ

    ࠡ⪠ 訡  ࠪ⨢ 䥩  짮⥫ ࠧ
 ᫮ , 祬 ࠡ⪠ 訡  ⨫  ப. 
ࠪ⨢ ਫ  ਥ (, ⢥, ),
 訡 맮 뤠 ணࠬ ᮮ饭  訡  ४饭
ணࠬ.  ࠪ⨢ ਠ, , ணࠬ 
⠭ ᫥ 訡  ⠢ 짮⥫  ਥ ﭨ.
  訡, ᨬ   த, ० ଠ, 
ன ࠡ⠥ 짮⥫,  ४ 믮 ணࠬ.
ணࠬ, 㤮⢮ ⨬  ணࠬ஢,  
"".
    ObjectWindows 砥 ᠭ  ணࠬ. ন
⨫ ணࠬ஢,   । 訡 
⠭ ᫥ , ᮡ    㫮 訡 ⨯
"墠⪠ ".     প 楯樨 
権.

     樨

    ୠ   ,     ࠧ 
 쪨 樨. ,  ᪠,  ,  
 ᡮ,   ࠡ뢠. ᯮ짮 
権 ᮡ   ࠡ  ࠧ饭 .
    筮 ணࠬ ࠧ    쪨 ⥩. ਬ,
 ஢ ꥪ    ࠧ頥   
    ⠫ ꥪ⮢, ਭ ⮬  ,
ਬ,  ୨ ࠢ ⮢.    ࠧ饭
⥭樠쭮  ᡮ,    ᡮ ॡ ஢ન,
믮  ᫥饥 ࠧ饭  ⠭. ᫨ - 
ࠧ饭 뫮 ᯥ,  㦭 ᢮  , ࠧ饭
ᯥ譮.    ⥫  ࠧ ,  ⥬ ஢, 
ந襫  ᡮ  - ࠧ饭.  ⮬ 砥 ᯮ
 ᭮.

     ᭮

    ObjectWindows ⠭ 䨪஢ ꥬ , 뢠 
᭮. ⠭ ࠧ 㫠 ᭮ SAFEPOOL.H ।
⠭⮩ DEFAULT_SAFETY_POOL_SIZE  SAFEPOOL.H. ᫨ ࠧ頥  
᪨ ।塞     ᭮,
㭪- ꥪ ਫ LowMemory 頥 祭 TRUE.
 㪠뢠,  쭥訥 ࠧ饭    ਢ 
ᡮ.
     ⮣, ⮡  ᭮  䥪⨢,   
, 祬 襥 ୮ ࠧ饭. 㣨 ᫮,  
 ⮫쪮 訬, ⮡ ᯥ ,   ࠧ饭 
஢ப   LowMemory  ᯥ묨; ⠭ ࠧ 
㤮⢮ 設⢮ ਫ.
    ᫥ ⮣,   ꥪ ਫ ᮧ ᢮   ( 
୨ ),  ஢ ﭨ . , ᫨  ணࠬ
ᮧ     ᪨ ꥪ ᫥ ।⠢
 ,    뢠 堭, ஢騩 ﭨ
.  樨   ᥡ ᮧ   
ᯫ뢠   ⢥ ॠ樨  롮  .  MDI, ,
ᥣ ஢ ﭨ   ᮧ ୨ .
     뢠 㭪- Create אַ   ꥪ⮢ 
, ⠪  Create ᮧ   ஢ન ﭨ :

ࠢ쭮!

    void TMyWindow::CMHelp(RTMessage Msg)
    {
      PTHelpWindow HelpWindow;

      HelpWnd = new THelpWindow(this, "Help");
      HelpWnd -> Create();
    }

     㭪-  ஢ ﭨ :

ࠢ쭮!

    void TMyWindow::CMHelp(RTMessage Msg)
    {
      PTHelpWindow HelpWindow;

      HelpWnd = new THelpWindow(this, "Help");
      if (GetApplication()->MakeWindow(HelpWindow) )
      //  ᯥ譮 ᮧ
    ...
    }

    MakeWindow 頥 㪠⥫  ꥪ   NULL, ᫨ 
ᮧ ந襫 ᡮ.
     ஢ન ﭨ   믮 쭮 
뢠 GetApplication()->ExecDialog,    ᫥饬 ਬ:

ࠢ쭮!

    void TMyWindow::CMRunDialog(RTMessage Msg)
    {
      PTTestDialog TestDialog;
      int RetValue;

      TestDialog = new TTestDialog(this, "Test Dialog");
      RetValue = GetApplication()->ExecDialog(TestDialog);
      if (RetValue == IDCANCEL )
        // ᡮ  ᮧ   ४饭 짮⥫
    ...
    }

     砥 ᯥ ExecDialog 頥 祭  , 筮
  ⥫쭮 楫. ᫨    ᭮ 믮,
ExecDialog 頥 ⠭ 訡 (ᥣ ⥫쭮 楫
祭).
    MakeWindow  ExecDialog ।० ꥪ ਫ  ﭨ
筮    맮 㭪樨- ꥪ ਫ
Error, ।  ⢥ 㬥 ⠭ EM_OUTOFMEMORY.
㭪- Error, । ᮬ TModule, ।⠢ 
ᮮ饭, ।०騩 짮⥫  訡. ObjectWindows
८।   delete  ஢ન 㫠 ᭮
᫥  㤠. ᫨  ᭮ ௠,  delete
⠥ ࠧ , ।⠢ ⮬᪮ ⠭
㫠 ᭮ 直 ࠧ,  ⠪ ⠭ ⭮ 㤥
ᯥ.  ஡ ଠ  㫥 ᭮   
 3 "  ObjectWindows" ࠢ筮 㪮⢠
(Reference Guide) ObjectWindows for C++.

    㣨 訡  ᮧ 

    ஬ ﭨ 筮   㣨 ﭨ, 
  ᮧ  ।⠢  ࠧ   
. ਬ, Windows   믮 ᮧ  䥩
 裡  筮  Windows   裡  ࠢ묨
ਡ⠬ ᮧ.
    訡 ᮧ , ⫨  ﭨ 筮 ,
⮬᪨ ᮮ 㭪ﬨ-⠬ ObjectWindows, ᮧ騬
ꥪ 䥩. TWindowsObject ।   Status ⨯
int,  ᮤন 㫥 祭 ᫥  訡. 
ਢ   ⠭ 訡, । ObjectWindows:

 20.1  祭 訡 ᮧ 

訡                 祭
---------------------------------------------------------------------------
EM_OUTOFMEMORY         饭     ᭮.
EM_INVALIDWINDOW            ᮧ.
EM_INVALIDCLIENT        ꥪ  MDI  ᮧ
                       짮⥫᪮ .
EM_INVALIDCHILD          ᪮쪮 ୨  ꥪ
                       ᣥ஢ 訡.
EM_INVALIDMAINWINDOW        ᮧ.

     ᯨ᮪ ⠭ 訡   祭    ࠣ
"⠭ EM_XXXX"   3 "  ObjectWindows"
ࠢ筮 㪮⢠ (Reference Guide) ObjectWindows for C++.

     ஢ન 訡  ᠭ  ஢  
㭪- ᮧ ⠭ Status ࠢ   
⠭    ᢮ ᮡ⢥ ⠭. ਬ, ᫨ 
 뢠 䠩,  ந襫 ᡮ,   ᮮ  訡 
 ⠭, ⠪  EM_FILEOPENERROR. ᫨ TWindow::Create
頥 FALSE,  TDialog::Execute ⠭ Status  㫥
祭,  뢠 㭪樥 MakeWindow  ExecDialog,
ᮮ⢥⢥, 뢠 㭪- 㤥 ⮬᪨ ᮮ
 訡 㭪樨- Error 襣 ਫ, , 
㬮砭,  뢠 㭪- Error  襣
ਫ.   ८। 㭪- Error  襣
ਫ    ᮮ⢥饩 ࠡ⪨  訡.

    TEditorWindow::TEditorWindow(PTWindowsObject AParent, LPSTR ATitle,
      LPSTR AFileName) : TWindow(AParent, ATitle)
    {
      if ((Status == 0) && !OpenTheFile(AFileName))
        Status = EM_FILEOPENERROR;
    }

    ஢ઠ ॡ⥫ 

       ஢ ﭨ    ॡ⥫,
ਬ, ꥪ⮢ , ࠧ  , 祬 ࠧ 㫠
᭮,  뢠 楫 ᮤঠ 䠩  .
    ᫨ ᭮ ॡ⥫ 㦨 ⮪   ।
஢,   ⠭ ᢮   Status 
祭 訡  ⠭ ⪨ ࠧ   .
  Status ஢ 㭪樥-⮩ MakeWindow,
 ᮮ頥  訡  ᢮ ꥪ .
    祢,   ⠪ 㤮,   ।,  
   ६ ࠡ,   ⢥  ࠢ
஢ , ॢ ࠧ 襣 㫠 ᭮.


