窗口程序框架

复制代码
#include <windows.h>
//创建窗口程序的步骤:
//1.创建winMain()主函数 
//2.设计窗口 
//3.注册窗口
//4.创建窗口
//5.显示窗口 
LRESULT CALLBACK WndProc(HWND hwnd,
 UINT Message, //消息
 WPARAM wParam, //消息参数 
 LPARAM lParam) {//消息参数 
    switch(Message) {
        case WM_DESTROY: {//当用户关闭窗口,窗口销毁,程序需结束, 发退出消息,以退出消息循环 
            PostQuitMessage(0);
            break;
        }
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}
//1.创建winMain()主函数 
/* WINAPI 函数修饰符 被称为栈的数据结构 用来支持参数传递 */
int WINAPI WinMain(HINSTANCE hInstance,//该程序当前运行实例的句柄 
HINSTANCE hPrevInstance, //当前实例的前一个实例的句柄 
LPSTR lpCmdLine, //是一个以空终止的字符串 ,指定转递给应用程序的命令行参数 
int nCmdShow//指定程序的窗口应该如何展示 
) {
    //2.设计窗口 
    WNDCLASSEX wc;//窗口属性  
    memset(&wc,0,sizeof(wc));//初始化结构体 
    wc.cbSize         = sizeof(WNDCLASSEX);//赋值结构体大小 
    wc.lpfnWndProc     = WndProc; /* 窗口处理函数的指针,用来发送消息,回调函数 */
    wc.hInstance     = hInstance;//实例句柄 
    wc.hCursor         = LoadCursor(NULL, IDC_ARROW);//窗口类的鼠标样例,为鼠标样例资源的句柄 
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//窗口类的背景刷,为背景刷句柄 
    wc.lpszClassName = "WindowClass";//指向窗口类的指针 
    //3.注册窗口 
    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
    //4.创建窗口  创建成功后返回值为窗口句柄类型 
    HWND hwnd;
    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        640, /**/
        480, /**/
        NULL,//窗口的父窗口句柄 
        NULL,//窗口的菜单句柄 
        hInstance,//应用程序实例句柄 
        NULL//窗口创建时附加参数 
        );

    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
    //5.显示窗口 
    MSG msg;//所有消息的临时位置 
    while(GetMessage(&msg, NULL, 0, 0) > 0) { 
        TranslateMessage(&msg);//消息转化 
        DispatchMessage(&msg); //消息派遣,把 TranslateMessage转换的消息发送到窗口的消息处理函数 
        //此函数在窗口注册时已经指定 
    }
    return msg.wParam;//指定应用程序退出 
}
复制代码

 

posted @   -刘-j-x-  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示