在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);
// 在这里添加代码以填充列表框
请注意,这些示例仅用于演示如何创建列表框控件,并没有包含完整的程序逻辑。在实际应用中,你可能需要添加更多的事件处理和用户交互逻辑。