C Listbox Ekleme

C’de Listbox Ekleme: Kapsamlı Bir Kılavuz

Giriş

Bir listbox, kullanıcıların bir dizi öğe arasından seçim yapmalarına olanak tanıyan bir grafik kullanıcı arayüzü (GUI) öğesidir. C programlama dilinde, listbox’lar Microsoft Windows işletim sisteminde kullanılabilir. Bu makale, C’de bir listbox ekleme ve yapılandırma sürecini ayrıntılı olarak açıklayacaktır.

Listbox Oluşturma

Bir listbox oluşturmak için CreateWindowEx işlevini kullanabilirsiniz. Bu işlev, pencere sınıfı, pencere başlığı, pencere stili, pencere konumu ve boyutu gibi çeşitli parametreler alır. Listbox için pencere sınıfı “LISTBOX”tur.

c
HWND listbox = CreateWindowEx(
0,
"LISTBOX",
"Listbox Başlığı",
WS_CHILD | WS_VISIBLE | LBS_NOTIFY,
10,
10,
200,
100,
parentWindow,
NULL,
hInstance,
NULL
);

Öğeler Ekleme

Listbox’a öğeler eklemek için SendMessage işlevini kullanabilirsiniz. LB_ADDSTRING mesajı, listbox’a bir dize ekler.

c
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)"Öğe 1");
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)"Öğe 2");
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)"Öğe 3");

Öğeleri Seçme

Kullanıcılar, LB_SETCURSEL mesajını kullanarak listbox’taki öğeleri seçebilirler. Bu mesaj, listbox’ta seçilen öğenin indeksini ayarlar.

c
SendMessage(listbox, LB_SETCURSEL, 1, 0);

Olayları İşleme

Listbox’taki olayları işlemek için WM_COMMAND mesajını kullanabilirsiniz. WM_COMMAND mesajı, listbox’ta bir öğe seçildiğinde veya çift tıklandığında gönderilir.

c
case WM_COMMAND:
switch (LOWORD(wParam)) {
case LB_SELCHANGE:
// Bir öğe seçildi.
break;
case LB_DBLCLK:
// Bir öğeye çift tıklandı.
break;
}
break;

Özellikler Ayarlama

Listbox’un çeşitli özelliklerini SendMessage işlevini kullanarak ayarlayabilirsiniz. Örneğin, LB_SETSEL mesajı, listbox’ta birden fazla öğenin seçilmesine izin verir.

c
SendMessage(listbox, LB_SETSEL, TRUE, 0);

Örnek Kod

Aşağıdaki kod örneği, C’de basit bir listbox oluşturan ve yapılandıran bir program göstermektedir:

“`c

include

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
HWND window = CreateWindowEx(
0,
“MainWindow”,
“Listbox Örneği”,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);

HWND listbox = CreateWindowEx(
    0,
    "LISTBOX",
    "Listbox Başlığı",
    WS_CHILD | WS_VISIBLE | LBS_NOTIFY,
    10,
    10,
    200,
    100,
    window,
    NULL,
    hInstance,
    NULL
);

SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)"Öğe 1");
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)"Öğe 2");
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM)"Öğe 3");

ShowWindow(window, nCmdShow);
UpdateWindow(window);

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

return 0;

}
“`

Faydalı Kaynaklar


Yayımlandı

kategorisi