• 一个简单的Win32窗口


    //--------------------------------------------------------------------------------------
    // File: MyWnd.cpp
    //
    // This application demonstrates creating a window
    //
    // Copyright (c) lwm
    //--------------------------------------------------------------------------------------
    #include <windows.h>
    #include "Resource.h"
    
    //--------------------------------------------------------------------------------------
    // Global Variables
    //--------------------------------------------------------------------------------------
    HINSTANCE               g_hInst		= nullptr;
    HWND                    g_hWnd		= nullptr;
    WCHAR			szTitle[]	= L"MyWnd";
    WCHAR			szWindowClass[] = L"MyWindowClass";
    
    //--------------------------------------------------------------------------------------
    // Forward declarations
    //--------------------------------------------------------------------------------------
    HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow );
    HRESULT InitDevice();
    void CleanupDevice();
    LRESULT CALLBACK    WndProc( HWND, UINT, WPARAM, LPARAM );
    void Adle();
    
    //--------------------------------------------------------------------------------------
    // Entry point to the program. Initializes everything and goes into a message processing 
    // loop. Idle time is used to ...
    //--------------------------------------------------------------------------------------
    int WINAPI wWinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow )
    {
        UNREFERENCED_PARAMETER( hPrevInstance );
        UNREFERENCED_PARAMETER( lpCmdLine );
    
        if( FAILED( InitWindow( hInstance, nCmdShow ) ) )
            return 0;
    
        if( FAILED( InitDevice() ) )
        {
            CleanupDevice();
            return 0;
        }
    
        // Main message loop
        MSG msg = {0};
        while( WM_QUIT != msg.message )
        {
            if( PeekMessage( &msg, nullptr, 0, 0, PM_REMOVE ) )
            {
                TranslateMessage( &msg );
                DispatchMessage( &msg );
            }
            else
            {
    			Adle();
            }
        }
    
        CleanupDevice();
    
        return ( int )msg.wParam;
    }
    
    //--------------------------------------------------------------------------------------
    // Register class and create window
    //--------------------------------------------------------------------------------------
    HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow )
    {
        // Register class
        WNDCLASSEX wcex;
    
        wcex.cbSize = sizeof( WNDCLASSEX );
    
        wcex.style		= CS_HREDRAW | CS_VREDRAW;
        wcex.lpfnWndProc	= WndProc;
        wcex.cbClsExtra	= 0;
        wcex.cbWndExtra	= 0;
        wcex.hInstance	= hInstance;
        wcex.hIcon		= LoadIcon( hInstance, MAKEINTRESOURCE(IDI_TUTORIAL1));
        wcex.hCursor	= LoadCursor( nullptr, IDC_ARROW );
        wcex.hbrBackground	= ( HBRUSH )( COLOR_WINDOW + 1 );
        wcex.lpszMenuName	= nullptr;
        wcex.lpszClassName	= szWindowClass;
        wcex.hIconSm		= LoadIcon( wcex.hInstance, ( LPCTSTR )IDI_TUTORIAL1 );
        if( !RegisterClassEx( &wcex ) )
            return E_FAIL;
    
        // Create window
        g_hInst = hInstance;
        RECT rc = { 0, 0, 800, 600 };
        AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE );
        g_hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
    		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr );
    
        if (!g_hWnd)
            return E_FAIL;
    
        ShowWindow(g_hWnd, nCmdShow);
    	UpdateWindow(g_hWnd);
    
        return S_OK;
    }
    
    //--------------------------------------------------------------------------------------
    // Called every time the application receives a message
    //--------------------------------------------------------------------------------------
    LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
    {
        PAINTSTRUCT ps;
        HDC hdc;
    
        switch( message )
        {
        case WM_PAINT:
            hdc = BeginPaint( hWnd, &ps );
            EndPaint( hWnd, &ps );
            break;
    
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
    
        default:
            return DefWindowProc( hWnd, message, wParam, lParam );
        }
    
        return 0;
    }
    
    //--------------------------------------------------------------------------------------
    // init
    //--------------------------------------------------------------------------------------
    HRESULT InitDevice()
    {
        //...
        return S_OK;
    }
    
    //--------------------------------------------------------------------------------------
    // adle
    //--------------------------------------------------------------------------------------
    void Adle()
    { 
    }
    
    //--------------------------------------------------------------------------------------
    // Clean up the objects we've created
    //--------------------------------------------------------------------------------------
    void CleanupDevice()
    {  
    }
    

      

  • 相关阅读:
    phpcms v9 更改首页
    不是技术牛人,如何拿到国内IT巨头的Offer
    超实用的PHP代码片段!
    Android 中的 Service 全面总结
    近期十大优秀jQuery插件推荐
    DIOCP之编写第一个应用程序(二)
    DIOCP之编写第一个应用程序(一)
    DIOCP之DEMO学习顺序及达到要求
    DIOCP之EchoServer分析
    DIOCP之数据接收事件
  • 原文地址:https://www.cnblogs.com/xslwm/p/9393625.html
Copyright © 2020-2023  润新知