Win32骨架程序

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

}


目录
相关文章
|
计算机视觉 容器
Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
|
29天前
[07-04] 用MASM32编写全屏窗口程序
[07-04] 用MASM32编写全屏窗口程序
|
5月前
|
索引
win32编程 -- 菜单使用
win32编程 -- 菜单使用
23 1
|
5月前
MFC编写DLL窗口功能代码
MFC编写DLL窗口功能代码
27 0
|
5月前
|
C语言 C++
win32编程 -- 编写静态库空项目
win32编程 -- 编写静态库空项目
29 0
|
数据可视化 C++ Windows
非可视化编程的windows窗口 C++ 代码设计:附例程并多多知识点
非可视化编程的windows窗口 C++ 代码设计:附例程并多多知识点
231 0
MDK5 代码折叠功能
MDK5 代码折叠功能
239 0
MDK5 代码折叠功能
x11/xwindow GUI窗口代码范例
x11/xwindow GUI窗口代码范例
175 0
|
索引
MFC 菜单编程 -- 总结 .
菜单结构 一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项。对于菜单栏的子菜单,由左至右从0开始索引。对于特定的子菜单的菜单项,由上至下建立从0开始的索引。访问子菜单和菜单项,均可通过其索引或标识进行。
1274 0