Window SDK应用程序

#include "stdafx.h"

#include "WindowsProject1.h"

//6.处理窗口过程

LRESULT CALLBACK WindowProc(

        HWND   hWnd //消息所属的窗口句柄

        UINT   message,//具体的消息名称 WM_XXX 消息名

        WPARAM wParam, //键盘附加消息

        LPARAM lParam)//鼠标附加消息

{

        //返回值用默认处理方式

        return DefWindowProc(hWnd, message, wParam, lParam);

}                                             

                                              

                                              

//程序入口函数

//APIENTRY=WINAPI 代表_stdcall 参数传递顺序:从右往左,依次入栈,并且在函数返回前清空堆栈

int WINAPI wWinMain(HINSTANCE hInstance, //应用程序实例句柄

         HINSTANCE hPrevInstance,//上一个应用程序实例句柄,在win32环境下一般为NULL

         LPWSTR  lpCmdLine, //char argv[]

         int   nCmdShow) //显示命令,最大化、最小化、正常

{

   

        //1.设计窗口

        //2.注册窗口

        //3.创建窗口

        //4.显示和更新

        //5.通过循环取消息

        //6.处理消息 (窗口过程)

//-------------------------------------------------------------------

    // 1.设计窗口

        WNDCLASS wc;

        wc.cbClsExtra = 0;//类的额外内存

        wc.cbWndExtra = 0;//窗口额外内存

        wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景

        wc.hCursor = LoadCursor(NULL, IDC_HAND);//设置光标,第一个参数为NULL,代表使用系统提供的光标

        wc.hIcon = LoadIcon(NULL, IDI_ERROR);//设置图标

        wc.hInstance = hInstance;//应用程序实例句柄,传入wWinMian中的形参即可

        wc.lpfnWndProc = WindowProc;//回调函数 窗口过程

        wc.lpszClassName = TEXT("WIN");//指定窗口类名称

        wc.lpszMenuName = NULL; //菜单名称

        wc.style = 0; //显示风格,0代表默认风格

        //-----------------------------------------------------------------

    //2.注册窗口

        RegisterClass(&wc);

        //3.创建窗口

        /*

        lpClassName, 类名

        lpWindowName,标题名

        dwStyle, 风格

        x, 坐标

        y,\

        nWidth, 宽高

        nHeight,

        hWndParent, 父窗口 NULL

        hMenu, 菜单 NULL

        hInstance,实例句柄,hInstance

        lpParam 附加值 鼠标附加值 NULL

        */

HWND hwnd=CreateWindow(wc.lpszClassName, TEXT("WIN"),WS_OVERLAPPED, WS_OVERLAPPED,

CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, hInstance, NULL);

        //4.显示和更新

        ShowWindow(hwnd, SW_SHOWNORMAL);

        UpdateWindow(hwnd);

    //5.通过循环取消息

        /*

        HWND        hwnd;  主窗口句柄

    UINT        message; 具体消息名称

    WPARAM      wParam;       附加消息 键盘消息

    LPARAM      lParam;       附加消息 鼠标消息

    DWORD       time;  消息产生时间

    POINT       pt;           附加消息  鼠标消息 x,y

        */

        MSG msg;

        while (1)

        {

        /*

        _Out_ LPMSG lpMsg,            消息

    _In_opt_ HWND hWnd,               捕获窗口 NULL代表捕获所有窗口

    _In_ UINT wMsgFilterMin,最小和最大过滤消息,一般填入0

    _In_ UINT wMsgFilterMax  填0代表捕获所有信息

        */

               if (GetMessage(&msg, NULL, 0, 0)==FALSE) break;

        //翻译消息

        TranslateMessage(&msg);

        //分发消息

        DispatchMessage(&msg);

        }

        //6.处理窗口过程

}

猜你喜欢

转载自blog.csdn.net/fly_wt/article/details/81589530