C++创建windows窗口

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>  

//回调函数
LRESULT CALLBACK windowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
    switch (msg)
    {
    case WM_SIZE:
        break;
    case WM_CLOSE:
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        break;
    }
    return DefWindowProc(hWnd, msg, wParam, lParam);
}


//    当前实例的指针(句柄)       上一个实例的指针(句柄) 命令行(给这个exe传递的信息)  是否显示窗口
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
    //1 注册窗口类
    ::WNDCLASSEXA winClass;
    winClass.lpszClassName ="Raster" ;//*
    winClass.cbSize = sizeof(::WNDCLASSEX);
    winClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
    winClass.lpfnWndProc = windowProc;//*回到函数的指针
    winClass.hInstance = hInstance;
    winClass.hIcon = 0;
    winClass.hIconSm = 0;
    winClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    winClass.hbrBackground=(HBRUSH)(BLACK_BRUSH);
    winClass.lpszMenuName = NULL;
    winClass.cbClsExtra = 0;
    winClass.cbWndExtra = 0;

    RegisterClassExA(&winClass);

    //2 创建窗口


    //返回的窗口句柄
    HWND hWnd = CreateWindowExA(
        NULL,
        "Raster",//更具注册的名称找到注册窗口类的数据
        "Raster",//窗口的标题
        WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,//窗口的风格
        0,//位置
        0,
        480,//宽高
        320,
        0,//菜单
        0,//父窗口
        hInstance,//句柄    
        0//用户自定义的变量
        );

    UpdateWindow(hWnd);//更新窗口
    ShowWindow(hWnd, SW_SHOW);//显示窗口

    //window 消息循环
    MSG msg = { 0 };
    while (true)
    {
        if (msg.message == WM_DESTROY
            || msg.message == WM_CLOSE
            || msg.message == WM_QUIT) 
        {
            break;
        }
        //从队列中查看是否有消息  消息在window中为数字 这是是设置消息的最大值,最小值,全是0,默认是所有
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
            TranslateMessage(&msg);//解释消息
            DispatchMessage((&msg));//分发消息
        }
    }

    return 0;
}
如果这个异常提示:LNK2019    无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)"...

打开项目属性,找到C/C++  -->预处理器  -->预处理器定义   添加_WINDOWS

打开项目属性,找到连接器 -->系统  -->子系统  选择窗口(/SUBSYSTEM:WINDOWS)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值