        

    ,   ,    MFC   
,      ,    
    Windows.    
    Windows,   ,   
       
      .  
Windows      .   
     :    .     
     " .   , 
       .    
  ,   . 

    63 

         .  ,     
  ,    . , , ] 
      .      
 Windows. 

      

    ,      .  
     .    
,         
  ,        
   ,    . 
          MessageBoxQ,  
  CWnd.   : 

    int CWnd::MessageBox(LPCSTR IpszText, 
    LPCSTR lpszTitle=WLl,, MINT MBType=MB_OK) ; 

      Ips^Text     ,    < 
.  ipszTifle     .  
    ,     ,  
]   .      
  . 4.1.      AFXWIN.H,   
  MessageBoxQ        
  ,      . 

     4.1.      

    	 

    MBABORTRETRYIGNORE	  Abort, Retry  Ignore 
    MBJCONEXCLAMATION	     
    MBJCONINFORMATION	     "I" 
    MBHAND	    "Stop" 
    MBJCONQUESTION	     
    MBJCONSTOP	 ,   MBHAND 
    MBOK	   
    MBOKCANSEL	    Cansel 
    MBRETRYCANCEL	  Retry  Cansel 
    MBYESNO	  Yes  No 
    MBYESNOCANSEL	  Yes, No  Cansel 


    64 MFC:   

          , 
     .      
(. 4.2): 

     4.2. ,   MessageBox() 

                          

    Abort                           IDABORT 
    Retry                             IDRETRY 
    Ignore                              IDIGNORE 
    Cancel                             IDCANCEL 
    No                             IDNO 
    Yes                             I DYES 
    OK         ______________IDOK________________ 

    ,           
  ,        
  . 
            
MessageBox(). Windows,     .    
       WM_PAINT.   
'    MessageBoxQ.     
 ,     ,  
   . 
              
.     ,    . 

    // MESSBOX.H 
    //       
    class CMainWin : public CFrameWnd 
    { 
    public: 
    CMainWin () ; 
    afx_msg void OnLButtonDown(UINT flags, CPoint loc); 
    afx_msg void OnRButtonDown(UINT flags, CPoint loc); 
    DECLARE_MESSAGE_MAP() 
    ); 
    //      
    class CApp : public CWinApp 
    ( 
    public: 
    BOOL Initlnstance() ; 
    ); 


    4.                                           65 


      : 
    //    
    #include <afxwin.h> 
    #include "messbox.h" 
    CMainWin::CMainWin() 
    ( 
    Create(NULL, "Using Message Boxes"); 
    ) 
    //   
    BOOL CApp::Initlnstance<) 
    1 
    m pMainWnd = new CMainWin; 
    m pMainWnd->ShowWindow(m_nCmdShow) ; 
    m pMainWnd->UpdateWindow (); 
    return TRUE; 
    ( 
    //     
    BEGIN_MESS^GE_MAP (.CMainMin, CFrarne^nd) 
    ON_WM_LBUTTONDOWN() 
    ON_WM_RBUTTONDOWN 0 
    END_MESSAGE_MAP() 
    //      
    afx msg void CMainWin::OnLButtonDown(UINT flags, CPoint loc) 
    { 
    int i; 
    i = MessageBox ("Press One", "Left Button", 
    MB_ABORTRETRYIGNORE) ; 
    swith(i)  ( 
    case IDABORT: 
    MessageBox ("", "Abort"); 
    break; 
    case IDRETRY: 
    MessageBox ("", "Retry"); 
    break; 
    case IDIGNORE: 
    MessageBox ("", "Ignore"); 
    break; 
    \ 
    i 
    //      
    afx_msg void CMainWin::OnRButtonDown(UINT flags, CPoint loc) 
    { 


    66                                      MFC:   


    int i; 
    >    i = MessageBox("Press One", "Right Button", 
    MB__ICONSTOP | MB_YESNO) ; 
    swith(i)  ( 
    case IDYES: 
    MessageBox ("", "Yes"); 
    breaks
    case IDNO: 
    MessageBoxC'", "No"); 
    break; 
    CApp App; //    

            . , 
      ,   . 4.1.  
,     Abort, Retry  Ignore.   
        ,  
 ,    .        
,     "Stop".     
  "Yes"  "No". 

    . 4.1.   


      AfxMessageBox() 

          ,     
 . ,       . 
        .  
    (  )    
   Af\MessageBox().    : 

    int AfxMessageBox(LPSTR IpszText, UINT MBType=MQ_OK, 
    UINT HelpID^O); 

      IpszText    ,   . 
     ,    
.     ,      
MessageBoxQ. 1  HelpID     
,    .   , ,  , 
  . 

    4.                                            67 

    (  Windows   .)  
AfxMessageBox()  ,      .  
     ,  . 
         InitInstanceQ,    
     .      
    .  ,     
    . 

    //   BOOL ::Initlnstance () 
    { 
    //        
AfxMesssaqeBox("This is displayed first."); 
    m_pMainWnd = new CMainWin; 
    m_pMainWnd->ShowWindow(m_nCmdShow) ; 
    m_pMainWnd->UpdateWindow() ; 
    return TRUE; 

    \ 

       ,     
  . 

       

     Windows      . 
,        .  
     ,  Windows  
    .     
     : 
    1.      . 
    2.       . 
    3.     . 
        Windows       
  .      . (  
   ,       Windows-.) 
           ,  
,      . 

      

     Windows        
.  '" "  ,  ,  ,  
,    ,    .   
 , ,     . 
   ,      . 

    68                                     MFC:   

            -   
.        ,  
  RC.        
 -. ,    PROG.EXE,  
    PROG.RC. ,     
   .  ,      
   . 
                
  . ,     
.         
. ,   ,     
    .      
  RC- .  ,    
     ,    
  .  '    
 ,     . 
          , 
  Windows.         AFXRES.H. 

     RC- 

        ,     C++.   
    ,  ,   
    .    
 RC.EXE.     ,   
 .  ,    
     .      
      RES,    
    . 
    :        
 ,       . 

       

               
.      : 

    - MENU [] 1 - 

      -   . (     
,  ,           
   .)  MENU     
,   .       .  
    . 4.3.     
      . 

    4.                                           69 


     4.3.  MENU 

                   

    DISCARDABLEFIXED LOADONCALL MOVEABLE PRELOAD	     
,          
           
     
           : MENUITEM 
    POPUP.  MENUITEM    ,   
    POPUP   ,    ,  ! 
   MENUITEM  POPUP.    : 
    MENUITEM "ItemName", MenuID [,] 
    POPUP "PopupName" [, } 
      ItemName    ,  File  
1] MenuID     ,      
     .     
      ,     
 ,    RC- .  PopupName  
  .        
  . 4.4. 

     4.4. ,    MENU]    POPUP 

                      

    CHECKED GRAYED HELPINACTIVE MENUBARBREAKMENUBREAK	    
    . (     
.)          
.      .    
MENUITEM.     .     
,        .   
  ,        .  
     . ,   MENUBARBREAK,  
   . 
         ,   . 
      MENU1.RC. 


    70                                      MFC:   


    ; MENU1.RC 
    ;   ,    Unclude "ids.h" 
    MYMENU MENU { 
    POPUP "&0ne" 
    ( 
    MENUITEM "&Alpha", IDM_ALPHA 
    MENUITEM "&Beta", IDM_BETA 
    } 
    i     POPUP "&Two" 
    i     I 
    j      MENUITEM "&Gamma", IDM_GAMMA 
    !       POPUP "&Delta" 
    ( 
    MENUITEM "SEpsilon", IDM_EPSILON 
    MENUITEM "SZeta", IDM_ZETA 
    j              ) 
    i       MENUITEM "&Eta", IDM_ETA 
    I       MENUITEM "STheta", IDM_THETA 
    |          > 
    I     MENUITEM "&Help", IDM_HELP 

     ,  MYMENU,     : One, Two 
 Help.  One  Two   .  Delta  
  .  ,      
   .      . 
        ,   
 IDM. (      IDS.H.)  
    . 
          &,   ,  , 
  ,   ,    
. ..    ,    
    .       
. ,      . 

    :      ,  
         ,  
     .     
,        C++. 

      IDS.H,    MENU1.RC,   
,    .    
.   . 

    4.                                           71 


    /'/ IDb.H 
    ^define IDM_ALPHA      100 ^define IDM_BETA       101 
    #define IDM_GAMMA      102 ftdefine IDM_DELTA      103 
    #define IDM_EPSILON    104 ftdefine IDM_ZETA       105 
    #define IDM_ETA        106 
    #define IDM_THETA      107 
    #define IDM_HELP       108 

      ,      
    .     
  ,     . ,  
   ,    ,  
.      .  
    0  65565. 

        

      ,     ,    
  .  ,        
   CreateQ. ,    MYMENL, 
    CreateQ: 

    Create(NULL, "Using Menus", WSJ3VERLAPPEDWINDOW, rectDefault, NULL, "MYMENU"); 

           ,  
.       ,      
. ..   ,   .   
     ,    
 WM_COMMAND,     . 

      WM COMMAND 

     ,    -  , 
   WM_COMMAND.     
  .  ,   WM_COMMAND 
,       ,    
 .      ,  WM_COMMAND 
  ,    MFC.   ,  
    WM_COMMAND    
   ,      
.   Windows-    
    switch-,   ,  
 .  

    72                                      MFC:   

    MFC  ,     
.    ,      
    .   , 
   WM_COMMAND,   . 
      WM_COMMAND    
  ON_COMMAND(),    : 

    ON_COMMAND(ID, HandlerName) 

     ID     , a HandlerName     
 ^. 
       WM_COMMAND     afx_msg  
 void.   ( )   . 
   ,^^ ; _ 
  On     ,     . 

         

           ,  
  : 
    1.        
ON_COMMAND()     . 
    2.        , 
    . 
    3.       . , 
       . 
     ,   
            .  
      .    
   ,  ,   . 
         IDS.H  MENU1.RC,  . 
    MENU.H,    . 

    // MENU.H 
    //       
    ;lass CMainWin : public CFrameWnd. 
    { 
    public: 
    I     CMainWin () ; 
    I     afxJ-nsq void OnLButtonDown (UINT flags, CPoint loc) ; 
    afx_msg void OnRButtonDown(UINT flags, CPoint loc); 
    //    
    afx_msg void OnAlphaO; 


    4.                                           73 


    afx msg void OnBetaO; 
    afx nisg void OnGammaO; 
    afx msg void OnEpsilon(); 
    afx msg void OnZetaO; 
    afx_msg void OnEtaO; 
    afx msg void OnTheta(); 
    afx_msg void OnHelpO; 
    DECLARE_MESSAGE_MAP() 
    }; 
    //      
    class CApp : public CWinApp ( public: 
    BOOL Initlnstance (); 
    }; 

      : 

    //    
    ^include <afxwin.h> 
    #include "menu.h" 
    ^include "ids.h" 
    CMainWin::CMainHin() ( 
    Create(NULL, "Using Menus", WS__OVERLAPPEDWINDOW, 
    rectDefault, NULL, "MYMENU"); 
    } 
    //   
    BOOL CApp::Initlnstance () 
    { 
    m pMainWnd = new CMainWin; 
    m pMainMnd->ShowWindow(m nCmdShow) ; 
    m pMainWnd->UpdateWindow() ; 
    return TRUE; 
    //     
    BEGIN_MESSAGE_MAP(CMainMin, CFrameWnd) 
    ON_WM_LBUTTONDOMN() 
    ON_WM_RBUTTONDOWN() 
    ON_COMMAND(IDM_ALPHA, OnAlpha) 
    ON_COMMAND(IDM_BETA, OnBeta) 
    ON_COMMAND(IDMJ3AMMA, OnGamma) 
    ON_COMMAND(IDM_EPSILON, OnEpsilon) 
    ON_COMMAND(IDM_ZETA, OnZeta) 
    ON_COMMAND(IDM_ETA, OnEta) 
    ON_COMMAND(IDM_THETA, OnTheta) 


    74                                      MFC:   


    ON_COMMAND(IDM_HELP, OnHelp) 
    END_MESSAGE_MAP() 
    //      
    afx msg void CMainWin::OnLButtonDown(UINT flags, CPoint loc) 
    { 
    ink i; 
    i = MessageBox("Press One", "Left Button", 
    MB_ABORTRETRYIGNORE) ; 
    swith(i)   ( 
    case IDABORT: 
    MessageBox("", "Abort"); 
    break; 
    case IDRETRY: 
    MessageBox ("", "Retry"); 
    break; 
    case IDIGNORE: 
    MessageBox ("", "Ignore"); 
    break; 
    //      
    afx msg void CMainWin::OnRButtonDown(UINT flags, CPoint loc) 
    int i; 
    i = MessageBox("Press One", "Right Button", 
    MB_ICONHAND | MB_YESNO) ; 
    swith(i)  { 
    case IDYES: 
    MessageBox ("", "Yes"); 
    break; 
    case IDNO: 
    MessageBox ("", "No"); 
    break; 
    ) 
    //   IDM_ALPHA 
    afx msg void CMainWin::OnAlpha() 
    MessageBox("Alpha", "Alpha") ; 
    ) 
    //   IDM__BETA 
    afx msg void CMainWin::OnBeta() 
    f 
    MessageBox ( "Beta", "Beta") ; 


    4.                                           75 


    //   IDM GAMMA 
    afx_msg void CMainWin::OnGamma() 
    ( 
    MessageBox("Gamma", "Gamma") ; 
    ) 
    //   IDM_EPSILON 
    afx_msq void CMainWin::OnEpsilon() 
    ( 
    MessageBox("Epsilon", "Epsilon") ; 
    i 
    //   IDM_ZETA 
    afx msg void CMainWin : .-OnZeta () 
    ( 
    MessageBox ("Zeta", "Zeta"); 
    } 
    //   IDM ETA 
    afx msg void CMainWin::OnEta() 
    { 
    MessageBox("Eta", "Eta"); 
    t 
    //   IDM__THETA 
    afx msg void CMainWin::OnTheta() 
    { 
    MessageBox ("Theta", "Theta") ; 
    } 
    //   IDM HELP 
    afx msg void CMainWin::OnHelp() 
    ( 
    MessageBox("Menu Demo", "Help"); 
    } 
    CApp App; //    

         . 4.2. 

    76                                      MFC:   


    . 4.2.     


        

     Windows        
 ,     .    
(  ),  .     
   ,         
  .        , 
      - ,   
 ,       . 
        ,   ,    
      .    : 

    - ACCELERATORS ( 
    Keyl, MenuIDl [,} [,] 
    2, MenuID2 [,] [,] 
    ,  [, ] [, ] 
    ] 


    4.                                           77 

      -   .    
   Key, a MenulD    
,.   ,     ( 
 )   (     ).  
     : NOINVERT, ALT, SHIFT  
CONTROL.    NOINVERT,       
       .  ALT ,  
     [ALT]. ,  SHIFT 
    [SHIFT],   CONTROL   [CTRL]. 
     Key      ,  ASCII- ) 
(  ).     ,  , 
'  ASCIT-.    ,     
  ,   ASCII-,     ASCII. 
ECJ   ,        VIRTKEY. 
        Key     ,  
          
   [SHIFT].    ,     
    .       ALT 
     [ALT]. (   
;,'   ALT,       [ALT],  [SHIFT].) 
 .      [CTRL],   
   . 
       - ,  
    .    
   [FI]  [F12],   ,   
He-ASClI-.      AFXRES.H.   
     VK_. ,  
   OTVK_FI  VK_F12.   
      ,   
      Key,      
VIRTKEY.     ALT, SHIFT  CONTROL,   
  .   : 
    "A", IDM  ;    [Shift-A] 
    "", IDM  ;    [] 
    "^", IDM  ;    [Ctrl-a] 
    "a", IDM_x, ALT ;    [Alt-a] 
    VK_F2, IDM_x, VIRTKEY ;    [F2] 
    VK_F2, IDM_x, VIRTKEY, SHIFT ;    [Shift-F2] 
             
      naparpaqic.    MENU2.RC. 

    ; MENU2.RC 
    ;   ,    
    ^include <afxres.h> 


    78                                     MFC:   i 


    1 "ids.h" 
    MYMENU MENU 
    POPUP "&0ne" 
    ( 
    MENUITEM "&Alpha\tF2", IDM_ALPHA 
    MENUITEM "?Beta\tF3", IDM_BETA 
    I     } 
    '     POPUP "STwo" 
    i 
    MENUITEM "&Gamma\tShift-G", IDM_GAMMA 
    1       POPUP "SDelta" 
    ( 
    MENUITEM "SEpsilon\tCntl-E", IDM_EPSILON 
    MENUITEM "&Zeta\tCntl-Z", IDM_ZETA 
    ) 
    MENUITEM "&Eta\tCntl-F4", IDM_ETA 
    MENUITEM "&Theta\tF5", IDM_THETA 
    } 
    MENUITEM "SHelp", IDM_HELP 
    1 
    ;     
    HYMENU ACCELERATORS 
    ( 
    VK_F2, IDM_ALPHA, VIRTKEY 
    VK_F3, IDM_BETA, VIRTKEY 
    "G", IDM_GAMMA, 
    '"E" , IDM_EPSILON, t     ""Z", IDM_ZETA, 
    VK_F4, IDM_ETA, VIRTKEY, CONTROL 
    VK_F5, IDM_THETA, VIRTKEY 
    VK_F1, IDM_HELP, VIRTKEY 
    ) 

     ,        
,        
.          
 .  AFXRES.H   ,    
   . 

    4.                                           79 


        

    ^           
,    ,      ; 
     LoadAccelTableO,     CFrameWnd.  
 : 

    BOOL CFrameWnd: .-LoadAccelTable (LPCSTR IpszName) ; 

      lpszName     .  
          
      . 
     LoadAccelTableO        
     ,    
  .    ,    MYMENI 
   CMainWin: 

    CMainWin::CMainWin() < 
    Create(NULL, "Demonstrate Accelerators", 
    WS_OVERLAPPEDWINDOW, rectDefault, 
    NULL, "MYMENU") ; 
    //     
    iff!LoadAccelTable("MYMENU")) 
    MessageBox ("Cannot Load Accelerators", "Error"); 
    } 

          ,   
            
   MENU2.RC. 

       

              
,      . ,  ,  
 ,        .   
      .   
   - .  ,  
       ,  
        " ". 
   ,     ,   
    ,    . 
          .    
[CTRL-T],          , 
     .    
[CTRL-T]     MENU2.RC.      
 : 

    80                                      MFC:   


    ; MENU2.RC 
    ;   ,    
    ^include <afxres.h> 
    #include "ids.h" 
    MYMENU MENU 
    ( 
    POPUP "&0ne" 
    MENUITEM "&Alpha\tF2", IDM_ALPHA 
    MENUITEM "&Beta\tF3", IDM_BETA 
    } 
    POPUP "&Two" ( 
    MENUITEM "&Gamma\tShift-G", IDM_GAMMA 
    POPUP "SDelta" 
    ( 
    MENUITEM "&Epsilon\tCntl-E", IDM_EPSILON 
    MENUITEM "&Zeta\tCntl-Z", IDM_ZETA 
    ) 
    MENUITEM "&Eta\tCntl-F4", IDM_ETA 
    MENUITEM "&Theta\tF5", IDM_THETA 
    t 
    MENUITEM "&Help", IDM_HELP } 
    ;     
    MYMENU ACCELERATORS 
    ( 
    VK_F2, IDM_ALPHA, VIRTKEY 
    VK_F3, IDM_BETA, VIRTKEY 
    "G", IDM_GAMMA, 
    ""E", IDM_EPSILON, 
    ""Z", IDM_ZETA, 
    VK_F4, IDM_ETA, VIRTKEY, CONTROL 
    VK_F5, IDM_THETA, VIRTKEY 
    VK_F1, IDM_HELP, VIRTKEY 
    '^T", IDM_TIME } 

         IDS.H: 

    define IDM_TIME      500 

     ,     [CTRL-T].   
  OnTime()    CMainWin,    
MENU.H.    : 

    // MENU.H 
    //       class CMainWin : public CFrameWnd 


    4.                                           87 


    public:                                                            1 
    CMainWin() ; 
    afx msg void OnLButtonDown (UINT flags, CPoint loc);               / 
    afx_msg void OnRButtonDown(UINT flags, CPoint loc); 
    //    
    afx msg void OnAlphaO; 
    afx msg void OnBeta(); 
    afx_msg void OnGamma(); 
    afx_msg void OnEpsilon(); 
    afx_msg void OnZetaO; 
    afx_msg void OnEtaO; 
    afx msg void OnThetaO; 
    afx msg void OnHelpO; 
    afx msg void OnTimeO; //     
    DECLARE_MESSAGE_MAP() }; 
    //                                      | 
    class CApp : public CWinApp 
    {                                                                          
                                                       j 
    public: 
    BOOL Initlnstance (); 
    ); 
     ,    OnTimeO   . 
    //    
    ^include <afxwin.h> 
    ^include <string.h> 
    ^include "menu.h" 
    #include "ids.h" 
    CMainWin::CMainHin() 
    ( 
    Create (NULL, "Adding a Hot Key", 
    WS_OVERLAPPEDWINDOW, rectDefault, 
    NULL, "MYMENU"); 
    //     
    if(!LoadAccelTable("MYMENU")) 
    MessageBox("Cannot Load Accelerators", "Error"); 
    i 
    //   
    BOOL CApp::Initlnstance () 
    ( 
    m_pMainWnd = new CMainWin; 
    82                                     MFC:   

    m_pMainWnd->ShowWindow(m nCmdShow) ; 
    m_pMainWnd->UpdateWindow(); 
    return TRUE; 
    f 
    //     
    BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd) 
    ON_WM_LBUTTONDOWN() 
    ON_WM_RBUTTONDOWN() 
    ON_COMMAND(IDM_ALPHA, OnAlpha) 
    ON_COMMAND(IDM_BETA, OnBeta) 
    ON_COMMAND(IDM_GAMMA, OnGamma) 
    ON_COMMAND(IDM_EPSILON, OnEpsilon) 
    ON_COMMAND(IDM_ZETA, OnZeta) 
    ON_COMMAND(IDM_ETA, OnEta) 
    ON_COMMAND(IDM_THETA, OnTheta) 
    ON_COMMAND(IDM_HELP, OnHelp) 
    ON_COMMAND(IDM_TIME, OnTime) //   
    //   
    END_MESSAGE_MAP() 
    //      
    afxJ-nsg void CMainWin::OnLButtonDown(UINT flags, CPoint loc) 
    ( 
    int i; 
    i = MessageBox("Press One", "Left Button", 
    MB_ABORTRETRYIGNORE) ; 
    swith(i)  ( 
    case IDABORT: 
    MessageBox ("", "Abort"it
    break; 
    case IDRETRY: 
    MessageBox ("", "Retry"); 
    break; 
    case IDIGNORE: 
    MessageBox ("", "Ignore"); 
    break; 
    } 
    //      
    afx_msg void CMainWin::OnRButtonDown(UINT flags, CPoint loc) 
    ( 
    int. i ; 
    i = MessageBox ("Press One", "Right Button", 
    MB_ICONHAND I MB_YESNO) ; 
    ..with'i)  [ 


    4.                                              83 


    case IDYES: 
    MessageBox("", "Yes"); 
    break; 
    case IDNO:                                                     I 
    MessageBox ("", "No");                                        1 break; 
    } 
    \ 
    //   IDM_ALPHA 
    afx_msg void CMainWin::OnAlpha() 
    { 
    MessageBox("Alpha", "Alpha") ; 
    ) 
    //   IDM_BETA 
    afx msg void CMainHin::OnBeta() 
    ( 
    MessageBox ("Beta", "Beta"); 
    ) 
    //   IDM GAMMA 
    afx msg void CMainWin::OnGamma() 
    ( 
    MessageBox("Gamma", "Gamma"); 
    } 
    //   IDM_EPSILON 
    afx_msg void CMainWin::OnEpsilon () 
    { 
    MessageBox ("Epsilon"/ "Epsllon"} ; 
    }                                                                          
                                               j 
    //   IDM_ZETA 
    afx msg void CMainWin::OnZeta() 
    { 
    MessageBox ("Zeta", "Zeta"); 
    )                                                                          
                                                       , 
    //   IDM ETA 
    afx msg void CMainWin::OnEta() 
    { 
    MessageBox ("Eta", "Eta"); 
    ) 
    //   IDM_THETA 
    afx msg void CMainWin::OnTheta() 
    ( 
    MessageBox("Theta", "Theta") ; 
    } 
    //   IDM_HELP 


    84                                      MFC:   


    afx msg void CMainWin::OnHelp() 
    j 
    MessageBox("Menu Demo", "Help"); 
    I 
    //   IDM_TIME 
    afx_msg void CMainWin::OnTime() 
    ( 
    char str [80]; 
    CTime curtime = CTime::GetCurrentTime(); 
    struct tm *newtime; 
    newtime = currtime.GetLocalTm(); 
    wsprintf(str, asctime (newtime)); 
    str [strlen (str)-1] = '\0'; //   /r/n 
    MessageBox (str, "Time and Date");           "'"" 
    ) 
    CApp App; //    
          [CTRL-T],    
,    . 4.3. 

    . 4.3.  ,      

         ,    
 ,    .   
   ,    .     
     ,     
 . 

    4.        85