Win32骨架程序

众所周知,windows程序的核心就是窗口。
今天我们就来利用最古老的Win32应用来创建一个基本的窗口骨架。
代码如下:
//  DEMO2_3.CPP - A complete windows program

//  INCLUDES  // /
#define  WIN32_LEAN_AND_MEAN   //  just say no to MFC

#include 
< windows.h >     //  include all the windows headers
#include  < windowsx.h >    //  include useful macros
#include  < stdio.h >      
#include 
< math.h >

//  DEFINES 

//  defines for windows 
#define  WINDOW_CLASS_NAME "WINCLASS1"

//  GLOBALS 


//  FUNCTIONS  //
LRESULT CALLBACK WindowProc(HWND hwnd, 
                            UINT msg, 
                            WPARAM wparam, 
                            LPARAM lparam)
{
    
//  this is the main message handler of the system
    PAINTSTRUCT        ps;         //  used in WM_PAINT
    HDC                hdc;             //  handle to a device context

    
//  what is the message 
     switch (msg)
    {    
        
case  WM_CREATE: 
    {
            
//  do initialization stuff here

      
//  return success
             return ( 0 );
        } 
        
break ;

        
case  WM_PAINT: 
        {
            
//  simply validate the window
            hdc  =  BeginPaint(hwnd, & ps);     
            
            
//  you would do all your painting here
      EndPaint(hwnd, & ps);

      
//  return success
             return ( 0 );
       } 
        
break ;

        
case  WM_DESTROY: 
        {
            
//  kill the application, this sends a WM_QUIT message 
            PostQuitMessage( 0 );

      
//  return success
             return ( 0 );
        } 
        
break ;

        
default : break ;
    }

    
//  process any messages that we didn't take care of 
     return  (DefWindowProc(hwnd, msg, wparam, lparam));
}

 WINMAIN  //
int  WINAPI WinMain(    HINSTANCE hinstance,
                    HINSTANCE hprevinstance,
                    LPSTR lpcmdline,
                    
int  ncmdshow)
{
    WNDCLASSEX winclass;    
//  this will hold the class we create
    HWND       hwnd;                 //  generic window handle
    MSG           msg;                     //  generic message

    
//  first fill in the window class stucture
    winclass.cbSize  =   sizeof (WNDCLASSEX);
    winclass.style 
=  CS_DBLCLKS  |  CS_OWNDC  |  CS_HREDRAW  |  CS_VREDRAW;
    winclass.lpfnWndProc 
=  WindowProc;
    winclass.cbClsExtra    
=   0 ;
    winclass.cbWndExtra 
=   0 ;
    winclass.hInstance 
=  hinstance;
    winclass.hIcon 
=  LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor 
=  LoadCursor(NULL, IDC_ARROW);
    winclass.hbrBackground 
=  (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass.lpszMenuName    
=  NULL;
    winclass.lpszClassName 
=  WINDOW_CLASS_NAME;
    winclass.hIconSm 
=  LoadIcon(NULL, IDI_APPLICATION);

    
//  register the window class
     if  ( ! RegisterClassEx( & winclass))
        
return ( 0 );

    
//  create the window
     if  ( ! (hwnd  =  CreateWindowEx(NULL,                                             //  extended style
                                                            WINDOW_CLASS_NAME,                 //  class
                                     " My Basic Window " ,                                         //  title
                                    WS_OVERLAPPEDWINDOW  |  WS_VISIBLE,
                                     
0 , 0 ,                                                                     //  initial x,y
                                     400 , 400 ,                                                             //  initial width, height
                                    NULL,                                                                     //  handle to parent 
                                    NULL,                                                                     //  handle to menu
                                    hinstance,                                                         //  instance of this application
                                    NULL)))                                                                 //  extra creation parms
     return ( 0 );
    
    
//  enter main event loop
     while (GetMessage( & msg,NULL, 0 , 0 ))
     { 
         
//  translate any accelerator keys
         TranslateMessage( & msg);

         
//  send the message to the window proc
         DispatchMessage( & msg);
    }
    
    
//  return to Windows like this
     return (msg.wParam);

}


转载于:https://www.cnblogs.com/davidgu/archive/2009/12/20/1551040.html

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页