		MFC Programming  
		from the 
		Ground Up 


					Herbert Shildt 


					Osborne McGraw-Hill 
Berkeley   New York  St. Louis  San Francisco  Auckland   Bogota   Hamburg   
London   Madrid   Mexico City Milan   Montreal   New Delhi   Panama City   
Paris   Sao Paulo   Singapore   Sydney  Tokyo  Toronto 


      

      

          ..  


          -	, BHV, 1997 


2


     681.3.06 
      
    MFC:  : .  . 
    1997. - 560 . 
    ISBN 5-7733-0021-4 
     .:   BHV, 

           MFC 4.   
      ,    
 Windows-,  ,     
 .       
 ,    ,     
.      , 
    .      
,        Windows,  
Windows 95  Windows NT. 
         Windows-,  
    ,     
  32- . 
    ISBN 0-07-882222- ISBN 5-7733-0021-4 
     McGraw-Hill, 1996 
       BHV, 1997  . 

3

     

     MFC (Microsoft Foundation Classes)      
    Windows.  ,   
 Windows    ,       
 .       
Windows         . 
 ,    Windows,   ,  
 API-,      . 
 MFC      
,     Windows. ,   , 
     . 
       ,      
  :    ; , 
  ,     ,   
 .        
      .   
    ,     
Windows    !    MFC  
.      Windows    
,           
 . MFC      .  , Windows 
    ,    
, a MFC      .  
: ,    MFC,      
 . 
     ,  ,       
 MFC.  ,       
,      . 

         5 

       Windows ? 

           Windows: Windows 3.1, 
Windows 95  Windows NT.   ,    
MFC,       ,   
  ,   ,     . 
    32- .    ,  
   MFC    , 16-  Windows 3.1. 
,         
32-  Windows. 

        ? 

       ,      .  
,       C++    
 ,   , ,    
.  ,   C++    ,    
 ,   ,      MFC. 
         Windows    , 
        Windows 
 , , ,      .  
       ,    C++  
   . 

       ? 

    ,     ,  , 
    Visual C++  4.    
,       C++,   
Windows-  .  ,    
 ,    MFC. 
     ,   ,      
C++.   ,   MFC   , 
  C++.  ,       
.      , 
  MFC. ,    Visual C++    
   MFC   DLL-. 

    6	MFC:   


    MFC  Windows 

      ,      Windows  
   Microsoft Foundation Classes (MFC).  
     ,     
    Windows   .  
,         Windows  
MFC.        ,   MFC    
   .    ,   Windows, 
     ,    
 Windows-      
.          
     MFC.    
  Windows    . 

7

     ,  ,   Windows,   MFC   
     .     
    . (     !)  
         
MFC,      ,    
   .   ,   
        Windows  
       MFC. 

      MFC? 

    MFC     () ,    C++  
        
Windows.     ,  
 200 .     Windows-   
- .    , MFC 
  ,        Windows. 
     MFC    ,   
.  ,     Windows 
      ,   
 .  ,      
    75  .       
       .    
 ,    MFC,      
,       . 
          MFC   
      .     
 ,    Windows-,    
   .       (  
- ).  , , 
 ,     ,  
.  ,    MFC,    
    Windows (    , 
  ). 
        MFC    
    (API) Windows. , , ,  
    Windows  API,   
  .   API     
  .    ,    API 
   !    MFC  ( 
)  API     , 
    . (     
 .) 
     .   ,   ,  
     Windows. ,  , 
,    ,      

    10  MFC:   

.     ,   
  Windows-,   e-Windows-.    ,  
      Windows,  
      .   ,  
,          . 

     MFC  C++ 

     MFC    ,    C++, 
  ,   ,    
C++.  ,  ,  MFC,    C++, 
      .     ,  
,    MFC,       
  C++.      . 
      ,   
     .  ,   
C++    ,     ,   ,  
     .  ,  
 MFC,         
C++,            . 
  ,      ,   . 

    : ,       C++,  
    "C++:  , 2- ."  
"C++: The Complete Reference, 2d ed." (Berkeley, CA: Osborne/McGraw-Hill, 
1995).  ,     C++,     "C++  
 "  "C++ from the Ground Up" (Berkeley, CA: Osborne/McGraw-Hill, 1994). 

    16-  32- ? 

     ,        
Windows: Windows 3.1, Windows 95  Windows NT. Windows 3.1   16- 
,   DOS.         
 ,    .       
     ,  32- 
      16-  (. 
Windows 3.1    32- ). Windows 
95  Windows NT    32-  . 
                 Windows 3.1,   
     .  ,  
32-  ,     
 .  32-, Windows 95  Windows NT  
   ,   , 16- . 

    1. MFC  Windows	11 

         MFC.    3.0,  
  32-.    ,   
    ,    MFC    
32-  (   ),    ,  
   Windows   32- 
.         
,   16- . 
           
32-,         
 32-    MFC.     
         Windows 
3.1. ,        ,     
.  ,     Windows  
 MFC.    ,   -  
32- . 
          .    
   Windows 95,       
 32- Windows-.      
    32- . 

      MFC ? 

         1992 .   MFC 1.0,   
  .        , 
 4,   Visual C++ 4. MFC 4    
  Windows 95    . ,  
,           
MFC.   ,  MFC     
 . 

      Windows 

            Windows, 
  ,   ,     
,      .    
 MFC     ,     
 Windows  ,   DOS  Unix. ,    
   Windows-,  ,  
  Windows       .  
    . 

        Windows 

       DOS,    ,     
  ,    , 
 int 21h.    (      

    12  MFC:   

   DOS),     
      , 
  ,   Windows.    
Windows    . 
            
    .    ,  
     ,  API 
(Application Programming Interface).    Windows  
  API,       
 ,    ,   ,   
 .. 
       ,  MFC    API. 
       ,      
   -. ,, - 
   API,       
. 

       (DLL) 

     API     ,   
,     ,   Windows,  
     .     
.  API      (Dynamic Link 
Libraries,  DLL),        ,   
  , ..   . ,  
   . 
     API       DLL-.  
 ,     API-,   
     .        
  ,    DLL-,   
 ,   .      
   Windows.     
    API-.  API   , 
      . 
         . 
-,      API-,  
 DLL-    , 
         
,      . -,   
  Windows-      
DLL-.       . 

    Win 16  Win32 

           API.   
Win16    16- ,   Windows 3.1. 
, 32- ,  Win32    Windows 95  
Windows NT. Win32    Win16 (..    

    7. MFC  Windows	13 

  ),          
  . ,    ,  
      . Win32  32- 
 ,   Win 16    16- 
  .    ,    
   ,   32-   
 32- .        
32- .     
,       Windows. 
       Windows,   
   ,  , ,     
 32- .        
  Windows 95  Windows NT,    . 
      ,    MFC   
 Win32 API.      ,  
   MFC     Windows 3.1,    
    Win32,  Win32s. 
      Win32   32- ,  , 
    (integers)   32-.  , 
   int  unsigned    32 ,   16,   
Windows 3.1.         
16 ,      short. (  ,   
    typedef-.) ,   
   16-      
  ,     
 32 ,       . 
      32-   ,    
    near  far.       
  .  Windows 95  Windows NT  near  far 
 (   #define) . 

     GDI 

       API  GDI (Graphics Device Interface  
  ). GDI     Windows,  
  - .   GDI 
Windows-      . 

      Windows 

     ,   Windows  .  Windows 
3.1         .   
 ,   Windows 95  Windows NT,    
:       .  
   . 
       ,  .    
       . ,   
     ,    , 

    14 MFC:   

 ,      
    . 
          .    
 "  ".     
        . 
       ,   Windows 95  Windows NT  
  . 
       ,   Windows 95  Windows NT  
 ,       
. ,   . ,  
         
,      .   ,  
    .
           Windows 3.1  
Windows 95/NT.  Windows .1   .  
,  ,    ,    
          
.  ,      
        .    
  Windows 95  Windows NT   .  
        
  .      
   .      
   .    ,  
   . 

       Windows 

             
 . ,  DOS     
   .   , e-Windows-  
  .    .  Windows  
 :    .   
 :      Wjndows.  
 ,    .    
   . 
    Windows       . 
,           
 .    ,   
   .      
,      .   : 
       .   
Windows-     :  
,      . 

    1. MFC  Windows	15 


       Windows 

      Windows-    ,  
     .     
     . ,  ,   
 MFC   ;      
   .   ,    ,   
Windows-,    MFC,     
 ,        . 
 ,       ,  
  Windows.        . 

    :         
Windows-   ,   ,    . 
        Windows   
    . 

     WinMain()

     Windows-      WinMain().  
      .   
 MFC   ,   - . 

      

     Windows-    ,   
   ,    .  
    ,   .   
Windows,       .   
      .   
    .   Windows, , 
 ,    .  , 
     . 
        Windows,     
 ,   . ,    
   ,  Windows.     , 
      ,   
  Windows  ,   . 
      Windows-       
.    MFC    
.       .    
,   ,      
.          API-, 
    Windows.     
          
  Windows,     MFC,    . 

    16 MFC:   


      

      , Windows   ,   
.   Windows      
 (   WinMain()).     
         
     Windows,      
      .   
Windows-       
.   MFC    .   
,      .     
  Windows. 
            , 
        Windows-.  ,  
  MFC      
,       . 

      

       ,    Windows- 
  ,   . ( 
 ""     C++. , ,  
b  .)          
 ,   , .    
 Windows,          . 
             .
     .   
 MFC      .  
        ,   
.      . 

       Windows 

       ,  Windows-    
  .    : -,  
    Windows,  ; -, 
,        
Windows- (..    ""  Windows-). 
     Windows   ,       , 
         
 .   Windows   
 . ,      
Windows-,      . ,   
  ,     
   .      
,   ,    ,   . , , 
   Windows-    
   . 
        " Windows"    
   Windows-,     . 

    1. MFC  Windows	17 

         ,     
 .   ,   
 ,    .  ,  
 ,      ,   
Windows-. 
          Windows-, 
    .     
 .  ,       
Windows,         
   . 

       Windows 

       ,  Windows-  (   
 MFC  )       
    C++,   int  char*.     
,     (header) .   
   HANDLE, HWND, BYTE, WORD, DWORD, UINT, LONG, 
BOOL, LPSTR  LPCSTR.  HANDLE  32- ,   
 .     ,      
 ,   HANDLE,     .     
,   . ,  HWND  
32-    .  ,   
MFC,     ,      
 .  BYTE  8-  
 ,  WORD  16-   ,  
DWORD    ,  UINT   32- . 
 LONG   long.  BOOL    , 
     ,  .  LPSTR  
  ,  LPCSTR   (const)   . 

        

           Windows,   
       ,   
,     .   ,   () 
      ,   
Microsoft     Windows. ,    
  ,    .   
        .   
       . 
       Microsoft      
     .       
  ,     
    .      . 

    18  MFC:   

        . 1.1.  ,  
       .   
  ,    .  ,   , 
   ,     .  
   ,   . 

     1.1.      b 

      
    	 ( ) 
    	 
    dw	   
    f	16-   () 
    fn	 
    h	 
    l	  
    l	   
    	  
    	 
    pt	 ,    
    w	   
    sz	  ,   '\0' 
    Ipsz	   ,   '\0' 
    rgb	 ,      RGB 


    1. MFC  Windows 19 


      
       
      
      
     
      
     
        
        
       

    . 1.1.    

      ,      
.  . 1.1       . 
       ,        
.       .  
       (  
  ).       . 
      .     
  ,   . (   
Windows   .     Windows 95.)  
    ,     .  
       , 
     . 

    20 MFC:   
