C++ COMBOBOX KULLANIMI

Dev C++ ve Visual studio ile forma combobox, dropdownlist ekleme. Eklenen combobox’a dinamik veri doldurma. Combobox’tan seçilen değeri okuma. 


Merhaba;

DEV C++ ile Windows form ve form kontrolleri oluşturma ile ilgili bu yazıda forma combobox eklemeyi ve kullanmayı anlatacağız. Combobox ile dropdownlist temelde aynı şeyi yapar. İkisi de aşağı açılan kutu özelliğindedirler bu nedenle başlığa dropdownlist ibaresi de ekledim.

Eğer form uygulamaları ile uğraşıyorsanız button, textbox, combobox, listbox gibi form kontrolleri ile uğraşmanız kaçınılmaz bir zorunluluktur. Bu kontrollerin kullanımını iyi bilmek gerekir.

C# dili ile bu kontrollerin kullanımı son derece kolaylaşmıştır. Ancak her platforma uyan ve tekelleşmeden uzak duran C++ ile yapabilmek farklı bir şeydir.

Uygulamaya geçersek.

Bir combobox c++ forma aşağıdaki şekilde dahil edilebilir.

#define CMBXN1 301
HWND CmbBX1;
 CmbBX1 = CreateWindow(TEXT("Combobox"),"", CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | LBS_STANDARD | WS_VISIBLE, 200, 250, 280, 300,
hwnd,HMENU(CMBXN1), hInstance, NULL);


Comboboxa aşağıdaki şekillerde değer eklenebilir.

SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)"sanatsal");
 char *comboadd="sitesi";
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)comboadd);
 string metin= "Bilgisayar / Fizik / Matematik";
 const char *cmetin=metin.c_str();
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)cmetin);
 SendMessage(CmbBX1, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);

Combobox’tan aşağıdaki şekilde değer okunabilir.

int len=1;
  char data[1024];
  len=GetWindowTextLength(CmbBX1) + 1;
  GetWindowText(CmbBX1,data,len);
  MessageBox(NULL, data,"COMBOBOX ORNEK",MB_OK);

Yukarıdaki parçada combobox’tan seçilen değer “data” isimli değişkene aktarılmaktadır.

Aşağıda kompleks bir uygulama verilmiştir. Program forma bir adet button ve bir adet combobox ekler. Form açılırken combobox’u otomatik doldurur. Combobox’tan bir satır seçerek buttona tıklarsanız o veriyi mesaj penceresiyle görüntüler.

Combobox’un doldurulmasını sağlayan fonksiyon combobox ve button oluşturulduktan sonra çağrılmıştır. Bu fonksiyon “AddComboBox()” fonksiyonudur.

Bu arada yeri gelmişken şunu da söyleyelim. Combobox’un oluşturulması, değer eklenmesi ve okunması ile ilgili kodlar visual studio programında da çalışmaktadır. Bu çalışan kodlar yukarıda örneğini verdiğimiz kodlardır.

Bu uygulama ile c++ ile nasıl Windows form oluşturulduğunu, forma nasıl button ve combobox eklendiğini, combobox’un nasıl doldurulduğunu ve comboboxtaki değerin bir değişkene nasıl alındığını göreceksiniz.

Kolay Gelsin.

Program Kodları

#include <windows.h>
#include <iostream>
#define Button1 21
#define CMBXN1 301
HWND BtnX1;
HWND CmbBX1;
void AddComboBox();
void ButtonClick();
using namespace std;
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
 switch(Message) {
  
  case WM_DESTROY: {
   PostQuitMessage(0);
   break;
  }

   case WM_COMMAND:
    
  switch(wParam)
  {
  
   
   case Button1:
    ButtonClick();
   break;
   
    
  }
  
   
  default:
   return DefWindowProc(hwnd, Message, wParam, lParam);
 }
 return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
 WNDCLASSEX wc; 
 HWND hwnd; 
 MSG msg; 
 memset(&wc,0,sizeof(wc));
 wc.cbSize = sizeof(WNDCLASSEX);
 wc.lpfnWndProc = WndProc; 
 wc.hInstance = hInstance;
 wc.hCursor = LoadCursor(NULL, IDC_ARROW);

 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 wc.lpszClassName = "WindowClass";
 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); 
 wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); 
 if(!RegisterClassEx(&wc)) {
  MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
  return 0;
 }
 hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass", "ComboBox",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT, 
  CW_USEDEFAULT,
  940, 
  680, 
  NULL,NULL,hInstance,NULL);
   
   CmbBX1 = CreateWindow(TEXT("Combobox"),"", CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | LBS_STANDARD | WS_VISIBLE, 200, 250, 280, 300,
    hwnd,HMENU(CMBXN1), hInstance, NULL);
   BtnX1 = CreateWindow("button", "VERI AL", WS_VISIBLE | WS_CHILD, 60, 450, 150, 25, hwnd, HMENU(Button1), NULL, NULL);
  
   AddComboBox();
 if(hwnd == NULL) {
  MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
  return 0;
 }

   
 while(GetMessage(&msg, NULL, 0, 0) > 0) { 
  TranslateMessage(&msg); 
  DispatchMessage(&msg); 
 }
 return msg.wParam;
}
void AddComboBox()
{
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)"sanatsal");
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)"bilgi");
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)"web");

 char *comboadd="sitesi";
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)comboadd);

 string metin= "Bilgisayar / Fizik / Matematik";
 const char *cmetin=metin.c_str();
 SendMessage(CmbBX1, CB_ADDSTRING, 0, (LPARAM)cmetin);

 SendMessage(CmbBX1, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);

}
void ButtonClick()
{
  int len=1;
  char data[1024];
  len=GetWindowTextLength(CmbBX1) + 1;
  GetWindowText(CmbBX1,data,len);
  
  MessageBox(NULL, data,"COMBOBOX ORNEK",MB_OK);
}


C++ LİSTBOX KULLANIMI


C++ İLE WİNDOWS FORM VE TEXTBOX



SANATSAL BİLGİ

23/01/2017

  • YORUM YAZ
  • ADI SOYADI(veya nick)
  • YORUM

COPYRIGHT© HER HAKKI SAKLIDIR
Sitede Yer Alan Bilgi Belge Ve Materyallerin İzinsiz olarak Kopyalanması ve Alıntılanması Yasaktır

SANATSAL BILGI