#include // otsikkotiedoston lisäys LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; // ikkunaproseduurin esittely HINSTANCE hInstance; // globaali ohjelman ilmentymän kahva int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "ListCombo" ; // 'ohjelman nimi' HWND hwnd ; // kahvamuuttuja MSG msg ; // sanomastrukstuuri WNDCLASSEX wndclass ; // ikkunan luokkastruktuuri wndclass.cbSize = sizeof (wndclass) ; // struktuurin koko wndclass.style = CS_HREDRAW | CS_VREDRAW ; // ikkunan tyyli wndclass.lpfnWndProc = WndProc ; // ikkunaproseduurin nimi wndclass.cbClsExtra = 0 ; // ikkunan luokan sisältä ohjelman... wndclass.cbWndExtra = 0 ; // ...omaan käyttöön varattua tilaa wndclass.hInstance = hInstance ; // lomakkeen kahva wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; // ikoni wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; // kursori wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW ; // taustaväri wndclass.lpszMenuName = NULL ; // valikon kahva wndclass.lpszClassName = szAppName ; // ikkunan luokan nimi wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; // pieni ikoni RegisterClassEx (&wndclass) ; // ikkunan luokan rekisteröinti hwnd = CreateWindow (szAppName, // ikkunan luokan nimi "ListBox & ComboBox", // ikkunan otsikko WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU, // ikkunan tyyli CW_USEDEFAULT, // x-positio aluksi CW_USEDEFAULT, // y-positio aluksi 500, // leveys aluksi 300, // korkeus aluksi NULL, // emoikkunan kahva NULL, // ikkunan valikon kahva hInstance, // ohjelman ilmentymän kahva NULL) ; // luontiparametrit ShowWindow (hwnd, iCmdShow) ; // ikkunan piirto UpdateWindow (hwnd) ; // ikkunan päivitys while (GetMessage (&msg, NULL, 0, 0)) // sanomasilmukan alku { TranslateMessage (&msg) ; // viestien käsittely ja... DispatchMessage (&msg) ; // ...ikkunaproseduurin kutsu } return msg.wParam ; // käyttöjärjestelmälle palautettava arvo } LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndCombo, hwndList, hwndButtonList, hwndButtonCombo, hwndStatic; // kahvamuuttujia char temp[20]={NULL}; // merkkijonomuuttuja switch (iMsg) // sanomien käsittelyrakenne { case WM_CREATE: // initialisaatiosanoma CreateWindow("button", NULL, WS_CHILD|WS_VISIBLE|BS_GROUPBOX, 10, 10, 473, 255, hwnd, (HMENU) 0, hInstance, NULL); // koristelaatikko lomakkeella hwndStatic=CreateWindowEx(WS_EX_STATICEDGE,"static", "Tee valinta", WS_CHILD|WS_VISIBLE|SS_CENTER, 140, 220, 100, 20, hwnd, (HMENU) 0, hInstance, NULL); // staattinen tekstinlaatikko hwndList=CreateWindowEx(WS_EX_CLIENTEDGE,"listbox", NULL, WS_CHILD|WS_VISIBLE|LBS_STANDARD, 140, 50, 100, 70, hwnd, (HMENU) 1, hInstance, NULL); // luetteloruutu SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 1"); // tekstirivien lisäys luetteloruutuun SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 2"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 3"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 4"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 5"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 6"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 7"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "List 8"); SendMessage(hwndList, LB_SETCURSEL, 0, 0); // tehdään jokin oletusvalinta hwndButtonList=CreateWindow("button", "Tutki listbox", WS_CHILD|WS_VISIBLE, 250, 50, 100, 30, hwnd, (HMENU) 2, hInstance, NULL); // painonappi hwndCombo=CreateWindow("combobox", NULL, WS_CHILD|WS_VISIBLE|CBS_SORT|CBS_DROPDOWNLIST, 140, 140, 100, 80, hwnd, (HMENU) 3, hInstance, NULL); // yhdistelmäruutu SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 1"); // tekstirivien lisäys yhdistelmäruutuun SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 2"); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 3"); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 4"); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 5"); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 6"); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 7"); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) "Combo 8"); SendMessage(hwndCombo, CB_SETCURSEL, 0, 0); // tehdään jokin oletusvalinta hwndButtonCombo=CreateWindow("button", "Tutki combo", WS_CHILD|WS_VISIBLE, 250, 140, 100, 30, hwnd, (HMENU) 4, hInstance, NULL); // painonappi return 0 ; case WM_COMMAND: switch HIWORD (wParam) // tapahtumatunnus { case BN_CLICKED: // tapahtumatunnus BN_CLICKED = nappia on painettu if (LOWORD(wParam==2)) // luetteloruudun tutkiminen { SendMessage(hwndList, LB_GETTEXT, SendMessage(hwndList, LB_GETCURSEL, 0,0), (LPARAM)temp); SetWindowText(hwndStatic, temp); // LB_GETTEXT=haetaan teksti, LB_GETCURSEL=haetaan valittu rivi } if (LOWORD(wParam==4)) // alasvetovalintalaatikon tutkiminen { SendMessage(hwndCombo, CB_GETLBTEXT, SendMessage(hwndCombo, CB_GETCURSEL, 0,0), (LPARAM)temp); SetWindowText(hwndStatic, temp); // LB_GETLBTEXT=haetaan teksti, LB_GETCURSEL=haetaan valittu rivi } } return 0; case WM_DESTROY : // lopetussanoman käsittely PostQuitMessage (0) ; // lopetusviesti Windowsille return 0 ; // pois ikkunaproseduurista } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; // sanomien oletuskäsittely }