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
Önemli Not: Bu yazı Google Gemini yapay zekası tarafından otomatik olarak oluşturulmuştur ve hatalı bilgiler içerebilir. Düzeltmek için iletişim sayfamızdaki formdan veya yine iletişim sayfamızda bulunan eposta adresi yoluyla bizimle iletişime geçebilirsiniz. Hata varsa hemen düzeltilmektedir.