PÄÄTTÖTYÖ YKSINKERTAISEN C-KIELISEN GRAAFISEN KÄYTTÖLIITTYMÄN LUONTI
|
|
- Tuulikki Haavisto
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 OMNIA AMMATTIOPISTO PÄÄTTÖTYÖ YKSINKERTAISEN C-KIELISEN GRAAFISEN KÄYTTÖLIITTYMÄN LUONTI Nro 2010-SLE06L OMNIAN AMMATTIOPISTO KOULUTUSALA Sähkö, elektroniikka- ja tietoliikennetekniikka OPISKELIJA Riki Uusoksa OHJAAJA Erkki Viiala VUOSI 2010
2 3 OMNIAN AMMATTIOPISTO TIIVISTELMÄ Ala Sähköala Tekijä Riki Uusoksa Koulutusohjelma Elektroniikka ja tietoliikennetekniikka Työn nimi Yksinkertaisen C-kielisen graafisen käyttöliittymän luonti Sivumäärä 21 Työn nro 2010-SLE06L Vuosi 2010 Ohjaaja Erkki Viiala Työ sisältää johdannot C-kieleen ja graafisiin ympäristöihin, joiden jälkeen selvitän tavan luoda yksinkertaisen graafisen käyttöliittymän C-kielellä. Hakusana Ohjelmointi, C, grafiikka
3 4 SISÄLLYSLUETTELO Johdanto Johdanto C-kieleen C-kielen vaikuttajat ja mihin C-kieli on vaikuttanut C-kielen toiminta C-kielen standardikirjastot Johdanto graafiseen ulkoasuun Graafisen käyttöliittymän historia Yksinkertaisen graafisen käyttöliittymän ohjelmointi C-kielellä WIN32 API-pohjalta Ikkunan luominen Window Classin rekisteröinti Ikkunan luominen Viesti-loop Ikkunan ohjausprosessit Ajonaikaisen menun luominen Dialogi-ikkunat Mooditon dialogi-ikkuna Muokattava tekstikenttä Lähteet...21
4 5 JOHDANTO Työn tarkoitus on johdattaa lukija C-kieleen ja graafisiin käyttöympäristöihin, jonka jälkeen esitän tavan jolla voit C-kielellä luoda yksinkertaisen graafisen käyttöliittymän.
5 6 1 JOHDANTO C-KIELEEN C on perustavanlaatuinen ohjelmointikieli joka kehitettiin vuonna 1972 Dennis Ritchien toimesta käytettäväksi Unix-käyttöjärjestelmässä. Vaikka C kehitettiin järjestelmäohjelmointiin, sitä käytetään usein myös sovellusohjelmointiin. C on yksi yleisimmin käytetyistä ohjelmointikielistä ja on hyvin vähän järjestelmiä, joista C-kääntäjää ei löydy. 1.1 C-KIELEN VAIKUTTAJAT JA MIHIN C-KIELI ON VAIKUTTANUT C-kieli on ottanut vaikutteita esimerkiksi semmoisista ohjelmointikielistä kuin B (BCPL, CPL), ALGOL 68, Assembly, PL/I, FORTRAN ja itse vaikuttanut senkaltaisten ohjelmointikielien syntyyn kuin AWK, csh, C++, C--, C#, Objective-C, BitC, D, Go, Java, JavaScript, Limbo, Perl, PHP, Pike, Processing ja Python. 1.2 C-KIELEN TOIMINTA C on proseduraalinen järjestelmätoteutuksiin tarkoitettu kieli. Se luotiin käännettäväksi suhteellisen yksinkertaisella kääntäjällä, jolla mahdollistetaan matalan tason muistinkäyttö, kielirakenteet jotka kartoittavat tehokkaasti laitteen antamat ohjeet ja joka vaatii minimaalisen määrän suoritustukea. (kts. ohjelman kirjoittamisen jälkeistä tukea c-kääntäjältä) Huolimatta sen matalan tason mahdollisuuksista, kieli tarkoitettiin rohkaisemaan järjestelmäriippumatonta ohjelmointia. C-kielen standardisoidut kirjastot mahdollistavat käytön laajassa valikoimassa laitteistoja ja käyttöjärjestelmiä vaatien vähän tai olemattoman määrän muutoksia sen lähdekoodiin. Kieltä käytetään nykyään melkein kaikkialla, sulautetuista mikrokontrollereista supertietokoneisiin. C-kieli mahdollistaa osoitettujen objektien (kts. esim. muistiin tallennettujen laitehallintarekisterien) helpon ja suoran käytön. C-kieli myös mahdollistaa argumenttien osoittamisen (esim. int p; joka tekee argumentista p int-tyyppisen muuttujan.) C-kieli tukee suurta määrää operaattoreita, jotka ovat symboleja joita käytetään lausekkeessa määrittelemään suoritteet arvioidessa kyseistä lauseketta. C käsittää operaattorit: * aritmaattiset (+, -, *, /, %)
6 7 * samanarvoisuuden testaus (==,!=) * arvosuhteet (<, <=, >, >=) * Boolean loogiset (!, &&, ) * bittiloogiset (~, &,, ^) * bittien siirrot (<<, >>) * tehtävät (=, +=, -=, *=, /=, %=, &=, =, ^=, <<=, >>=) * lisäys ja vähennys (++, --) * suhteellisuus ja vertaus (&, *, [ ]) * määrittelyn arviointi (? :) * jäsenvalinta (., ->) * tyyppimuunnos (( )) * objektin koko (sizeof) * function argumenttien kokoelma (( )) * listaaminen (,) * lausekkeen jäsentely (( )) C:llä on muodolline C-standardin mukainen kielirakenne. 1.3 C-KIELEN STANDARDIKIRJASTOT, SEKÄ YLEISIMMIN KÄYTETYT EI-STANDARDIT KIRJASTOT JA NIIDEN SISÄLTÄMÄT FUNKTIOT assert.h assert-makro complex.h cabs, cacos, cacosh, carg, casin, casinh, catan, catanh, ccos, ccosh, cexp, cimag, cis, clog, conj, cpow, cproj, creal, csin, csinh, csqrt, ctan, ctanh ctype.h digittoint, isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper errno.h, float.h, iso646.h, limits.h ei funktioita inttypes.h imaxabs, imaxdiv, strtoimax, strtoumax, wcstoimax, wcstoumax locale.h localeconv, setlocale math.h acos, asin, atan, atan2, atof, ceil, cos, cosh, exp, fabs, floor, frexp, ldexp, log, log10, modf, pow, sin, sinh, sqrt, tan, tanh netdb.h getaddrinfo, getnameinfo
7 8 setjmp.h longjmp, setjmp signal.h raise stdarg.h va_arg, va_copy, va_end, va_start-makrot stddef.h offsetof-makro stdio.h clearer, fclose, feof, ferror, fflush, fgetc, fgetpos, fgets, fopen (myös freopen, fdopen), printf (myös fprintf, sprintf, snprintf), fputc, fputs, fread, fscanf, fseek, fsetpos, ftell, fwrite, getc-makro, getchar-makro, gets, perror, putc-makro, putchar ja fputchar-makrot, puts, remove, rename, rewind, scanf (myös fscanf, sscanf, vfscanf, vscanf, vsscanf), setbuf, setvbuf, tmpfile, tmpnam, ungetc, vprintf (myös vfprintf, vsprintf) stdlib.h abort, abs (myös labs), atexit, atof, atoi, atol, bsearch, div (myös ldiv), exit, free, itoa, getenv, ltoa, malloc (myös calloc, realloc), qsort, rand, srand, strtod, strtol, strtoul, system string.h memchr, memcmp, memcpy, memmove, memset, strcat (myös strncat), strchr, strcmp (myös strncmp), strcoll, strcpy (myös strncopy), strcspn, sterror, strlen, strpbrk, strrchar, strspn, strstr, strtok, strxfrm time.h asctime, clock, ctime, difftime, gmtime, localtime, mktime, strftime, time alloc.h farmalloc conio.h getch, getche, gotoxy 2 JOHDANTO GRAAFISEEN ULKOASUUN Graafisella ulkoasulla viitataan käyttöliittymään, joka antaa käyttäjälleen mahdollisuuden ohjata sovelluksia muillakin tavoin kuin tekstikomennoilla kuten tietokoneissa, mp3-soittimissa, pelikonsoleissa ja kodinkoneissa. Informaation ja käyttömahdollisuuksien ilmoittamiseen graafinen käyttöliittymä tarjoaa graafisia ikoneita ja visuaalisia ohjastuksia (painikkeita yms.) tekstipohjaisen
8 9 liittymän komento-ohjauksien ja tekstipohjaisen navigoinnin sijaan. Tapahtumat suoritetaan yleensä graafisten elementtien suoralla manipuloinnilla. 2.1 GRAAFISEN KÄYTTÖLIITTYMÄN HISTORIA Graafisten käyttöliittymien edeltäjä kehitettiin Stanford Research Instituutin tutkijoiden toimesta, joita johti Douglas Engelbart. He kehittivät tekstipohjaisten hyperlinkkien käytön hiirellä ohjattavaksi NLS:ää varten. Hyperlinkkien käsite jalostettiin ja laajennettiin käsittämään grafiikoita Xerox PARCin tutkijoiden toimesta, jotka tekstipohjaisten hyperlinkkien sijaan käyttivät graafista pohjaa pääasiallisena käyttöliittymänä Xerox Alto tietokoneessa. Useimmat nykyiset peruskäyttöön tarkoitetut graafiset käyttöliittymät perustuvat tähän systeemiin. Tästä johtuen jotkut kutsuvat tämäntyylistä käyttöliittymää PARC User Interfaceksi (PUI) yleisemmin käytetyn Graphical User Interface (GUI) sijaan. Ivan Sutherland kehitti Sketchpadiksi kutsutun osoitinpohjaisen systeemin Se käytti valokynää ohjaamaan rakennuspiirrosten objektien luomista ja manipulaatiota. Xerox Star Workstation esitteli ensimmäisen GUI-käyttöliittymän vuonna YKSINKERTAISEN GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI C- KIELELLÄ WIN32 API-POHJALTA 3.1 IKKUNAN LUOMINEN #include <windows.h>
9 const char g_szclassname[] = "mywindowclass"; (tallettaa Window Class nimen) //3.1.4: Ikkunan ohjausprosessit LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) switch(msg) case WM_CLOSE: DestroyWindow(hwnd); case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd, msg, wparam, lparam); return 0; int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) WNDCLASSEX wc; HWND hwnd; MSG Msg; //3.1.1: Window Classin rekisteröinti wc.cbsize = sizeof(wndclassex); wc.style = 0; wc.lpfnwndproc = WndProc; wc.cbclsextra = 0; wc.cbwndextra = 0; wc.hinstance = hinstance; wc.hicon = LoadIcon(NULL, IDI_APPLICATION); wc.hcursor = LoadCursor(NULL, IDC_ARROW); wc.hbrbackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszmenuname = NULL; wc.lpszclassname = g_szclassname; wc.hiconsm = LoadIcon(NULL, IDI_APPLICATION); if(!registerclassex(&wc)) MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION MB_OK); return 0; //3.1.2: Ikkunan luominen 10
10 11 hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szclassname, "The title of my window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hinstance, NULL); if(hwnd == NULL) MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION MB_OK); return 0; ShowWindow(hwnd, ncmdshow); UpdateWindow(hwnd); //3.1.3: Viesti-loop while(getmessage(&msg, NULL, 0, 0) > 0) TranslateMessage(&Msg); DispatchMessage(&Msg); return Msg.wParam; WINDOW CLASSIN REKISTERÖINTI Window Class säilyttää tiedot ikkunan tyypistä, sisältäen sen ohjausprosessit jotka kontrolloivat ikkunaa, pienet ja suuret ikonit ikkunalle ja taustavärin. Tällä tavoin voit rekisteröidä classin kerran, ja luoda niin monta samanlaista ikkunaa kuin vain haluat, ilman että sinun tarvitsee eritellä nämä attribuutit uudelleen ja uudelleen. Ne voi myös vaihtaa ikkunakohtaisesti jos näin haluat. Rakenteen jäsenet jotka vaikuttavat Window Classiin ovat seuraavat: cbsize Rakenteen koko. style
11 12 Class Styles (CS_*), ei tule sekoittaa Window Styles (WS_*) kanssa. Voi yleensä asettaa arvon 0. lpfnwndproc Ikkunan ohjausprosessin osoitin tälle Window Classille. cbclsextra Määrä ekstradataa, joka muistista asetetaan sivuun tätä Classia varten. Yleensä 0 cbwndextra Määrä ekstradataa, joka muistista asetetaan sivuun tämän tyyppistä ikkunaa varten. Yleensä 0. hinstance Handle (älykäs osoitin, abstrakti referenssi jota toinen systeemi ohjaa) toiseen ohjelmaan, jonka saimme WinMain()ensimmäisessä parametrissa. hicon Suuri, yleensä 32x32 ikoni, joka näytetään käyttäjän painaessa Alt+Tab. hcursor Kursori, joka näytetään ikkunamme yllä. hbrbackground Asettaa ikkunamme taustavärin. lpszmenuname Menu-resurssin nimi jota käytetään tämän Classin ikkunoille. lpszclassname Nimi, jolla Classimme tunnistetaan hiconsm Pieni, yleensä 16x16 ikoni, joka näytetään tehtäväpalkissa ja ikkunamme vasemmassa ylänurkassa IKKUNAN LUOMINEN Kun Class on rekisteröity, voimme luoda sillä ikkunan. Ensimmäinen parametric (WS_EX_CLIENTEDGE) on jatkettu ikkunan tyyli. Tässä esimerkissä se on asetettu antamaan upotettu sisempi reunus ikkunalle. Seuraavaksi meillä on Classin nimi (g_szclassname). Tämä kertoo systeemille minkäkaltaisen ikkunan haluamme luoda. Koska halusimme luoda ikkunan
12 13 rekisteröimästämme tyylistä, käytimme sen Classin nimeä. Tämän jälkeen meillä tulee ikkunan nimi ( the title of my window ) WS_OVERLAPPEDWINDOW on Window Style parametri. Näitä on monia erilaisia. Seuraavat neljä parametria (CW_USEDEFAULT, CW_USEDEFAULT, 320,240) ovat X ja Y koordinaatit ikkunamme vasemmalle ylänurkalle sekä ikkunamme leveys ja korkeus. CW_USEDEFAULT sallii Windowsin määrätä mihin se asettaa ikkunan. Ikkunan leveys kasvaa vasemmalta oikealle ja korkeus ylhäältä alas. Yksiköt ovat pikseleitä. Seuraavaksi (NULL, NULL, g_hinst, NULL) meillä on isäntäikkunan Handle, menun Handle, toisen ohjelman Handle ja osoitin ikkunan luomisen dataan. Windowsissa ikkunat ovat järjestetty Isäntä- ja lapsi-ikkuna hierarkiaan. Kun näet ikkunassa nappulan, se on Lapsi ja se on asetettu sen Isäntäikkunan sisään. Esimerkissämme Isäntä-handle on NULL, sillä ikkunalla ei ole isäntää, vaan tämä on pääikkunamme. Menu on asetettu NULL, sillä meillä ei vielä ole sitä. Toisen ohjelman handle on asetettu siihen, jonka saamme WinMain() ensimmäisestä parametrista. Kun olemme luoneet ikkunan ja tarkistaneet että meillä on oikea Handle, näytämme ikkunan käyttämällä WinMain() viimeistä parametria ja sitten päivitämme sen varmistaaksemme että ikkuna on kunnolla piirtänyt itsensä näytölle. (ShowWindow(hwnd, ncmdshow); UpdateWindow(hwnd);) VIESTI-LOOP Tämä on ohjelmasi sydän. Periaatteessa kaikki mitä ohjelmasi tekee käy tämän tarkistuspisteen kautta. GetMessage() ottaa viestin ohjelmasi viestijonosta. Joka kerran kun käyttäjä siirtää hiirtä, näppäilee näppäimistöä, klikkaa ikkunasi menua tai tekee mitä tahansa, systeemi luo viestejä ohjelmasi viestijonoon. Kutsumalla GetMessage(), pyydät seuraavan mahdollisen viestin poistettavaksi viestijonosta ja siirrettäväksi ohjelmallesi käsiteltäväksi. Jos viestejä ei ole jonossa, ohjelma odottaa GetMessage() funktiossa. TranslateMessage() suorittaa ylimääräistä prosessointia näppäimistön tapahtumista kuten mahdollistamalla WM_CHAR viestien toimimista WM_KEYDOWN viestien kanssa. Viimeiseksi, DispatchMessage() lähettää viestin ikkunalle jolle se lähettiin. Se voi olla pääikkunamme, joku toinen ikkuna, ohjain tai jossain tapauksissa ikkuna jonka systeemi tai toinen ohjelma loi kulissien taakse. Systeemi huolehtii viestien menemisestä perille oikeaan osoitteeseen.
13 IKKUNAN OHJAUSPROSESSIT Ohjausprosessit ovat ohjelmamme aivot. Täällä kaikki lähetetyt viestit prosessoituvat. Ohjausprosessit kutsutaan jokaiselle viestille erikseen. HWND parametri on kyseisen viestin kohdeikkunan handle. Tämä on tärkeä, sillä sinulla saattaa olla useita saman Classin ikkunoita jotka käyttävät samaa ohjausprosessia (WndProc()). Ero on siinä että parametri HWND on eri joka ikkunalle. Esimerkiksi lähettäessämme WM_CLOSE viestin, suljemme ikkunan. Koska käytämme ikkunan handlea, jonka saimme ensimmäisenä parametrina, muut ikkunat eivät sulkeudu, vaan vain se johon tarkoitimme WM_CLOSEn. WM_CLOSE lähetetään kun käyttäjä painaa Sulje-nappulaa tai näppäilee Alt-F4 Kutsuessamme DestroyWindow() systeemi lähettää viestin WM_DESTROY kyseiselle ikkunalle sulkien samalla kaikki jäljelle jääneet lapsi-ikkunat. Koska tämä on ohjelmamme ainoa ikkuna, olemme tämän jälkeen valmiit ja kutsumme PostQuitMessage(). Tämä lähettää WM_QUIT viestin viesti-looppiin ja lopettaa ohjelman. 3.2 AJONAIKAISEN MENUN LUOMINEN Voit koodiisi sisällyttää menun resursseista vaihtamalla Window Class määrittelyyn wc.lpszmenuname = MAKEINTRESOURCE(IDR_MYMENU); jossa IDR_MYMENU on kyseisen menuresurssin nimi. (.rc pääte) Tässä sen sijaan käsittelen ajonaikasta menua. Näin annamme WM_CREATE viestille Handlen ja lisäämme menun ikkunaamme #define ID_FILE_EXIT 9001 #define ID_STUFF_GO 9002 Aseta nämä kaksi IDtä.c-filesi huipulle, #include rivien alle. Seuraavaksi lisäämme WM_CREATE Handleemme seuraavan koodin: case WM_CREATE: HMENU hmenu, hsubmenu; HICON hicon, hiconsm; hmenu = CreateMenu(); hsubmenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "E&xit"); AppendMenu(hMenu, MF_STRING MF_POPUP, (UINT)hSubMenu, "&File"); hsubmenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Go");
14 15 AppendMenu(hMenu, MF_STRING MF_POPUP, (UINT)hSubMenu, "&Stuff"); SetMenu(hwnd, hmenu); Tämä lisää yllä näkyvän kaltaisen menun ikkunaamme, ilman ikonia. Kyseinen menu on ajonaikainen, joten se lopetetaan automaattisesti kun ohjelma sulkeutuu. Nyt, kun meillä on menu, meidän tulee laittaa se tekemään jotain. Tämä on suhteellisen yksinkertaista, sillä meidän tulee vain asettaa WM_COMMAND viestille Handle ja tarkistaa mitä komentoja saamme menusta ja toimia sen mukaan. Tällä hetkellä WndProc() tulisi näyttää seuraavalta: LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) switch(message) case WM_CREATE: HMENU hmenu, hsubmenu; hmenu = CreateMenu(); hsubmenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "E&xit"); AppendMenu(hMenu, MF_STRING MF_POPUP, (UINT)hSubMenu, "&File"); hsubmenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Go"); AppendMenu(hMenu, MF_STRING MF_POPUP, (UINT)hSubMenu, "&Stuff"); SetMenu(hwnd, hmenu); case WM_COMMAND: switch(loword(wparam)) case ID_FILE_EXIT: case ID_STUFF_GO:
15 16 case WM_CLOSE: DestroyWindow(hwnd); case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd, Message, wparam, lparam); return 0; Oletettavasti haluamme Exit valikon sulkevan ohjelman, joten WM_COMMAND,ID_FILE_EXIT Handlerissa voit seuraavalla koodilla saada sen aikaiseksi: PostMessage(hwnd, WM_CLOSE, 0, 0); WM_COMMAND Handlerisi tulisi nyt näyttää tältä: case WM_COMMAND: switch(loword(wparam)) case ID_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); case ID_STUFF_GO: Tällä hetkellä ID_STUFF_GO ei tee mitään. 3.3 DIALOGI-IKKUNAT Ensimmäinen askel dialogi-ikkunoiden luomiseen on luoda dialogille resurssitiedosto. (.rc pääte) Tässä esimerkki sen sisällöstä: IDD_ABOUT DIALOG DISCARDABLE 0, 0, 239, 66 STYLE DS_MODALFRAME WS_POPUP WS_CAPTION WS_SYSMENU CAPTION "My About Box" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "&OK",IDOK,174,18,50,14 PUSHBUTTON "&Cancel",IDCANCEL,174,35,50,14 GROUPBOX "About this program...",idc_static,7,7,225,52 CTEXT "An example program showing how to use Dialog Boxes\r\n\r\nby theforger", IDC_STATIC,16,18,144,33 END
16 17 Ensimmäisellä rivillä IDD_ABOUTDLG on resurssin ID, DIALOG on resurssin tyyppi ja neljä seuraavaa numeroa (0, 0, 239, 66) ovat jo-käsitellyt koordinaatit ja koko, mutta dialogeissa ne ovat pikselien sijaan dialogi-yksiköitä, joiden koko perustuu käytettyyn fonttiin. Käyttäessäsi suurta fonttia, on dialogi-ikkuna suuri ja pientä fonttia käyttäessäsi on dialogi-ikkuna sen verran pienempi. Tämä on tärkeää, sillä se varmistaa, että kontrollisii ovat oikean kokoiset esittämään niiden sisältämän tekstin. DISCARDABLE kertoo systeemille, että se voi siirtää resurssimuistia levylle kun ohjelma ei ole käytössä, säästäen systeemin resursseja Toinen rivi alkaa STYLE ja sitä seuraa ikkunatyylit joita käytetään dialogin luomisessa. Käyttääksesi valmiiksi asetettuja tyylejä, joudut ehkä lisäämään #include "windows.h".rc tiedostoosi. Seuraavaksi meillä on lista kontrolleista, jotka luodaan dialogi-ikkunaan. DEFPUSHBUTTON "&OK",IDOK,174,18,50,14 Tämä rivi määrittelee OK-painikkeen. IDOK on painikkeen tunnistin. IDOK on valmiiksi määritelty, joten meidän ei tarvitse #define sitä itse. Neljä seuraavaa numeroa ovat taas koordinaatit, sekä leveys että pituus. Kaikki taas dialogiyksiköissä. Seuraavaksi meidän pitää kirjoittaa dialogille ohjausprosessi. Se on periaatteessa samankaltainen kuin ikkunan ohjausprosessi. BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) switch(message) case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch(loword(wparam)) case IDOK: EndDialog(hwnd, IDOK); case IDCANCEL: EndDialog(hwnd, IDCANCEL);
17 18 default: return FALSE; return TRUE; Dialogin ohjausprosessissa ja ikkunan ohjausprosessissa on muutamia tärkeitä eroavaisuuksia jotka tulee tietää. Ensimmäiseksi, et kutsu DefWindowProc() viesteille, joita et käsittele. Dialogeissa tämä tapahtuu automaattisesti. Toiseksi, yleensä palautat FALSE viesteille joita et prosessoi ja TRUE viesteille jotka prosessoit, ellei viesti erittele, että palautat jotain muuta. Kolmanneksi, et kutsu DestroyWindow()sulkemaan dialogia, vaan sen sijaan EndDialog(). Toinen parametri on arvo, joka palautetaan DialogBox() kutsuttuun koodiin. Viimeiseksi, WM_CREATEn käsittelyn sijaan käsittelet WM_INITDIALOG tekemään prosessit joita vaaditaan ennen dialogin ilmestymistä, joka sitten palauttaa TRUE arvon keskittämään näppäimistön ensiarvoiseen painikkeeseen. Seuraavaksi dialogi-ikkunan luomiseen: case WM_COMMAND: switch(loword(wparam)) case ID_HELP_ABOUT: int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc); if(ret == IDOK) MessageBox(hwnd, "Dialog exited with IDOK.", "Notice", MB_OK MB_ICONINFORMATION); else if(ret == IDCANCEL) MessageBox(hwnd, "Dialog exited with IDCANCEL.", "Notice", MB_OK MB_ICONINFORMATION); else if(ret == -1) MessageBox(hwnd, "Dialog failed!", "Error", MB_OK MB_ICONINFORMATION); // Muita menun valintoja..
18 19 Tämä tulee sijoittaa WM_COMMAND Handleriin. Koska haluamme pääikkunamme menun luovan dialogin, tulee koodi sijoittaa pääikkunamme WndProc()iin. IDD_ABOUT on dialogiresurssin ID. Hwnd on dialogin isäntäikkunan Handle. AboutDlgProc() on dialogin kontrolloimiseen tarkoitettu dialogiproseduuri. DialogBoxia käytettäessä pääikkunasi käyttö on evätty ennenkuin dialogi on päätetty MOODITON DIALOGI-IKKUNA Seuraavaksi käsittelemme CreateDialog() function. Erona näissä on se, että kun DialogBox() käsittää oman viesti-looppinsa eikä palaa pääikkunan viesti-looppiin ennenkuin dialogi suljetaan, käyttäytyy CreateDialog() ennemmin kuin ikkuna joka on luotu CreateWindowEx() siinä mielessä, että se palaa automaattisesti alkuperäiseen, odottaen viestiä aivan kuten pääikkunakin. Täten Mooditon, kun taas DialogBox() luo Modaalisia dialogeja IDD_TOOLBAR DIALOGEX 0, 0, 98, 52 STYLE DS_MODALFRAME WS_POPUP WS_CAPTION EXSTYLE WS_EX_TOOLWINDOW CAPTION "My Dialog Toolbar" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "&Press This Button",IDC_PRESS,7,7,84,14 PUSHBUTTON "&Or This One",IDC_OTHER,7,31,84,14 END Seuraavaksi haluamme luoda dialogin sillä aikaa kun ohjelmamme on käynnissä. Haluamme myös asettaa globaalin muuttujan pitämään ikkunan Handlea palautumaan CreateDialog()ista, jotta voimme käyttää sitä myöhemmin. HWND g_htoolbar = NULL; case WM_CREATE: g_htoolbar = CreateDialog(GetModuleHandle(NULL),
19 20 MAKEINTRESOURCE(IDD_TOOLBAR), hwnd, ToolDlgProc); if(g_htoolbar!= NULL) ShowWindow(g_hToolbar, SW_SHOW); else MessageBox(hwnd, "CreateDialog returned NULL", "Warning!", MB_OK MB_ICONINFORMATION); Tarkistamme palautusarvon ja jos se on erisuuri kuin NULL, näytämme ikkunan ShowWindow() funktiolla. Seuraavaksi tarvitsemme dialogiproseduurin työkalupalkkiimme: BOOL CALLBACK ToolDlgProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) switch(message) case WM_COMMAND: switch(loword(wparam)) case IDC_PRESS: MessageBox(hwnd, "Hi!", "This is a message", MB_OK MB_ICONEXCLAMATION); case IDC_OTHER: MessageBox(hwnd, "Bye!", "This is also a message", MB_OK MB_ICONEXCLAMATION); default: return FALSE; return TRUE;
20 MUOKATTAVA TEKSTIKENTTÄ Yksi yleisimmin käytetyistä kontrolleista Windows-ympäristössä on EDIT, kontrolli joka sallii käyttäjän syöttää, muokata, kopioida jne. tekstiä. Esim. Windows Notepad. SetDlgItemText(hwnd, IDC_TEXT, "This is a string"); Näin saat muokattua kontrollin sisältämää tekstiä. Tekstin palauttaminen kontrollista vaatii hieman enemmän työtä. int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_TEXT)); if(len > 0) int i; char* buf; buf = (char*)globalalloc(gptr, len + 1); GetDlgItemText(hwnd, IDC_TEXT, buf, len + 1); //... do stuff with text... GlobalFree((HANDLE)buf); Ensiksikin meidän tulee laittaa syrjään muistia tekstin tallettamista varten. Tätä varten meidän tulee tietää kuinka paljon muistia siirtää syrjään GetWindowTextLength()tekee tämän, joten meidän täytyy saada Handle kontrollille käyttämällä GetDlgItem(). Nyt kun meillä on pituus, voimme siirtää syrjään muistia. Tähän käytämme GlobalAlloc() GetWindowTextLength()palauttaa syötettyjen kirjaimien määrän, jotka kontrolli sisältää. Viimeiseksi kutsumme GetDlgItemText() noutamaan kontrollin sisällön muistibufferiin jonka juuri varasimme Tämän jälkeen käytämme GlobalFree() vapauttamaan varaamamme muistin. Siinä muutama yksinkertainen graafinen elementti c-kieliseen ohjelmaan.
21 22 4 LÄHTEET (theforger s WIN32 API tutorial)
Windowsin sanomanvälitys. Juha Järvensivu 2007
Windowsin sanomanvälitys Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys Windowsin sanomat Sanomanvälitysmekanismi Ikkunan kahva Sanomien lähettäminen Esimerkki winamp Tapahtumapohjainen toiminta
Windowsin sanomanvälitys. Juha Järvensivu juha.jarvensivu@tut.fi 2008
Windowsin sanomanvälitys Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisällys Windowsin sanomat ja Sanomanvälitysmekanismi Ikkunan kahva ja Sanomien lähettäminen Windows API ohjelmointi Resurssit Sanomat
Winapi. Juha Järvensivu 2007
Winapi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys Osa 1 Ikkunan päivittäminen Resurssikuvaustiedosto Valikot Dialogien luonti Osa 2 Winapi ja olio-ohjelmointi (esimerkki) Yksinkertainen winapi-sovellus
1 of
http:people.cc.jyu.fi/~minurmin/gko/materiaali/esimerkit/... http:people.cc.jyu.fi/~minurmin/gko/materiaali/esimerkit/... /* PROGRAM: Mhello.c PURPOSE: "Pienin Windows-ohjelma". Tulostaa näyttöön tekstin
Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot
Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja
OpenGL:n perusteet - Osa 1: Ikkunan luominen
OpenGL:n perusteet - Osa 1: Ikkunan luominen OpenGL on käyttöjärjestelmäriippumaton kirjasto 2D- ja 3D-grafiikan piirtoon. Tämä artikkelisarja opettaa sinulle 3D-grafiikan perusteet OpenGL:ää käyttäen.
Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008
Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit
Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007
Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit
Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä.
3. Funktiot Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. Modulaarisuudella pyritään parantamaan ohjelman ymmärrettävyyttä, testattavuutta sekä
Graafisen käyttöliittymän ohjelmointi
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 2 Tapahtumapohjainen ohjelmointi Juha-Matti Vanhatupa Sisältö Tapahtumapohjainen ohjelmointi Tapahtumakuuntelijoiden
Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat
Microsoft Office 2010 löytyy tietokoneen käynnistävalikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,
Loppukurssin järjestelyt
C! Loppukurssin järjestelyt 29.3.2018 Ohjelmassa Yhteenvetoa palautteesta Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Kysyttävää / kerrattavaa 10-kierroksen asioista? Aikatauluista 10. kierroksen
Loppukurssin järjestelyt C:n edistyneet piirteet
C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura
Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:
Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin
Moduli 5: Kehittyneitä piirteitä
C! : Kehittyneitä piirteitä 19.4.2016 Aikataulusta 5. harjoituskierroksen määräaika: pe 22.4. Maari-C keskiviikkoisin ja torstaisin (12-14) Ti 26.4. Harjoitustentti (eli kertausluento) Normaalin luennon
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1;
// // whiledemov1.c // #include int main(void){ int luku1 = -1; int luku2 = -1; while( luku1
HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04
HELIA 1 (1) Luento 7 Graafisen käyttöliittymän peruselementit... 2 Ikkunat... 2 Sovellusikkunat (Application Windows)... 2 Asiakirjaikkunat (Document Windows)... 3 Toissijaiset sovellusikkunat (Secondary
Ohjelmointiharjoituksia Arduino-ympäristössä
Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet
Toinen harjoitustyö. ASCII-grafiikkaa 2017
Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin
Tutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
Pika-asennusohjeet Suomeksi
Pika-asennusohjeet Suomeksi (Virallinen ohje löytyy asennuslevyltä Englanninkielisenä) Tulosta tämä ohje asennuksen avuksi. Ensiksi asennetaan itse ohjelma, sitten rekisteröidytään testerin käyttäjäksi
Toinen harjoitustyö. ASCII-grafiikkaa
Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita
int puts(char *buff) Kirjoittaa puskurissa buff \0 :lla päätetyn merkkijonon standarditulostukseen. Formatoitu konsoli-i/o Tiedostot
1. Standardikirjasto Ohjelmankehitysympäristössä on joukko kirjastoituja funktioita. on joukko otsikkotiedostoja, joissa on kirjastofunktioiden prototyypit (esittelyt) ja tarvittavien vakioiden, tietotyyppien
815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
Binäärioperaatiot Tiedostot ja I/O
C! Binäärioperaatiot Tiedostot ja I/O 16.3.2017 Tiedotteita Määräaikoja pidennetty Myös 7. kierros uudestaan auki perjantaihin asti Seuraava ja viimeinen luento 30.3. Makrot, funktio-osoittimet Kokeen
Binäärioperaatiot Tiedostot ja I/O
C! Binäärioperaatiot Tiedostot ja I/O 8.3.2018 Tiedotteita Viimeinen luento to 29.3. Ohjelmointitehtävä, ohjelmointikoe ja niiden järjestelyt Ohjelmointikokeeseen ilmoittautuminen auki 2 .c tiedostot ja.h
Tekstinkäsittelyn jatko. KSAO Liiketalous 1
KSAO Liiketalous 1 Tyylien käyttö on keskeinen osa tehokasta tekstinkäsittelyä. Merkki- ja kappalemuotoilujen tallentaminen valmiiksi tyyleiksi nopeuttavat tekstinkäsittelyä; tekstin kirjoittamista ja
Java-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3
Canva CV NÄIN PÄÄSET ALKUUN CANVA CV:N TEOSSA: Canva on graafisen suunnittelun
Canva CV Canva on graafisen suunnittelun ohjelma, jota voi käyttää niin selaimella kuin mobiiliapplikaatiollakin. Canvassa on paljon maksuttomia pohjia CV:n visualisointiin! Canvan perusominaisuuksia voit
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Tiedosto on yhteenkuuluvien tietojen joukko, joka tavallisimmin sijaitsee kiintolevyllä, muistitikulla tai jollakin muulla fyysisellä tietovälineellä.
Tiedostot Tiedosto on yhteenkuuluvien tietojen joukko, joka tavallisimmin sijaitsee kiintolevyllä, muistitikulla tai jollakin muulla fyysisellä tietovälineellä. C-kielessä syöttö ja tulostus kuvataan laiteriippumattomasti
Ohjeet. AS C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti , Raimo Nikkila
AS-0.1103 C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti 15.05.2013, Raimo Nikkila Ohjeet Kaikki ohjelmointitehtavat tulee toteuttaa C-kielella hyvaa ohjelmointityylia noudattaen.
Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.
Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan
TIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 11 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Listakomprehensio Uusi tapa luoda (ja muokata) listoja: [ lauseke
C-ohjelmointi, syksy 2006
, syksy 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 3.10.2006 Syksy 2006 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset taulukot
C-ohjelmointi, syksy Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot. Binääritiedostot. Luento
, syksy 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 3.10.2006 Syksy 2006 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset taulukot
Tärkeimmät toiminnot. Kertausta ja uusia toimintoja Wordistä sekä tiedostonhallinnasta. Tärkeimmät toiminnot jatkuu...
Tärkeimmät toiminnot Kertausta ja uusia toimintoja Wordistä sekä tiedostonhallinnasta Kun hiiren jättää kuvakkeen päälle vähäksi ajaksi Word selittää toiminnon Avaa tiedosto Tallenna Kumoa, nuolesta aiemmat
C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.
Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen
MicroStation V8i-käyttöympäristö
MicroStation V8i-käyttöympäristö Liite 2 Pääkäyttäjän ohjeet Juha Orre Tekniikan koulutusalan opinnäytetyö Kone- ja tuotantotekniikka Insinööri (AMK) KEMI 2013 SISÄLLYS Liite 2 2(14) SISÄLLYS... 2 1 KÄYTTÖOHJEET...
IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
TAMK Ohjelmistotekniikka G Graafisten käyttöliittymien ohjelmointi Herkko Noponen Osmo Someroja. Harjoitustehtävä 2: Karttasovellus Kartta
TAMK Ohjelmistotekniikka G-04237 Graafisten käyttöliittymien ohjelmointi Harjoitustehtävä 2: Karttasovellus Kartta TAMK Karttasovellus Kartta Sivu 2/8 Sisällysluettelo 1. JOHDANTO...3 2. VAATIMUSMÄÄRITTELY...
ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Peliohjelmointirajapinnoista
Peliohjelmointi: Peliohjelmointirajapinnoista Teppo Soininen & Antti Puhakka Lähteet: www.opengl.org, OpenGL-spesifikaatio, Tietokonegrafiikka luentomoniste, MSDN, Introduction to 3D Game Programming with
Luennon sisältö. Taulukot (arrays) (Müldnerin kirjan luku 10) Yksiulotteiset taulukot. Mikä taulukko on? Taulukko-osoitin. tavallinen osoitin
, kevät 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 21.3.2006 Kevät 2006 Liisa Marttinen 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset
Tietueet. Tietueiden määrittely
Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään
erasmartcard-kortinlukijaohjelmiston käyttöohje
Sisällysluettelo ERASMARTCARD erasmartcard-kortinlukijaohjelmiston käyttöohje ERASMARTCARDIN PERUSTOIMINNOT Käyttäjän tunnistaminen Sähköinen allekirjoitus ERASMARTCARDIN ASETUSVALIKON TOIMINNOT erasmartcard-ohjelman
815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje
Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse
tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
Android ohjelmointi Tunti 5. SQLite, Cursor, Intent ja ADB
Android ohjelmointi Tunti 5 SQLite, Cursor, Intent ja ADB SQLite Tuetut tietotyypit: NULL INTEGER kokonaisluku REAL Reaaliluku, float, desimaali. Tallennetaan 1-8 tavun tarkkuudella luvun suuruudesta riippien
Käyttöliittymän muokkaus
Käyttöliittymän muokkaus Ohjelman pitkän kehityshistorian takia asetukset ovat jakaantuneet useampaan eri kohtaan ohjelmassa. Ohessa yhteenveto nykyisistä asetuksista (versio 6.4.1, 2/2018). Ylä- ja sivupalkkien
Ensin klikkaa käynnistä-valikkoa ja sieltä Kaikki ohjelmat valikosta kaikki ohjelmat
Microsoft Office 2010 löytyy tietokoneen käynnistä-valikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,
Tietosuoja-portaali. päivittäjän ohje
Tietosuoja-portaali päivittäjän ohje Maisa Kinnunen 2010 1 Sisältö PÄIVITTÄJÄN OHJE Kirjautuminen...3 Sivujen tekstin muokkaus...4 Tiedostojen lisääminen palvelimelle...9 Jos sinun pitää selvittää tiedoston/kuvan
Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta
C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus
http://www.microsoft.com/expression/
Verkkojulkaisuharjoitus1 TAVOITE Harjoituksen tarkoituksena on opiskella käyttämään verkkojulkaisueditoria (Microsoft Expression Web) ja käynnistämään verkkosivu internetissä. VERKKOSIVUEDITORIN KÄYTTÖOHJEITA
Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista
Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
Symbol for Windows Blisskoostaja ( Versio 2.3 )
Handicom Symbol for Windows Blisskoostaja ( Versio 2.3 ) Handicom, 2004, Alankomaat Myynti Suomessa: Modemo Contents 1. Johdanto... 2 2. Blisskoostajan pääikkuna... 3 2.1 Toolbar... 3 2.2 Piirtoalue...
Java-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero
Graafisen käyttöliittymän ohjelmointi
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 4 Valikot ja dialogit Juha-Matti Vanhatupa Sisältö Pääikkuna Valikot Dialogit Pääikkuna (top-level window)
OpenGL:n perusteet - Osa 2: 3D grafiikka
OpenGL:n perusteet - Osa 2: 3D grafiikka OpenGL on käyttöjärjestelmäriippumaton kirjasto 2D- ja 3D-grafiikan piirtoon. Tämä artikkelisarja opettaa sinulle 3D-grafiikan perusteet OpenGL:ää käyttäen. Esimerkeissä
12 Mallit (Templates)
12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista
Funktionimien kuormitus. TIES341 Funktio ohjelmointi 2 Kevät 2006
Funktionimien kuormitus TIES341 Funktio ohjelmointi 2 Kevät 2006 Kertausta ongelma Mikä on (+) operaattorin tyyppi? Num a => a -> a -> a Mikä on (==) operaattorin tyyppi? Eq a => a -> a -> a Mikä on show
OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys
Sisällys 1 Varmista, että DigiSign-kortinlukijaohjelmisto on käynnissä 2 1.1 DigiSign-kuvake 2 1.2 Sovelluksen käynnistäminen 2 1.3 Kortin toiminnan varmistaminen 4 2 Jos käytät selaimena Mozilla, Firefox
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 Kierros 6, 22. 26. helmikuuta Huom: arviointiviikolla 15. 19.2. ei ole laskuharjoituksia! Demonstraatiotehtävien ratkaisut D1: (a) Osoita, että seuraava yhteydetön
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
Osoittimet ja taulukot
C! ja taulukot 1.2.2018 Tiedotteita Tämän jälkeen taas pari väliviikkoa (tenttiviikko) Seuraava luento 22.2. Laskareita ei tenttiviikolla 12.2. 16.2. 2 ja muisti Muisti Keskusyksikkö Suorittaa muistissa
Sähköposti ja uutisryhmät 4.5.2005
Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer
Ohjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Pienen ohjelmointikielen tulkki (ohjelmoitava laskin) (mm. SICP 4-4.1.5 osin) Riku Saikkonen 15. 11. 2012 Sisältö 1 Nelilaskintulkki, globaalit muuttujat
TYYLIT. Word Tyylit
Word 2013 Tyylit TYYLIT TYYLIT... 1 Pikatyylien käyttäminen... 1 Tyylimuotoilun poistaminen... 2 Tyylin muokkaaminen... 2 Uuden tyylin luominen muotoillusta tekstistä... 2 Uuden tyylin luominen valintataulussa...
GeoGebra-harjoituksia malu-opettajille
GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon
1 (14) Ohje. Ohje. GTK-wiki. Geologian tutkimuskeskus, Verkkosivustopalvelut
1 (14) GTK-wiki 2 (14) Sisällysluettelo 1. Wikin ylläpito... 3 1.1. Wiki-artikkelin muokkaus... 3 1.2. Wiki-artikkelin lisääminen... 3 2. Wiki-toiminnot... 4 2.1. Ristiinlinkitys... 4 2.2. Tekstin muotoilu...
Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
3. Binääripuu, Java-toteutus
3. Binääripuu, Java-toteutus /*-------------------------------------------------------------/ / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x );
Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.
Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net
1. HARJOITUS harjoitus3_korjaus.doc
Word - harjoitus 1 1. HARJOITUS harjoitus3_korjaus.doc Kopioi itsellesi harjoitus3_korjaus.doc niminen tiedosto Avaa näyttöön kopioimasi harjoitus. Harjoitus on kirjoitettu WordPerfet 5.1 (DOS) versiolla
C# Windows ohjelmointi perusopas
Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa
Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python
Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely
Lyhyt kertaus osoittimista
, syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin
Harjoitus 2: Oppijan aktivointi (15.3.2016)
Harjoitus 2: Oppijan aktivointi (15.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla
Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.
2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet
Harjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)
Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla
Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa
ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö
Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
1. Omat operaatiot 1.1
1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä
Verkkojulkaiseminen Minna Väisänen HTML5-tehtävä Kirjoita Dreamweaverissa oheisen nettisivun koodi. Lisää xx-kohtiin omat tietosi. Kuvan nimi on joki.jpg. Ensin tehdään sivusto ja sitten yksittäinen sivu.
12. Näppäimistöltä lukeminen 12.1
12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.
UpdateIT 2010: Editorin käyttöohje
UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...
Ohjelmointi 1 Taulukot ja merkkijonot
Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko
Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)
Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
Integroidun maksupäätteen lisääminen käyttöönotossa
Integroidun maksupäätteen lisääminen käyttöönotossa Elisa tarjoaa maksupäätteiksi Netsin Ingenico ipp350 tai iwl250 Ethernet yhteydellä ja iwl250 mallia Bluetooth yhteydellä. Jotta maksupääte toimii Elisa
Muistitikun liittäminen tietokoneeseen
Muistitikun käyttäminen 1 Muistitikun liittäminen tietokoneeseen Muistitikku liitetään tietokoneen USB-porttiin. Koneessa voi olla useita USB-portteja ja tikun voi liittää mihin tahansa niistä. USB-portti
17. Javan omat luokat 17.1
17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)
Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36
!!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat
Taulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++
JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.