国内外明星服务器、主机、VPS
测评和优惠资料分享!

c listbox——不同库创建列表框的示例

在C语言中,listbox 不是标准库的一部分,因此没有内置的 listbox 控件或函数。然而,你可以使用图形用户界面库来创建列表框(listbox)控件,例如 GTK、Qt、wxWidgets 或 Windows API。

以下是使用不同库创建列表框的一些基本示例:

使用 Windows API 创建列表框(listbox)

在 Windows 程序中,你可以使用 Win32 API 创建一个列表框。以下是一个基本的示例:

#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
    switch (msg) {
        case WM_COMMAND:
            if (LOWORD(wParam) == ID_LISTBOX) {
                // 处理列表框消息
            }
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    MSG msg;
    WNDCLASS wc = {0};
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = "myWindowClass";
    RegisterClass(&wc);

    HWND hwnd = CreateWindow("myWindowClass", "Listbox Example", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 500, 300, NULL, NULL, hInstance, NULL);

    ListBox = CreateWindow("LISTBOX", NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY | WS_VSCROLL, 10, 10, 200, 200, hwnd, (HMENU)ID_LISTBOX, hInstance, NULL);

    // 添加列表框项目
    SendMessage(ListBox, LB_ADDSTRING, 0, (LPARAM)"Item 1");
    SendMessage(ListBox, LB_ADDSTRING, 0, (LPARAM)"Item 2");
    SendMessage(ListBox, LB_ADDSTRING, 0, (LPARAM)"Item 3");

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

使用 GTK 创建列表框(listbox)

在 GTK 程序中,你可以使用 gtk_list_box 来创建一个列表框。以下是一个基本的示例:

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Listbox Example");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

    GtkWidget *listbox = gtk_list_box_new();
    gtk_container_add(GTK_CONTAINER(window), listbox);

    // 添加列表框项目
    for (int i = 0; i < 10; i++) {
        GtkWidget *item = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
        gtk_list_box_insert(GTK_LIST_BOX(listbox), item, -1);
        GtkWidget *label = gtk_label_new(NULL);
        gchar *text = g_strdup_printf("Item %d", i + 1);
        gtk_label_set_text(GTK_LABEL(label), text);
        g_free(text);
        gtk_box_pack_start(GTK_BOX(item), label, TRUE, TRUE, 0);
    }

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

使用 Qt 创建列表框(listbox)

在 Qt 程序中,你可以使用 QListWidget 类来创建一个列表框。以下是一个基本的示例:

#include <QApplication>
#include <QListWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QListWidget listWidget;
    listWidget.setWindowTitle("Listbox Example");

    // 添加列表框项目
    listWidget.addItem("Item 1");
    listWidget.addItem("Item 2");
    listWidget.addItem("Item 3");

    listWidget.show();
    return app.exec();
}

使用 wxWidgets 创建列表框(listbox)

在 wxWidgets 程序中,你可以使用 wxListBox 类来创建一个列表框。以下是一个基本的示例:

#include <wx/wx.h>

class MyApp : public wxApp {
public:
    bool OnInit() {
        wxFrame *frame = new wxFrame(NULL, wxID_ANY, "Listbox Example");
        wxListBox *listbox = new wxListBox(frame, wxID_ANY);
        frame->Show(true);
        return true;
    }
};

wxIMPLEMENT_APP(MyApp);

// 在这里添加代码以填充列表框

请注意,这些示例仅用于演示如何创建列表框控件,并没有包含完整的程序逻辑。在实际应用中,你可能需要添加更多的事件处理和用户交互逻辑。

赞(5)
未经允许不得转载:叶一云 » c listbox——不同库创建列表框的示例

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

叶一云 - 国内外明星服务器、主机、VPS测评和优惠资料分享!

叶一云汉语词典叶一云成语大全