一个简单窗口(便于窗口消息的理解)

#include <windows.h>    //包含windows.h头文件

LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM); //声明窗口函数

int APIENTRY WinMain(HINSTANCE hinstance, HINSTANCE hPrevinstance, LPSTR lpcmdLine, int nCmdShow)     //MFC下的程序入口函数WinMain(),传统的dos程序是以main()作为程序入口的,这一点不同
{
    WNDCLASS wndclass;    //定义窗口类结构体变量
    HWND hwnd;  //定义窗口类句柄
    MSG msg;        //定义消息结构体变量

    wndclass.style = CS_HREDRAW || CS_VREDRAW; //改变窗口大小则重绘
    wndclass.lpfnWndProc = WindowProc;  //窗口函数为WindowProc()
    wndclass.cbClsExtra = 0; //窗口类无扩展
    wndclass.cbWndExtra = 0;       //窗口实例无扩展
    wndclass.hInstance = hinstance;     //注册窗口类实例句柄
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);          //使用光标箭头
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);      //指定鼠标箭头的样式
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_PEN);               //窗口背景为黑色
    wndclass.lpszMenuName = NULL;           //窗口默认无菜单
    wndclass.lpszClassName = L"Windows窗口创建";         //窗口类名为"Windows窗口创建"

    if (!RegisterClass(&wndclass))         //此为注册类的函数
    {
        return false;    //注册不成功,返回false
    }

    //创建窗口的函数
    hwnd = CreateWindow(L"Windows窗口创建",     //窗口类名为"Windows窗口创建"
        L"Windows窗口创建",   //窗口的名称为“Windows窗口创建”,即窗口标题栏显示的窗口名称
        WS_OVERLAPPEDWINDOW, //重叠式窗口
        CW_USEDEFAULT, CW_USEDEFAULT,    //窗口左上角在屏幕上的默认位置
        CW_USEDEFAULT, CW_USEDEFAULT,    //窗口的宽度和高度
        NULL,      //窗口无父类窗口
        NULL,      //窗口无主菜单
        hinstance,        //创建此窗口的实例句柄
        NULL        //此窗口无创建参数
        );
    ShowWindow(hwnd, nCmdShow); //显示窗口
    UpdateWindow(hwnd);          //不断的更新窗口的客户区

    while (GetMessage(&msg, NULL, 0, 0))    //捕获消息
    {
        TranslateMessage(&msg);              //键盘消息转换
        DispatchMessage(&msg);               //派送消息给窗口函数
    }
    return msg.wParam;       //返回退出值
}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)               //窗口函数
{
    wchar_t *textTmp = L"Windows!";
    switch (message)
    {
    case WM_PAINT:             //重画窗口客户区消息处理
        HDC hdc; //定义设备句柄
        PAINTSTRUCT ps;            //定义绘图结构体变量
        hdc = BeginPaint(hwnd, &ps);  //获取要重画的窗口的设备描述表句柄
        TextOut(hdc, 15, 20, textTmp, wcslen(textTmp));                //输出到窗口的文本
        EndPaint(hwnd, &ps);               //结束重画
        return 0;
    case WM_DESTROY:               //撤销窗口消息处理
        PostQuitMessage(0);               //产生退出程序消息WM_QUIT
        return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值