很烫的凉水 2023-03-03 22:58 采纳率: 85.7%
浏览 10
已结题

c++自定义窗口(非MFC)

c++创建窗口我会了

#include <windows.h>
using namespace std;
/* 这是所有输入到窗口的地方 */
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;
}

/*  Win32GUI 程序的“ main”函数: 这是执行开始的地方 */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; /* 窗口的属性结构 */
    HWND hwnd; /*  一个’句柄’,也就是 h,或者是指向我们窗口的指针 */
    MSG msg; /* 所有信息的临时地点 */
     MSG m;
    /* 取消结构并设置我们想要修改的内容 */
    memset(&wc,0,sizeof(wc));
    wc.cbSize         = sizeof(WNDCLASSEX);
    wc.lpfnWndProc     = WndProc; /* 这就是我们要发送信息的地方 */
    wc.hInstance     = hInstance;
    wc.hCursor         = LoadCursor(NULL, IDC_ARROW);
    
    /*  白色,彩色窗口只是一个 # define for a system color,try ctrl + click it */
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); /* 加载一个标准图标 */
    wc.hIconSm         = LoadIcon(NULL, IDI_APPLICATION); /* 使用名称“ a”使用项目图标 */

    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","第一个窗口",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        650, /*宽 */
        480, /* 长 */
        NULL,NULL,hInstance,NULL);

    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
    /*
  这是我们程序的核心,所有输入都被处理并发送到 wndproc。请注意,getmessage 会阻塞代码流,直到它接收到某些信息,因此此循环不会产生不合理的高 cpu 使用率
    */
    while(GetMessage(&msg, NULL, 0, 0) > 0) { /*  如果没有收到错误..。 */
        TranslateMessage(&msg); /* 如果存在的话,把密钥代码翻译成字符 */
        DispatchMessage(&msg); /* 发到 wndproc */
    }
    return msg.wParam;
}

但怎么创造按钮还要显示数据(不要MFC)

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-03-03 23:12
    关注

    “Devil组”引证GPT后的撰写:
    要在窗口中添加按钮并显示数据,可以在CreateWindowEx函数的第一个参数中指定按钮的窗口类,比如BUTTON,然后使用相应的标志来定义按钮的样式和行为。创建按钮之后,可以使用SendMessage函数发送消息到按钮,以便更新或显示文本或图标等内容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 3月3日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来