C语言编写图形界面-创建按钮

其他章节

开始之前,需要学习以下章节:
创建窗口
窗口过程函数

创建按钮

要在窗口上显示一个按钮,我们可以在窗口过程函数中处理 WM_CREATE 消息,在该消息中创建按钮并设置相关属性。

接下来我们使用CreateWindow 函数创建一个窗口或控件,并返回其句柄 (handle)。

示例代码如下:

#include <windows.h>

// 声明窗口过程函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
void CreateButton(HWND hWnd);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    
    
    // 定义窗口类
    WNDCLASS wc = {
    
    0};
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
    wc.lpszClassName = "MyWinClass";

    // 注册窗口类
    if (!RegisterClass(&wc))
    {
    
    
        MessageBox(NULL, "窗口注册失败!", "错误", MB_ICONERROR);
        return 1;
    }

    // 创建窗口
    HWND hWnd = CreateWindow("MyWinClass", "我的窗口", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600,
                             NULL, NULL, hInstance, NULL);

    if (!hWnd)
    {
    
    
        MessageBox(NULL, "窗口创建失败!", "错误", MB_ICONERROR);
        return 1;
    }

    // 显示窗口
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    // 消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
    
    
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    
    
    switch (msg)
    {
    
    
    case WM_CREATE:
        CreateButton(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}

void CreateButton(HWND hWnd)
{
    
    
    HWND hButton = CreateWindow("BUTTON", "按钮", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                                50, 50, 100, 30,
                                hWnd, NULL, NULL, NULL);
}

在上面的代码中,我们定义了一个新函数 CreateButton,该函数在 WM_CREATE 消息中被调用。在该函数中,使用 CreateWindow 函数创建一个按钮对象,并设置按钮的属性,包括文本内容、位置和大小等。通过指定 WS_VISIBLE 和 WS_CHILD 样式,按钮将在窗口上显示并成为窗口的子控件。

当接收到 WM_DESTROY 消息时,我们调用 PostQuitMessage 函数来终止消息循环并退出程序。

创建按钮的关键代码如下:

    HWND hButton = CreateWindow("BUTTON", "确认", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                                50, 50, 100, 30,
                                hWnd, NULL, NULL, NULL);

该函数的第一个参数是一个字符串类型,用于指定创建的控件的类名。使用 “BUTTON” 表示创建一个按钮控件,注意,这个类名是预定义的,不是我们自己自定义设置的,所以如果要创建按钮的话,这里只能填入"BUTTON"。

第二个参数是按钮显示的文本内容。第三个参数是窗口样式。第四个参数是按钮控件的位置和大小

第五个参数 hWnd 是指定按钮的父窗口句柄,即按钮所属的窗口。

第六个参数 NULL 是按钮的菜单句柄,这里我们不使用菜单,所以设置为 NULL。

第七和第八个参数 NULL 是指定按钮的实例句柄和扩展风格的指针,这里我们不需要使用,所以设置为 NULL。

通过上述参数,CreateWindow 函数将创建一个按钮控件,并返回按钮控件的句柄 (HWND hButton)。

指定按钮显示的文本

CreateWindow函数的第二个参数同样是字符串类型,用于指定按钮控件的上显示的文本内容,即按钮上显示的文字。这个我们可以自定义任意内容,用于表示该按钮的作用,比如说"确认","取消"等等,如下图所示:
在这里插入图片描述

按钮样式

接下来我们就来学习一下,如何改变这按钮的古老样式:
按钮样式与函数封装

猜你喜欢

转载自blog.csdn.net/weixin_44499065/article/details/134073886