C++: Můj první program pro Windows
|
|
- Jindřiška Křížová
- před 9 lety
- Počet zobrazení:
Transkript
1 C++: Můj první program pro Windows Seznámení s programovacím jazykem C++ pro Windows a naše první aplikace Hello World Jazyk C++ je díky objektům, ukazatelům a podobným srandičkám velice silný jazyk, a proto je požíván i pro programování ve Windows. V tomto seriálu (doufám) základů programování ve Windows se budeme věnovat neobjektovému programování, protože je to, dle mého názoru, nejjednodušší způsob, jak začít výuku základů programování pro Windows. A protože začínáme bez objektů, nebudeme používat Microsoftí VC (zajímalo by mě, kolik procent čtenářů jej má legálně) a využijeme nástroj, který je zdarma (GNU), a to Bloodshed Dev-C++. K dispozici je aktuálně verze 4 včetně patche na Programovat budeme v konvenci ANSI, tudíž by programy, které zde naleznete, by měly být přenositelné i na jiné kompilátory pro Windows. Tento tutoriálnek předpokládá, že znáte alespoň trochu počítačovou angličtinu. Jeden podstatný rozdíl mezi programováním pro DOS a Windows je, že pro Windows použijeme namísto hlavní funkce main funkci WinMain a to nejlépe v tomto tvaru: int STDCALL WinMain( HINSTANCE hthisinstance, HINSTANCE hprevinstance, LPSTR lpszargument, int nfunsterstil ) Několik odlišností zde je. Např. STDCALL za deklarací vrácené hodnoty (kterou Windows nepoužívají). Tímto nadeklarujete, že funkce je volána standardním způsobem. Narozdíl od funkce main jsou zde parametry 4. hthisinstance - struktura daná typem HINSTANCE, handle (rukojeť) na tuto instance aplikace hprevinstance - handle na instanci předchozí aplikace lpszargument - ukazatel na řetězce argumentů příkazové řádky (ve Windows se moc nepoužívá) nfunsterstil - styl, kterým by Windows chtěly zobrazit naše okno Poznámky: Instance aplikace: Máte např. Hello World a spustíte jej víckrát, tzn. že máte několik instancí té samé aplikace. Parametry (argumenty) příkazové řádky vytvoří Windows např. když na ikonu programu přetáhnete jiný soubor. Dále programy pro Windows využívají hlavní proceduru okna o které se zmíním v příštím díle, protože nechci úvodní program příliš komplikovat. Takže se pustíme do samotné tvorby programu Hello World. Pokud už máme Dev-C++ nainstalované, vybereme z menu File položku New project a klikneme na ikonu projektu WinMain() Project. Ještě se ujistíme, že je vybrán C++ projekt a klikneme na OK. Zadáme Hello World a vybereme, kde se projekt vytvoří, nejlépe v nějaké prázdné složce. Teď již máme vytvořen projekt a editor nám automaticky otevřel okno Untitled1, které raději uložíme jako např. main.cpp do složky s projektem, a to v menu File - Save unit as... V souboru main.cpp můžete vidět standardní připojení hlavičkového souboru windows.h a hlavní funkci WinMain, která vrací nulu. Ve skutečnosti se k programu linkuje ještě jeden soubor, a to rsrc.o, který vznikne zkompilováním zdrojů, které můžeme editovat přes menu: Project - Edit resource file. Jak můžete vidět, je zde jen jedna položka, a to ikona, kterou můžete nahradit zde nebo v nastavení projektu: Project - Project options. Přistoupíme k samotnému Hello World. Úplně nejjednodušší cesta je zavolat funkci MessageBox, která je součástí Windows API a její kód je umístěn ve standardních knihovnách Windows, což nás v tuto chvíli nemusí zajímat. Klikneme do volného řádku nad příkazem return nebo tam, kam chceme kód vložit, a k zavolání můžeme použít průvodce obsaženého v Dev-C++: Vybereme z menu Edit - Insert - MessageBox a ve vybraném okně vhodně zvolíme, co potřebujeme. Do políčka dialog title napíšeme titulek dialogu např. Můj program, do editboxu napíšeme text např. Hello World a vybereme, která tlačítka budeme v dialogu chtít a které chceme mít aktivní, popř. Ikonu a modálnost okna (vysvětlím někdy v příštím díle, stačí ponechat Application modal). Pokud zaškrtnete tlačítko advanced options, můžete si zvolit některé další parametry, které však nabízí jen Win 95 a vyšší. Dialog vložíte do programu kliknutím na OK. Program by tedy měl vypadat nějak takto: #include <windows.h> int STDCALL WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR lpcmd, int nshow) {
2 MessageBox (NULL, "Hello World", "Můj program", 0 + MB_OKCANCEL + MB_ICONASTERISK); return 0; Program zkompilujete stiskem kláves Ctrl+F9 nebo výběrem Compile z menu Execute. Tímto získáte velmi malý exe soubor narozdíl několika desítek kilový soubor v delphi nebo i megový soubor ve VC++. Tento soubor již můžete spustit a pochlubit se s ním komukoliv. Myslím však, že s tímto programem na dlouho spokojeni nebudete. Základ programování v C++ (2.) Druhý díl o základech programování v jazyce C++, tentokrát o nejdůležitější části programů pro Windows - smyčka zpráv Protože všechny procesy Windows komunikují zprávami, je u všech programů, které píšeme, nutné tyto zprávy zpracovávat. Každý program, který k něčemu využívá svůj hlavní proces, by měl obsahovat smyčku, která "vytáhne" zprávu z fronty zpráv daného procesu a předá ji ke zpracování a která se ukončí po obdržení ukončovací zprávy. Je zde však jeden problém: Pokud program pracuje na nějakém složitém výpočtu, měli byste jej nechat zobrazit dialog se zprávou nebo, a to je nejvýhodnější řešení, v hlavním okně vytvořit indikátor zpracování výpočtu, protože pokud program déle neodpovídá na žádnou zprávu, nebo pokud se jeho fronta rapidně prodlouží, můžete při stisku Ctrl-Alt-Delete vidět, že program neodpovídá. Nervózní uživatel by se jej mohl takovýmto způsobem pokusit zavřít a ztratit tak důležitá data. Použitím standardního Windowsovského indikátoru (modré čtverečky), tento problém odpadne, protože tento proces obsahuje vlastní smyčku zpráv a pokud výpočet není nijak extrémě náročný, stihne odpovídat i na zprávy. Teď jak taková standardní smyčka zpráv vypadá: while(getmessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); Tato smyčka se opakuje, dokud funkce GetMessage nevrátí nulu. GetMessage vrátí nulu v případě, že tento proces obdrží zprávu WM_QUIT, která mu oznamuje, že si Windows přejí tento program ukončit. Funkce TranslateMessage provádí to, že překládá hodnoty virtuálních kláves na zprávy, kterým už vaše procedura okna rozumí. A DispatchMessage provádí jen to, že zprávu pošle proceduře okna, kterou máte zaregistrovanou ve třídě okna (neplést třídy okna Windows s třídami v C++!!!). Podívejme se teď na příklad z prvního dílu: #include <windows.h> int STDCALL WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR lpcmd, int nshow) { MessageBox (NULL, "Hello World", "Můj program", 0 + MB_OKCANCEL + MB_ICONASTERISK); return 0; Pokud tento prográmek spustíte, zjistíte, že ačkoliv zde žádnou smyčku zpráv nemáte, Windows proti delšímu zobrazení dialogu nijak neprotestují. Je to tím, že zde smyčka zpráv vlastně je. Nevěříte? Co udělá tento program při spuštění? Hlavní funkce zavolá MessageBox, a pokud je MessageBox ukončen, program okamžitě skončí. V podstatě Windows mají implmentovánu vlastní smyčku zpráv v každém svém procesu a ve většině funkcí. V tomto případě funkce MessageBox vytvoří dle vašeho přání okno, proceduru okna a smyčku zpráv, která je ukončena po kliknutí na kterékoliv tlačítko a toto tlačítko je vráceno touto funkcí. O tvorbě dialogových oken, procedurách a třídách oken někdy příště.
3 Základ programování ve C++ a Windows (3.) Třetí díl seriálu, tentokrát na téma Procedura a třída okna Každý uživatelsky obsluhovatelný program pro Windows, by měl mít své okno. Otevření nějakého okna je pro uživatele obvykle známkou toho, že s programem lze nějak pracovat. K naprogramování jednoduchého okna ve Windows není třeba žádných operací s grafikou, vždyť Windows to vše udělají za nás. Vše, co budeme potřebovat, je proměnná typu HWND pro uložení handle na naše okno, struktura MSG pro práci se zprávami našemu oknu a proceduru okna. K přesnějšímu určení vzhledu okna využijeme strukturu WNDCLASSEX, kterou po naplnění předáme Windows. Budeme postupovat přibližně takto: // připojíme vždy potřebný hlavičkový soubor windows.h #include <windows.h> // nadeklarujeme prototyp naší procedury okna LRESULT CALLBACK ProceduraOkna(HWND, UINT, WPARAM, LPARAM); // pro obecné použití při práci s třídami oken char JmenoTridy[ ] = "WindowsApp"; // Klasická WinMain (názvy proměnných jako v Dev-C++) int WINAPI WinMain(HINSTANCE hthisinstance, HINSTANCE hprevinstance, LPSTR lpszargument, int nfunsterstil) { HWND hwnd; /* Handle k našemu oknu */ MSG messages; /* Sem nám Windows ukládají zprávy */ WNDCLASSEX wincl; /* Datová struktura třídy okna */ // Vyplníme strukturu wincl wincl.hinstance = hthisinstance; wincl.lpszclassname = JmenoTridy; wincl.lpfnwndproc = ProceduraOkna; wincl.style = CS_DBLCLKS; wincl.cbsize = sizeof(wndclassex); // Tato procedura je volána Windows // Použijeme standartní ikonu a kurzor wincl.hicon = LoadIcon(NULL, IDI_APPLICATION); wincl.hiconsm = LoadIcon(NULL, IDI_APPLICATION); wincl.hcursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszmenuname = NULL; // Nemáme žádné menu wincl.cbclsextra = 0; wincl.cbwndextra = 0; // Pro pozadí okna použijeme světle šedou barvu (klasická Windows) wincl.hbrbackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH); // A vyplněnou třídu okna zaregistrujeme // Pokud se to nepodaří, nemá smysl pokračovat if (!RegisterClassEx(&wincl)) return 0; // Teď vytvoříme vlastní okno hwnd = CreateWindowEx( 0, // Nebudeme využívat žádné rozšířené možnosti JmenoTridy, // Jméno třídy okna "Aplikace pro Windows", // Název okna WS_OVERLAPPEDWINDOW, // Typ okna CW_USEDEFAULT, // Pozici okna zvolí samo Windows CW_USEDEFAULT, 544, // Šířka okna 375, // Výška okna HWND_DESKTOP, // Naše okno má jako rodiče plochu NULL, // Žádné menu hthisinstance, // Handler na instanci programu NULL // Žádná další data ); // Konečně zobrazíme okno
4 ShowWindow(hwnd, nfunsterstil); // A spustíme standartní smyčku zpráv while(getmessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); return messages.wparam; // Konec WinMain Další věcí, kterou budeme potřebovat, je procedura našeho okna: LRESULT CALLBACK ProceduraOkna(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { switch (message) { case WM_DESTROY: PostQuitMessage(0); // Windows zavírají okno a my ukončíme aplikaci break; default: // Pro zprávy se kterými nebudeme pracovat return 0; return DefWindowProc(hwnd, message, wparam, lparam); Toto je jen velmi zjednodušená smyčka zpráv, Windows posílají každému oknu spoustu různých zpráv s různými parametry. A i naše aplikace může tyto zprávy rozesílat. Na několik základních a nejpoužívanějších zpráv a jak s nimi pracovat nebo je rozesílat se podíváme příště. Základ programování ve Windows a C++ (4.) Výběr několika základních zpráv pro správu oken V minulém díle tohoto tutoriálku jsme si ukázali jak jednoduše vytvořit proceduru okna, která donutí okno zavřít a ostatní parametry přepošle funkcí DefWindowProc standardní obsluze oken. Pokud však budete chtít naprogramovat nějakou složitější aplikaci, např: Word :-), pro komunikaci mezi okny, lištami nástrojů a spoustami dalších elementů vaší aplikace, rozhodně si se standardní obsluhou okna nevystačíte. Zprávy multitaskingu Windows jsou dvojího druhu, klasické a diagnostické. Diagnostické zprávy nemají u většiny kompilátorů definici a programátor by je měl zpracovávat až v případě nejvyšší nouze. Klasických zpráv používaných Windows je velmi mnoho. Pro základní programování vám bude stačit znát jich jen několik desítek a všechny je možné nalézt v referencích k Windows. Windows berou jako okna i jednotlivé prvky jak hlavního okna tak dialogů, z toho vyplývá, že je možné posílat zprávy i těmto objektům. K účelům interakce mezi procesy jsou často využity i parametry zpráv lparam a wparam. Zprávy můžete rozesílat použitím funkce SendMessage s parametry: handle okna, které zprávu má obdržet, zprávu, která se bude posílat, a wparam a lparam této zprávy. K odeslání zprávy prvku dialogového okna (jak s nimi pracovat, si ukážeme v některém z příštích dílů) použijte funkci SendDlgItemMessage s parametry: handle dialogového okna, které zprávu má obdržet, ID prvku dialogového okna, zprávu, která se bude posílat a wparam a lparam této zprávy, vše v uvedeném pořadí. Výběr některých základních zpráv: Zprávy pro správu oken WM_CLOSE WM_CREATE Je poslána vždy, když má být okno zavřeno. Pokud je předána proceduře DefWindowProc, ta zavolá DestroyWindows. Touto zprávou je okno informováno o otevření a o tom, že je možné provést inicializační
5 WM_DESTROY WM_KILLFOCUS WM_MENUSELECT WM_MOVE WM_QUIT WM_SETFOCUS WM_SETTEXT WM_SIZE operace. Jako parametr je v lparam ukazatel na strukturu CREATESTRUCT, která obsahuje kopie parametrů předaných funkcí CreateWindow při tvorbě okna. Je poslána proceduře okna poté, co bylo okno odstraněno z obrazovky. Je posláno oknu, jakmile ztratí fokus, tzn. přestane být aktivní. wparam obsahuje handle okna, které fokus získalo (může být NULL) Oznamuje oknu, že uživatel zvolil některou položku z jeho menu. wparam obsahuje ID zvolené položky, lparam obsahuje kombinaci vlajek s informacemi o položce. Pokud lparam obsahuje -1 a wparam nulu, znamená to, že uživatel ukončil menu bez vybrání nějaké položky. Posláno, jakmile je okno přesunuto. lparam obsahuje novou pozici okna - LOWORD = x-ová souřadnice, HIWORD = y-ová souřadnice. Indikuje požadavek k ukončení běhu aplikace. wparam obsahuje kód vrácený Windowsům. Je posláno oknu, jakmile dostane fokus, tzn. že je nyní aktivní. wparam obsahuje handle okna, které fokus ztratilo (může být NULL) Nastaví název objektu. U oken je to titulek, u např. tlačítka je to jeho název. lparam obsahuje ukazatel na textový řetězec. Tato zpráva je poslána oknu, jakmile uživatel změní jeho velikost. lparam obsahuje v LOWORDu šířku a v HIWORDu výšku okna po změně velikosti. wparam může obsahovat SIZEFULLSCREEN pokud bylo okno maximalizováno, SIZEICONIC pokud bylo okno minimalizováno (pozůstatek WfW3.11), SIZENORMAL pokud se velikost okna změnila, ale není ani maximalizované, ani minimalizované. Vstupní zprávy WM_CHAR Zpráva je vyhodnocena, pokud jsou zpracovány zprávy WM_KEYUP a WM_KEYDOWN. wparam obsahuje hodnotu klávesy, lparam obsahuje v LOWORDu počet opakování klávesy, v LOBYTE HIWORDu nalezneme scan kód klávesy, bity jsou interně využívány Windows, bit 29 obsahuje stav klávesy ALT, bit 30 je předchozí stav a bit 31 obsahuje přechodný stav WM_COMMAND Asi nejdůležitější zpráva!!! Je odeslána, když uživatel zvolí položku z menu, klikne na tlačítko, stiskne akcelerátor apod. wparam specifikuje ID zvoleného objektu, WM_LBUTTONDBLCLK Zpráva se objeví, pokud uživatel dvojkliknul v rámci naší aplikace. wparam obsahuje kombinaci vlajek: MK_CONTROL, pokud je zároveň stisknuta klávesa Ctrl, MK_SHIFT pokud je stisknuta klávesa Shift, MK_LBUTTON, pokud je stisknuto levé tlačítko myši (podobné jako MK_RBUTTON a MK_MBUTTON ). lparam obsahuje v LOWORDu x-ovou souřadnici ukazatele myši a v HIWORDu y-ovou souřadnici. WM_RBUTTONDBLCLK Podobné jako viz výše. WM_MBUTTONDBLCLK Podobné jako viz výše. WM_LBUTTONDOWN WM_RBUTTONDOWN WM_MBUTTONDOWN WM_HSCROLL WM_VSCROLL Objeví se, pokud je stisknuto levé tlačítko myši. wparam obsahuje vlajky jako u WM_LBUTTONDBLCLK mimo MK_LBUTTON. lparam obsahuje v LOWORDu x-ovou souřadnici ukazatele myši a v HIWORDu y-ovou souřadnici. Podobné jako viz výše. Podobné jako viz výše. Je odeslána, pokud uživatel použil horizontální posuvník. wparam může být jedna z následujících hodnot: SB_BOTTOM - posun úplně vpravo nebo dolů SB_TOP - posun úplně vlevo nebo nahoru SB_LINEDOWN - jeden řádek dolů SB_LINEUP - jeden řádek nahoru SB_PAGEDOWN - stránka dolů SB_PAGEUP - stránka nahoru (předchozí čtyři platí i horizontálně) SB_THUMBPOSITION - posun na absolutní pozici, ta je v LOWORDu lparam SB_THUMBTRACK - posuvník je právě posouván, LOWORD lparamu obsahuje pozici. Podobné jako WM_HSCROLL.
6 Základní zprávy pro správu okna a pro analýzu vstupů bychom měli probrány. Nejsou to však zdaleka všechny zprávy, které je možné pro tyto akce využít. Bližší informace o jednotlivých zprávách je možné nalézt různě na internetu a v dokumentacích ke kompilátorům. V příštím díle tohoto tutoriálku se podíváme na zprávy pro interakci s prvky dialogových oken a jejich notifikační kódy a v další části na některé ze systémových zpráv, zpráv pro práci s MDI okny. Základ programování ve Windows a C++ (5.) Výběr několika základních zpráv (2.) - tentokrát pro práci s prvky ve formuláři (tlačítka, objekty) Každé tlačítko a každá objekt v okně aplikace by měl u většiny aplikací k něčemu sloužit. Zde navážu na minulý díl. Jako v minulé části tohoto tutoriálu, zde máte seznam nejdůležitějších zpráv pro interakci s těmito prvky. K dialogovým prkům jsou tyto zprávy pouze rozšířením k těm z minulé části. Ve většině případů lze použít zprávy pro okna pro dialogové prvky apod. Zprávy pro práci s dialogovými prvky WM_NEXTDLGCTL WM_SETFONT Posílá se dialogovému oknu, aby změnilo prvek, který vlastní fokus. Pokud je lparam nenulový, wparam určuje ID prvku, který má získat fokus. Je-li lparam roven nule, wparam obsahuje vlajku posunu, tzn. je-li wparam nula, získá fokus následující prvek, jeli nenulový, fokus získá předchozí prvek. Nastaví font pro kreslení textu. wparam obsahuje handle na font, pokud je NULL, pak je použit systémový font. Pokud je lparam nastaven na TRUE je prvek překreslen okamžitě. Zprávy pro tlačítka (button, checkbox, radio) BM_GETCHECK BM_GETSTATE BM_SETCHECK BM_SETSTATE BM_SETSTYLE DM_GETDEFID DM_SETDEFID Posílá se prvku, při zjišťování stavu. Funkce SendDlgItemMessage vrátí TRUE, pokud je checkbox zakřížkován. Vrátí TRUE, pokud je stisknuto Označí nebo odznačí checkbox nebo radiobutton. Pokud je wparam nenulový, je označen, jinak je odznačen. Pro třístavové checkboxy: pokud je wparam roven 1 je označeno, pokud je 2 pak je checkbox zašednut. Pokud je wparam nenulový je prvek vykreslen v inverzní grafice. Nastaví pro prvek nový styl. wparam obsahuje nové nastavení stylu. lparam obsahuje vlajku zda má být prvek překreslen. Styl je součet parametrů (viz některý příští díl o zdrojích) Vrátí ID implicitního tlačítka Dle wparam nastaví tlačítko jako implicitní. Zprávy pro editační pole EM_GETLINECOUNT EM_LIMITTEXT EM_REPLACESEL Vrátí počet řádek. Nastaví limit v počtu znaků, které může uživatel vepsat. wparam obsahuje max. počet znaků. Vymění aktuálně vybraný text za textový řetězec na který ukazuje lparam. EM_SETPASSWORDCHAR Nastaví, který znak se bude zobrazovat místo písmen. Implicitně je hvězdička. WM_CLEAR Smaže obsah editačního pole ListBox - seznam LB_ADDSTRING LB_DELETESTRING LB_DIR Přidá do seznamu nulou ukončený řetězec, na který ukazuje lparam Odstraní ze seznamu řetězec s indexem uvedeným v wparam Vyplní seznam seznamem souborů v aktuálním adresáři. wparam obsahuje atribut výběru (DOS 4+). lparam obsahuje hvězdičko-otazníkovou notaci výběru souborů, které mají být zobrazeny.
7 LB_GETCOUNT LB_GETSEL LB_GETTEXT LB_GETTEXTLEN LB_GETTOPINDEX LB_INSERTSTRING LB_SETCOLUMNWIDTH LB_SETCURSEL Vrátí počet položek v seznamu. Vrátí index vybrané položky Zkopíruje položku specifikovanou ve wparam do řetězce specifikovaného ukazatelem ve lparam Vrátí délku řetězce specifikovaného indexem ve wparam Vrátí index první viditelné položky v seznamu Vloží do položky specifikované wparam řetězec, na který ukazuje lparam Nastaví šířku sloupců ve vícesloupcovém seznamu na wparam Položka wparam je vybrána. Pokud je wparam -1, pak není vybrána žádná položka. ComboBox - roletka CB_ADDSTRING Přidá do seznamu nulou ukončený řetězec na který ukazuje lparam CB_DELETESTRING Odstraní ze seznamu řetězec s indexem uvedeným v wparam CB_SHOWDROPDOWN Pokud je wparam TRUE, pak je roletka vysunuta jinak se schová Pro combobox je možné využít většinu ze zpráv použitelných u listboxu, pouze se změní prefix z LB_ na CB_ Pokud uživatel něco dělá s kterýmkoliv dialogovým prvkem, vaše aplikace se to samozřejmě dozví pomocí notifikačního kódu. Vše co potřebujeme je klasická zpráva WM_COMMAND, kterou naše aplikace obdržela, wparam obsahuje ID prvku, LOWORD lparamu obsahuje handle na okno, a HIWORD lparamu obsahuje již některý z těchto notifikačních kódů: Kódy pro tlačítka BN_CLICKED BN_DOUBLECLICKED Kódy pro EditBoxy EN_CHANGE EN_ERRSPACE EN_KILLFOCUS EN_SETFOCUS Kódy pro seznamy LBN_DBLCLK LBN_SELCHANGE LBN_KILLFOCUS LBN_SETFOCUS Kódy pro comboboxy CBN_DROPDOWN CBN_EDITCHANGE CBN_SELCHANGE CBN_KILLFOCUS CBN_SETFOCUS Indikuje, že na tlačítko bylo kliknuto Indikuje, že uživatel dvojkliknul na radiobutton Indikuje, že uživatel změnil obsah políčka Indikuje, že místo v paměti pro EditBox došlo. Indikuje, že editbox ztratil fokus Indikuje, že editbox získal fokus Indikuje, že uživatel dvojkliknul na položku. Indikuje, že uživatel změnil výběr. Indikuje, že seznam ztratil fokus Indikuje, že seznam získal fokus Informuje, že combobox bude vysunut. Informuje, že uživatel změnil text v editačním poli. Indikuje, že uživatel změnil výběr. Indikuje, že combobox ztratil fokus Indikuje, že combobox získal fokus Zde jsou uvedeny jen některé nejdůležitější kódy a seznam není zdaleka úplný. Jak vidíte, většina kódů je pro různé prvky podobná. V příštím díle navážu na tento díl seznamem dalších zpráv. Potom se podíváme na zdroje a ve finále vytvoříme nějakou funkční aplikaci. Pokud sledujete můj tutoriálek, máte se na co těšit. Jestliže něčemu nerozumíte, nezoufejte, v dalších dílech to snad objasním a jinak je zde board nebo můj mail.
8 Základ programování ve Windows a C++ (6.) Výběr několika základních zpráv (3.) Jako v předchozích dvou dílech věnovaných zprávám si ukážeme některé inicializační zprávy, některé ze systémových zpráv a výcuc ze zpráv věnovaných MDI oknům. Bohužel popsat všechny zprávy systému Windows je mimo rozsah tohoto tutoriálku, ale je možné je nalézt na internetu nebo v odborných publikacích. Inicializační zprávy WM_INITDIALOG WM_INITMENU Je poslána aplikaci těsně předtím, než je zobrazeno dialogové okno. wparam identifikuje prvek dialogu, který při otevření okna získá fokus. lparam obsahuje hodnotu dwinitparam, pokud je předávána funkcí, která vytváří dialog. Tato zpráva je požadavek k inicializaci menu. Je posílána těsně předtím, než je menu zobrazeno. wparam obsahuje handle na menu, které má být zobrazeno. Systémové zprávy WM_SYSCOMMAND WM_SYSCHAR WM_COMPACTING Je poslána, pokud uživatel zvolí položku systémového menu. Pro získání některé z níže uvedených hodnot je třeba hodnotu wparam ANDnout s 0xFFF0. Tato může být: SC_CLOSE - Uživatel chce zavřít okno SC_HSCROLL - Horizontální posun SC_KEYMENU - Menu se otevřelo po stisku klávesy SC_MAXIMIZE(nebo SC_ZOOM) - Vybráno Maximalizovat SC_MINIMIZE(nebo SC_ICON) - Vybráno Minimalizovat SC_MOUSEMENU - Menu se otevřelo myší SC_MOVE - Vybráno Přesunout SC_NEXTWINDOW - Posun na další okno SC_PREVWINDOW - Posun na předchozí okno SC_RESTORE - Vybráno Obnovit SC_SIZE - Změna velikosti SC_VSCROLL - Vertikální posun Akce s tímto menu je lépe přenechat DefWindowProc. Podobné WM_CHAR, ale pracuje se systémovými klávesami. Je posláno všem aplikacím, pokud Windows detekují, že dochází paměť nebo systémové prostředky. wparam specifikuje vytížení procesoru: 0x8000 znamená 50%. WM_SYSCOLORCHANGE Informuje, že uživatel změnil jednu nebo více systémových barev. Aplikace by měla zavolat WM_PAINT pro překreslení a rekonstruovat všechny existující štětce. WM_TIMECHANGE Je posláno všem aplikacím, pokud se změnil systémový čas. MDI zprávy WM_MDICASCADE WM_MDICREATE WM_MDIDESTROY WM_MDIGETACTIVE WM_MDIMAXIMIZE WM_MDISETMENU WM_MDITILE Tato zpráva uspořádá všechna okna kaskádovým stylem. Vytvoří se nové MDI okno. wparam obsahuje ukazatel na MDICREATESTRUCT strukturu. Odstraní MDI okno. wparam obsahuje handle na toto okno. Vrátí aktivní MDI okno. LOWORD vrácené hodnoty obsahuje handle na toto okno, HIWORD obsahuje 1 pokud je okno maximalizováno. Maximalizuje MDI okno, jehož handle je zadáno ve wparam. Změní menu nebo popup menu MDI okna nebo obojí. lparam obsahuje v LOWORDU handle na nové menu a v HIWORDU handle na nové popup menu. Pokud je některé ze slov nulové, menu se nemění. Okna se uspořádají stylem TILE. Doufám, že vám tyto tři díly obsahující pouze zjednodušený popis některých zpráv posílaných Windowsy aplikaci a naopak pomohou při programování vašich aplikací. Rozhodně je ale budete potřebovat, pokud se mnou budete pokračovat v tomto tutoriálku.
9 Základ programování ve Windows a C++ (7.) Něco málo ke zdrojům a resource částem programům pro Windows Každý program pro Windows obsahuje tzv. zdrojovou část (resource). Ta je připojena většinou ke konci EXE souboru a může obsahovat dialogová okna, různá menu, bitmapy, ikony, fonty a různá jiná data, jež aplikace využívá ke komfortnější interakci s uživatelem. Zvláště pro programátora je tento způsob vytváření dialogů mnohem komfortnější. Pokud využijete nějaký WYSIWYG editor jako např. AppStudio (viva Microsoft), pak je tvorba dialogů úplně jednoduchá, ale ani syntaxe rc souborů není příliš složitá. Programátor určí vizáž okna, umístí tlačítka a přidělí jim identifikátory. Potom pomocí funkce Windows přidělí proceduru pro zpracovávání zpráv a jednoduše jej otevře. Práce přes zdroje je mnohem jednodušší než vytvářet HWND proměnné pro všechny tlačítka, statické objekty atd. a ty po jednom otevírat funkcí CreateWindow. Jak tedy na to? Pokud využijeme Dev-C++, ukládá se zdrojový kód ke zdrojové části implicitně v souboru rsrc.rc. Nejdůležitější je u tohoto kompilátoru připojit k souboru rsrc.rc soubor winresrc.h, který obsahuje seznam všech hlavičkových souborů nutných ke tvorbě zdrojů. Další soubor, který je třeba připojit, je váš vlastní soubor s definicemi identifikátorů, obvykle resource.h, ale je možné vkládat definice i na začátek rsrc.rc, ale znepřehlední to strukturu projektu. Syntaxe rc souborů je jednoduchá. Nejprve se napíše identifikátor, který je v podstatě číslo, ale pomocí direktiv #define je dobré si je vhodně pojmenovat. Konvence je ID, dále písmeno typu např. D jako dialog, podtržítko a popis zdroje. Výsledný identifikátor by mohl vypadat IDD_HLAVNIOKNO, ale není to podmínka. Dále je třeba specifikovat typ zdroje. Nejčastěji používané jsou dialogy (specifikace "DIALOG"), nabídky ("MENU"), ikony ("ICON"), kurzory ("CURSOR"), bitmapy ("BITMAP"), fonty ("FONT"), akcelerátory, které jsou vlastně klávesové zkratky ("ACCELERATORS"), a také tabulky řetězců ("STRINGTABLE"), které se deklarují trochu jinak, ale jsou užitečné při tvorbě vícejazyčných programů. Pak je možno vsadit některé speciální příkazy, ale ty nejsou pro začínajícího programátora zase tak důležité. Potom mohou následovat parametry a obsah položky uzavřené mezi příkazy BEGIN a END nebo { a. Protože se každý typ deklaruje různě, bude lepší uvést příklady. Jednoduché okno může vypadat takto: IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 65 STYLE DS_MODALFRAME WS_MINIMIZEBOX WS_POPUP WS_VISIBLE WS_CAPTION WS_SYSMENU CAPTION "Dialogové okno" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,106,38,50,14 END PUSHBUTTON CONTROL "Storno",IDCANCEL,29,38,50,14 "Tak takto vypadá jednoduché okno.",idc_static, "Static",SS_SIMPLE WS_GROUP,34,15,119,8 Způsobů, jak vytvořit jednoduché okno, je spousta. Také text je možné vytvořit několika způsoby, styl okna je možné měnit. Pokud za tag CAPTION uvedeme např: MENU IDM_MENU1, bude k tomuto oknu použito menu IDM_MENU1. Parametry STYLE mohou být: WS_BORDER, WS_CAPTION, WS_CHILD, WS_CHILDWINDOW, WS_CLIPCHILDREN, WS_CLIPSIBLINGS, WS_DISABLED, WS_DLGFRAME, WS_GROUP, WS_HSCROLL, WS_ICONIC, WS_MAXIMIZE WS_MAXIMIZEBOX, WS_MINIMIZE, WS_MINIMIZEBOX, WS_OVERLAPPED, WS_OVERLAPPEDWINDOW,WS_POPUP, WS_POPUPWINDOW, WS_SIZEBOX, WS_SYSMENU, WS_TABSTOP, WS_THICKFRAME, WS_TILED, WS_TILEDWINDOW, WS_VISIBLE, WS_VSCROLL Popisovat je nebudu, snad jen že např: WS_MAXIMIZE přinutí okno být maximální, WS_MAXIMIZEBOX umožní aby se na oknu objevilo tlačítko pro maximalizaci, WS_VSCROLL nechá na okně vykreslit vertikální posuvník. Pro vytvoření standardního obvykle stačí použít WS_OVERLAPPEDWINDOW, které připojí některé parametry automaticky. Jednoduché menu IDR_MENU1 MENU DISCARDABLE BEGIN POPUP "&Soubor" BEGIN
10 END MENUITEM "&Nový", ID_SOUBOR_NOVY MENUITEM "&Otevřít...", ID_SOUBOR_OTEVRIT POPUP "&Seznam" BEGIN MENUITEM "1", ID_SOUBOR_SEZNAM_1 MENUITEM "2", ID_SOUBOR_SEZNAM_2 MENUITEM "3", ID_SOUBOR_SEZNAM_3 MENUITEM "4", ID_SOUBOR_SEZNAM_4, MENUBARBREAK MENUITEM "5", ID_SOUBOR_SEZNAM_5 MENUITEM "6", ID_SOUBOR_SEZNAM_6 END MENUITEM "Nefunkční", ID_SOUBOR_NEFUNKCNI, GRAYED MENUITEM SEPARATOR MENUITEM "&Konec", ID_SOUBOR_KONEC END Vhodně zvolené identifikátory, zpřehlední zdrojový kód nejen ve zdrojích. Vložením znaku & před některé písmeno způsobí, že stiskem tohoto písmena na klávesnici je daná položka zvolena. Připojování kurzorů, ikon a bitmap není tak složité a lze je napsat jedním řádkem: IDC_CURSOR1 CURSOR DISCARDABLE "CURSOR1.CUR" IDI_ICON1 ICON "ICON1.ICO" IDB_BITMAP1 BITMAP "BITMAP1.BMP" Uvedeme ID objektu, typ, rozšířené parametry a název souboru. Definice akcelerátorových kláves je podobná, uvedeme ID, klíčové slovo ACCELERATORS, paramtery a mezi tagy BEGIN a END zadáme jejich definice. Do uvozovek uvedeme písmeno klávesy nebo náhradní označení virtuální klávesy, dále identifikátor, a další parametry. Nejprve zvolíme typ klávesy (VIRTKEY nebo ASCII), SHIFT, ALT nebo CONTROL jsou vlajky stisku přesmykačů. Dále je možné uvést další parametry. IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE BEGIN "A", ID_ACCEL40011, VIRTKEY,SHIFT, ALT, NOINVERT "B", ID_ACCEL40012, VIRTKEY,NOINVERT VK_F1, ID_ACCEL40013, VIRTKEY,NOINVERT VK_F2, ID_ACCEL40014, VIRTKEY,CONTROL, ALT, NOINVERT "X", ID_ACCEL40015, ASCII, ALT, NOINVERT END Syntaxe tabulek řetězců je trochu odlišná: STRINGTABLE DISCARDABLE BEGIN IDS_STRING1 IDS_STRING2 END "Hello world" "Nazdar lidi" Je třeba uvést klíčové slovo STRINGTABLE parametry se definují až k jednotlivých řetězcům. Nejsložitější ze zdrojů je definice dialogových oken. Tato mohou obsahovat spousty různých ovládacích i statických prvků, jejichž popis je bohužel mimo rámec tohoto tutoriálku. V dalších dílech se pokusíme vytvořit funkční a trochu zajímavější Hello World. Věřím, že předchozí a díly nebyly příliš zajímavé, ale je třeba si uvést alespoň základní prvky Windows API pokud nevlastníte žádnou publikaci nebo referenční příručku.
11 Základ programování ve Windows a C++ (8.) Hello World konečně trochu použitelná aplikace Předchozí čtyři díly tohoto tutoriálku nejspíš nebyly příliš zajímavé, avšak pro ty, kteří si ještě nesehnali nějakou referenční příručku jazyka Windows C++, naprosto nezbytné. Seznam a krátký popis alespoň několika nejdůležitějších zpráv systému Windows bude velmi užitečný pro práci s okny i jinými dialogovými prvky. Základní popis zdrojů také nebyl zdaleka vyčerpávající, ale alespoň čtenář mého tutoriálku ví, že něco takového existuje. Pokud vám smysl předchozích článků trochu unikl a, stejně jako já, potřebujete vidět to všechno v akci než celý problém pochopíte, nezoufejte, nabízím vám celý, funkční a trochu lepší Hello World. Tento program demonstruje základní práci se zprávami, oknem, myší a zdroji. A protože asi nejsem jediný, kdo rád stahuje z internetu zdrojové kódy, které nefungují, snažil jsem se napsat následující program tak, aby stačilo pouze zkopírovat jej z prohlížeče do nového prázdného projektu každého kompilátoru, který dodržuje normu ANSI C++ a zkompilovat. Pokud využíváte Dev-C++, pak by měl vytvářený projekt obsahovat následující soubory: hello.dev, main.cpp, resource.h a rsrc.rc První soubor, který uvedu, je resource.h a obsahuje pouze definice všech prvků použitých v hlavním okně. #define IDD_DIALOG1 101 #define IDR_MENU1 102 #define IDC_BUTTON #define IDC_BUTTON #define IDC_BUTTON #define IDC_BUTTON #define IDC_BUTTON #define IDC_BUTTON #define IDC_EDIT 1006 #define ID_UKONCIT 2000 #define ID_ABOUT 2001 #define IDC_STATIC -1 #define IDC_TEXTIK 3000 Čísla použitých prvků jsou dle standardu Microsoftu, ale můžete si je libovolně měnit. Další soubor, který je třeba uvést je soubor obsahující zdroje, tedy rsrc.rc: #include <winresrc.h> #include "resource.h" // Budeme potřebovat náš soubor s definicemi a soubor s definicemi // stylů atd. (winresrc.h) 500 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "E:/CODE/DEV-CPP/Icon/MAINICON.ICO" // Sem můžeme vložit nějakou vlastní ikonku, aby Windows nepoužila // v průzkumníkovi tu implicitní škaredou IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 384, 264 STYLE WS_MINIMIZEBOX WS_POPUP WS_VISIBLE WS_CAPTION WS_SYSMENU CAPTION "Hello World 2001" // Také použijeme menu, uvedené dále v tomto kódu MENU IDR_MENU1 FONT 8, "MS Sans Serif" BEGIN // Toto tlačítko je zde jen na parádu, vytváří podklad pro text PUSHBUTTON "",IDC_BUTTON1,11,17,360,107,WS_DISABLED NOT WS_TABSTOP // IDC_TEXTIK - centrovaný text, včetně impliciního řetězce CTEXT "\n\n\n\n\nh E L L O W O R L D\n\n\n ",IDC_TEXTIK,14, 20,354,101,NOT WS_GROUP // Nějaká tlačítka, která použijeme v programu DEFPUSHBUTTON "Použít",IDC_BUTTON6,233,151,132,31 GROUPBOX "Ovládací prvky",idc_static,10,199,361,47 PUSHBUTTON "Minimalizovat",IDC_BUTTON2,18,214,72,21 PUSHBUTTON "Přepnout",IDC_BUTTON3,98,214,72,21 PUSHBUTTON "O programu",idc_button4,207,214,72,21 PUSHBUTTON "Ukončit",IDC_BUTTON5,288,214,72,21
12 // Úplně nanic text, ale každý si rád dá do aplikace svůj copyright CONTROL "(C) 2001",IDC_STATIC,"Static",SS_SIMPLE WS_DISABLED WS_GROUP,351,252,29,8 // Rámeček GROUPBOX "Zpráva v okně",idc_static,10,141,361,47 CONTROL "Text zprávy:",idc_static,"static",ss_simple WS_GROUP,26,161,42,8 // A nakonec editační pole EDITTEXT IDC_EDIT,77,151,152,31,ES_MULTILINE WS_VSCROLL 0x1000 END // Také budeme v naší aplikaci používat jednoduché menu // pouze se dvěmi možnými volbami IDR_MENU1 MENU DISCARDABLE BEGIN POPUP "&Program" BEGIN MENUITEM "&Ukončit\tAlt-F4", ID_UKONCIT END POPUP "&Nápověda", HELP BEGIN MENUITEM "&O programu...", ID_ABOUT END END V tomto zdrojovém kódu jsme vytvořili okno s několika ovládacími prvky a jednoduché menu. Také bych měl uvést, že velikost a pozice jednotlivých prvků není v pixelech, ale v dialogových jednotkách, jejichž velikost se mění v závislosti na použitém fontu a nastavení Windows. A nakonec hlavní zdrojový kód programu: // Připojíme všechny potřebné knihovny #include <windows.h> #include <string.h> #include <stdio.h> #include "resource.h" // Vytvoříme prototyp funkce, která bude spravovat naše okno BOOL CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int STDCALL WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR lpcmd, int nshow) { // Vše co nám stačí je otevřít okno a předat řízení na WndProc // Proč vytvářet okno přes CreateWindow a zpracovávat smyčku zpráv, // když to všechno za nás mohou udělat Windows DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,WndProc); return(0); // Toto byl pravděpodobně nejkratší main kód, který jste kdy napsali BOOL CALLBACK WndProc(HWND hwnd,uint Message,WPARAM wparam,lparam lparam) { // Zpravy, ktere nebudeme zpracovavat vraci FALSE aby Windows // samy rozpoznaly jestli je maji predat DefWindProc. switch(message){ case WM_INITDIALOG: // Byl otevren dialog... nechci aby si s tím hrál DefWndProc return TRUE; case WM_COMMAND: switch(loword(wparam)){ // Prikaz vzesel od ovl. prvku // Nebudeme testovat systemovy kod, protoze je nam jedno // jestli to bylo kliknuti nebo dvojklik. case IDC_BUTTON5: // Uživatel kliknul na tlačítko Ukončit case ID_UKONCIT: // Nebo vybral Ukončit z menu case IDCANCEL: // Nebo kliknul na X vpravo nahoře v okně {
13 int a; // - můj oblíbený název proměnných // MessageBox jsme probírali v prvním díle a = MessageBox (NULL, "Opravdu si přejete ukončit tento program?", "Potvrzení ukončení", MB_YESNO MB_DEFBUTTON2 MB_ICONQUESTION); if (a==idno) break; // Pokud ne tak vyskočíme ven // brnky brnky na nervy a = MessageBox (NULL, "A víte to jistě?", "Potvrzení ukončení", MB_YESNO MB_DEFBUTTON2 MB_ICONQUESTION); if (a==idno) break; EndDialog(hwnd,IDCANCEL); // Tato procedura zavírá dialogové okno break; case IDC_BUTTON2: // Tlačítko minimalizovat { CloseWindow(hwnd); // Nepříliš intuitivní pojmenování funkce (pozůstatek z Win16) break; case IDC_BUTTON3: // Standartizovane pipnuti je ve Windows taky celkem jednoduche MessageBeep(0); break; case IDC_BUTTON4: case ID_ABOUT: // Tlačítko O programu nebo z menu. MessageBox (NULL, "Hello World 2001 Ukázkový prográmek, pro demonstraci dialogů, menu, a zpráv.", "O programu", MB_ICONASTERISK); // Predchozi tri radky vypadaji otresne, ale Mingw kompilator je nejaky divny a neumi \n break; case IDC_BUTTON6: // Tlačítko Použít { // nacteme retezec z editacniho pole a zkopirujeme do statickeho textu char *text; // Sestavime si novy text text=(char*)globalalloc(gmem_fixed GMEM_ZEROINIT,65536); SendDlgItemMessage(hwnd,IDC_EDIT,WM_GETTEXT,65535,(long)text); SendDlgItemMessage(hwnd,IDC_TEXTIK,WM_SETTEXT,65535,(long)text); // Toto je v podstate to same jako pouzit funkce // GetDlgItemText a SetDlgItemText GlobalFree(text); // a je to break; return TRUE; case WM_MOVE: // Také můžeme zpracovávat zprávu, že uživatel pohybuje oknem { char *titulek; // Sestavime si novy titulek titulek=(char*)globalalloc(gmem_fixed GMEM_ZEROINIT,256); sprintf(titulek,"hello World 2001 >>> Probiha presun okna na: %4.4d; %4.4d",LOWORD((DWORD)lParam),HIWORD((DWORD)lParam)); // a posleme ho sami sobe - teda svemu oknu SendMessage(hwnd,WM_SETTEXT,0,(long)titulek); GlobalFree(titulek); return TRUE; case WM_MOUSEMOVE: // Také můžeme testovat pohyb myši v našem okně { char *titulek; // Sestavime si novy titulek titulek=(char*)globalalloc(gmem_fixed GMEM_ZEROINIT,256); sprintf(titulek,"hello World 2001 >>> Pozice mysi je: %4.4d,%4.4d", LOWORD((DWORD)lParam), HIWORD((DWORD)lParam) ); // A hotový text nastavíme na titulek SendMessage(hwnd,WM_SETTEXT,0,(long)titulek); GlobalFree(titulek); return TRUE; // Takto lze testovat zprávy všeho možného // Zprávy, které nebudeme zpracovávat předáme DefWndProc tak že vrátíme FALSE default: return FALSE;
14 return TRUE; Pokud odstraníte všechny komentáře, přijdete na to, že ve skutečnosti je to velmi jednoduchý prográmek a má spoustu možností rozšíření. Ovládání je také intuitivní. Stačí napsat nějaký text a kliknout na Použít. Tento prográmek je prozatím zakončením tohoto krátkého tutoriálku. V žádném případě jsem nevyčerpal všechna zákoutí Windows API, avšak úzký základ jsem popsal. Pokud vůbec netušíte o co v tomto tutoriálu šlo, bude třeba prostudovat nějaký tutoriálek DOS céčka a vytvořit několik funkčních programů. Je pravda, že programováním pro Windows se mnoho věcí zjednodušší, ale jen v případě, že to umíte udělat složitě. Základ programování ve Windows a C++ (9.) Okna, procesy oken a jak na ně. Ve Windows rozeznáváme dva typy procesů a to thready (vlákna) a okna (windows). Zásadní rozdíl je v tom, že okno lze vidět, thread nikoliv. V tomto díle si trochu přiblížíme okna, práci s nimi a s jim určenými zprávami. Tuto tématiku jsem již v některém z předchozích dílů nakousnul, ale teď se k ní vrátím podrobněji. Pokud čtete tento tutoriálek od začátku, jistě víte jak vytvořit klasické dialogové okno pomocí předdefinované šablony ve zdrojích a pracovat s ním pomocí zpráv. Avšak mnohdy je třeba pracovat s oknem na mnohem nižší úrovni než na té, kterou nám poskytuje klasické vyvolání dialogu. Cesta, kterou bych zde chtěl přiblížit je obvykle uváděna na začátcích tutoriálků k Windows Céčku (++), ale pro vývoj jednoduchých až mírně složitých aplikací není třeba a vše lze zajistit pomocí dialogů, ať modálních či nemodálních. Při programování pro Windows je za okno považován jakýkoli prvek viditelný na obrazovce a to ať už okno jako šedý podklad s titulkovým pruhem a obtáhnuté světlejšími či tmavšími čárami k vytvoření efektu 3D, nebo prosté tlačítko, rámeček atd. Vytváříme-li toto vše pomocí šablony ze zdrojů, obstarají Windows za nás všechny potřebné akce a to jak vytvoření a odstranění těchto objektů, tak skoky tabulátoru a další minoritní akce. Pokud chceme tyto prvky nějak speciálně ovládat, musíme je spravovat ručně. Zvláště je to třeba při programování aplikací, komunikujících s uživatelem na základě dynamicky měněných oken. Jak na to? V základě budeme potřebovat spoustu proměnných typu HWND, tedy rukojetí na jednotlivé okna. Podle těchto rozpoznávají Windows jednotlivá okna. Jedno HWND pro každé okno, které budeme používat (okno, tlačítka, posuvníky, atd...). Statické okna, které nebudeme upravovat (např. rámečky) nemusí mít svou rukojeť, pokud je nebudeme měnit. Ke tvorbě a likvidaci oken využijeme funkce CreateWindow, CreateWindowEx a DestroyWindow. Dalším rozdílem je, že pro celou instanci aplikace reprezentované hlavním oknem (které je mimochodem třeba vytvářet dle třídy okna, kterou si musíme vytvořit a zaregistrovat) musí náš program zpracovávat smyčku, tj. testovat přítomnost zprávy, její přeložení a odeslání proceduře hlavního okna. Procedura okna je podobná procedurám dialogových oken. Rozdíl je, že místo vrácení TRUE nebo FALSE vracíme co chceme (skoro), tudíž pokud potřebujeme aby se pro některou zprávu provedla implicitní akce voláme funkci DefWndProc s danými parametry. Ve skutečnosti není práce s těmito okny zase tak složitá, jak by se mohlo na první pohled zdát. Vše potřebné k vytvoření jednoduchého okna dostanete k dispozici, pokud v Dev-C++ vytvoříte nový projekt podle šablony Windows Application a sem již můžete vložit vlastní kód. Pokud ovládáte angličtinu, vyčtete toho spoustu v komentářích, zde uvedu pouze tu část kódu, která zprostředkuje zobrazení textu uprostřed okna i při změně jeho velikosti. Mimo funkce vytvoříme globální proměnnou textik, která bude obsahovat ukazatel na statický objekt textu a proměnnou do které si uložíme instanci aplikace. HWND textik = NULL; HINSTANCE hinst; Samozřejmě někam na začátek funkce WinMain vložíme řádek: ::hinst = hthisinstance;
15 A do procedury okna, přesněji do switche, vložíme následující bloky: case WM_CREATE: // místo WM_INITDIALOG (u procedur dialog ů) zpracováváme WM_CREATE textik = CreateWindow( "STATIC", "libovolný text", SS_CENTER WS_CHILD, // styl centrovaneho textu 0,0,0,0, // pro rozmery zatim pouzijeme 0 hwnd,null,hinst,null); ShowWindow(textik,SW_SHOW); // Okno (text) zobrazíme break; Styl SS_CENTER místo SS_LEFT jsem zvolil záměrně. Usnadní nám to programování centrování textu. case WM_PAINT: { // Zajistime provedeni standartni sluzby pro kresleni okna DefWindowProc(hwnd, message, wparam, lparam); // Potrebujeme rozmery okna RECT okno; GetWindowRect(hwnd, &okno); int sirka = okno.right - okno.left; int vyska = okno.bottom - okno.top; // Tipnem si kolik pixelu asi bude ten textik // Zbytek za nas udela SS_CENTER int tip = 200; int posy = (vyska/2) - 10; // 10= polovina vysky znaku int posx = (sirka/2) - (tip/2); MoveWindow(textik, posx, // pozice X posy, // Y break; tip, // sirka 20, // vyska TRUE);// vlajka prekresleni Správa takovýchto oken a jejich prvků není jednoduchá, avšak jakmile si ji dostanete do podvědomí, budete okna ovládat bez problémů. Základ programování ve Windows a C++ (10.) Základy kreslení ve Windows, trocha teorie a jednoduchý příklad Když jsem se učil programovat pro Windows, přišlo mi neskutečně složité kreslení na obrazovku. Vzhledem k jednoduchosti použití BGI knihoven pod BC, TC nebo TP je to opravdu pro začínajícího programátor trochu obtížné k pochopení. Nejprve si musíme uvědomit, že obrazovka už není jenom naše. Je zde spousta jiných oken, plocha a také hlavní panel s tlačítkem Start. Nejprve si vysvětlíme, jak jsou pod Windows API okna kreslená. Standardně máme pro kreslení k dispozici okno a k tomuto oknu náleží procedura, která reaguje na zprávy od systému nebo jiných oken a procesů. Když píšeme vlastní proceduru okna, voláme při obdržení zpráv, které nezpracováváme, funkci DefWndProc (popř. DefDlgProc nebo u dialogů vracíme 0) a takto zajistíme, že Windows za nás udělají zbytek práce, tj. i kreslení. Pro kreslení oken Windows posílají dvě zprávy, a to WM_PAINT a WM_NCPAINT. WM_PAINT je zpráva, kterou Windows oznamují proceduře okna, že vyžadují znovu vykreslit obsah klientské části okna. Standardně v této části okna nic k překreslení není, a tak DefWindProc neprovádí nic. WM_NCPAINT obdrží okno v případě, že je třeba překreslit neklientskou část okna. Do této části spadá rámeček, titulkový pruh a jeho obsah, popř. menu. Obvykle není třeba tuto zprávu zpracovávat. My budeme odpovídat na zprávu WM_PAINT. Začínáme jednodušším příkladem Chceme-li kreslit do okna, budeme v programu potřebovat několik dalších proměnných. Nejprve je to hdc typu HDC, tedy handle na kontext zařízení, podle něhož Windows poznají, do kterého okna kreslit, a dále struktura typu PAINTSTRUCT, ve které si naše aplikace uchová informace o kreslení.
16 HDC hdc; PAINTSTRUCT ps; Předtím než začneme vlastní kreslení, použijeme funkci BeginPaint, kterou zinicializujeme kreslící mechanizmy Windows vzhledem k našemu oknu. Za parametry uvedeme handle na naše okno a referenci na strukturu PAINTSTRUCT. hdc = BeginPaint( hwnd, &ps ); Pro kreslení si Windows uchovávají sadu objektů (neplést s objekty v C++), kterými se kreslí. Jsou to Bitmapa, Štětec (brush), Font, Pero (pen) a Oblast (region). Pero je používáno ke kreslení především čar. Štětci kreslíme výplně definovaných oblastí. Font užíváme k definici stylu písma. Ke kreslení můžeme vytvořit vlastní objekty nebo použít předdefinované. Aby Windows použily náš objekt, musíme jej vybrat funkcí SelectObject. V následujícím řádku nahradíme aktuální pero novým vlastním. Toto pero bude plná čára o tloušťce 1 pixel a modré barvě. SelectObject(hDC, CreatePen( PS_SOLID, 1, 0x00FF0000 ) ); A nyní již můžeme kreslit. Jako v BGI přesuneme aktuální pozici kurzoru na souřadnice [0,0], tj. do levého horního rohu našeho okna. MoveToEx( hdc, 0, 0, NULL ); A z tohoto bodu nakreslíme čáru do bodu [100,100]. LineTo( hdc, 100, 100 ); Nyní na pozici [30,10] nakreslíme červený bod. SetPixel( hdc, 30, 10, 0x000000FF ); A po dokončení kreslení zavoláme funkci EndPaint, která dokončí naše kreslící operace a zjednodušeně řečeno způsobí, že se to, co jsme kreslili, objeví v okně. EndPaint( hwnd, &ps ); Jak jednoduché. V příštím díle si povíme něco o tom, jak do okna umístit jakýkoliv text. Základ programování ve Windows a C++ (11.) Kreslení textu do okna, nastavení fontu a vlastností textu V minulém díle jsem vám předvedl, jak jednoduše kreslit do okna čáry a body. K tomuto bych ještě mohl uvést, že standardní barvy systému, které si můžete nastavit v ovládacích panelech (panel obrazovka), lze získat funkcí GetSysColor. Výčet parametrů (prefix COLOR_) pak naleznete v souboru WINUSER.H nebo v referenci Win32. Začněme s tím, jak do okna nakreslit text. Opět bychom měli odpovídat na zprávu WM_PAINT. Funkce BeginPaint a EndPaint již nebudu uvádět, viz minulý díl. Chceme-li nakreslit text, musíme si nejprve vytvořit font. K tomuto účelu si vytvoříme proměnnou typu HFONT, třeba hf, která bude obsahovat handle na námi vytvořený font, který budeme používat ke kreslení textu. Font si tedy vytvoříme funkcí CreateFont. HFONT hf; hf = CreateFont( 16, // Výška písma. Je-li zadáno 0 pak je použita implicitní hodnota, // je-li menší než 0, pak je použita hodnota v pixelech. 0, // Logická průměrná šířka znaku ( 0 - implicitní ) 0, // Úhel sklonu písma
17 ); 0, // Úhel orientace vzhledem k řádku FW_BOLD, // Řez písma 0, // Určuje, zda je písmo kurzíva 0, // Určuje, zda je písmo podtržené 0, // Určuje, zda je písmo přeškrtnuté DEFAULT_CHARSET, // Určuje typ znakové sady OUT_DEFAULT_PRECIS, // Určuje preciznost výpočtu stylu písma CLIP_DEFAULT_PRECIS,// Přesnost umístění DEFAULT_QUALITY, // Kvalita vykreslování písma FF_ROMAN, // Typ písma, který se zvolí není-li v systému vypraný font "Arial CE" // Font, kterým se bude text kreslit Dále tento font vybereme funkcí SelectObject. SelectObject( hdc, (HGDIOBJ) hf ); Před začátkem kreslení si ještě musíme vytvořit strukturu RECT, kterou následně předáme Windows. Náš text bude kreslen do takto vymezené oblasti. RECT rect = { 0,0,200,50 ; Nyní už Windows ví, že při dalším kreslení textu budeme používat náš font a kam chceme kreslit, takže nám nic nebrání nakreslit do našeho okna libovolný text. K tomuto můžeme použít několik funkcí. První z nich je DrawText, dále její rozšířená verze DrawTextEx, TextOut a nebo její rozšířená verze ExtTextOut. Příklady jsou zde. DrawText( hdc, "PC Svět", -1, &rect, DT_LEFT DT_NOPREFIX DT_SINGLELINE ); TextOut( hdc, 0, 0, "PC Svět", 7); Ať už jste použili jakoukoli funkci, měl by být text nakreslen v okně. Vzhled textu může být dále upraven API funkcemi jako SetTextColor, SetBkColor a SetBkMode třeba takto: SetTextColor( hdc, 0x0000FF00 ); SetBkColor( hdc, 0x000000FF ); SetBkMode( hdc, TRANSPARENT /*nebo OPAQUE*/ ); Tímto způsobem můžete vytvořit velmi zajímavé nadpisy a popisky, avšak z uživatelova pohledu by mohla být spousta barevných textů spíš rušivá a může znepříjemňovat práci s programem. Jako vždy platí: všeho s mírou. Základ programování ve Windows a C++ (12.) Popis funkcí a postup pro kreslení bitmap a ikon do vašeho formuláře Nakreslení bitmapy do okna je další z důležitých znalostí autorů programů pro Windows. I v profesionálních programech se vždy najde v okně místo, kam vložit logo. Práce s bitmapami BMP je relativně složitá. Z důvodů paměťové náročnosti a především kvůli tzv. flicker free kreslení neboli kreslení bez problikávání obrazu je třeba bitmapy přenášet na obrazovku pomocí dalšího kontextu zařízení, který je umístěn v paměti. Jak tedy na to. Nejprve, nejlépe při zprávě WM_CREATE načteme náš obrázek funkcí LoadBitmap a k udržení handle na obrázek si mimo proceduru okna definujeme proměnnou HBITMAP. Předpokládejme tedy, že máme ve zdrojích umístěn obrázek, jehož identifikátor je 100: 100 BITMAP PRELOAD MOVEABLE "obr.bmp" Programujeme tedy:
18 HBITMAP hb;... hb = LoadBitmap(hInstance, MAKEINTRESOURCE(100)); První parametr funkce LoadBitmap (hinstance) je handle na instanci aplikace, které obdržíme při vstupu do funkce WinMain. Jako odpověď na WM_PAINT nejprve zavoláme funkci BeginPaint (viz díl 10.). A nyní už vytvoříme kontext zařízení, který bude v paměti a do něhož nahrajeme náš obrázek. HDC hmemory = CreateCompatibleDC(hDC); A funkcí SelectObjekt zvolíme do tohoto kontextu naši bitmapu. SelectObject(hMemory, hb); Windows nám dále poskytují velmi rychlou funkci BitBlt, kterou použijeme k přenesení bitmapy z paměťového kontextu do kontextu naší aplikace. Předpokládáme, že velikost bitmapy je 123x456 pixelů. BitBlt(hDC, 0,0, 123, 456, hmemory, 0, 0, SRCCOPY); A nyní už můžeme vytvořený paměťový kontext odstranit a uvolnit tak paměť. DeleteDC(hMemory); Takto můžeme nakreslit na obrazovku libovolnou bitmapu. Potřebujeme-li nakreslit do okna jednoduchou ikonku, rozhodně nebudeme ale používat takto složitý postup. Ke kreslení ikon můžeme použít funkci DrawIcon nebo DrawIconEx, nejprve ale musíme ikonku načíst. To můžeme provést funkcí LoadIcon nebo LoadImage. Tyto funkce jsou rozdílné v tom, že funkcí LoadImage můžeme načíst i kuzor a bitmapy, definovat rozměry ikony, nastavení průhledných částí a barev, zatímco funkce LoadIcon načte ikonu s uživatelem nastavenými rozměry (SM_CXICON a SM_CYICON). Funkcí LoadImage můžeme načítat také ikony ze souborů a to tak, že název souboru uvedeme místo názvu zdroje a specifikujeme vlajku LR_LOADFROMFILE. Příklady načtení ikony: hi = LoadIcon(hInstance, MAKEINTRESOURCE(200) ); hi = LoadImage(hInstance, MAKEINTRESOURCE(200), IMAGE_ICON, 48, 48, LR_DEFAULTCOLOR ); Proměnná hi bude typu HICON a udržuje nám handle na načtenou ikonu. A do našeho okna můžeme nakreslit ikonku na pozici [10,10] třeba takto: DrawIcon( hdc, 10, 10, hi ); Myslím, že kreslení grafických prvků pod Windows je nyní dostatečně objasněno. Více informací o kreslení pod Windows hledejte především v referencích Windows API. Základ programování pro Windows v C++ (13.) Standardní ovládací prvky - tlačítka, rámečky, zaškrtávací políčka, přepínače Jak jsme si v předchozích dílech seriálu ukázali, není problém vytvořit okno aplikace pomocí resource (zdrojů). Pro tvorbu takovýchto dialogů můžeme na internetu najít i několik kvalitních programů, např. Weditres. Pokud chceme vytvořit složitější aplikaci, mohou nám takovéto dialogy v mnohém pomoci, ale základní hlavní okno aplikace takto vytvářet určitě nebudeme. Zapomeňme nyní na chvíli na dialogy a pojďme se to vše naučit dělat ručně. Jak jste se mohli dočíst v díle 9, pro vlastní tvorbu okna použijeme funkci CreateWindow, případně CreateWindowEx. Funkce CreateWindowEx je definována takto: HWND CreateWindowEx( DWORD dwexstyle, LPCTSTR lpclassname, LPCTSTR lpwindowname, DWORD dwstyle, int x, int y, // rozšířené styly okna // název třídy okna // jméno okna // styly okna // horizontální pozice okna // vertikální pozice okna
19 int nwidth, // šířka okna int nheight, // výška okna HWND hwndparent, // handle na rodičovské okno HMENU hmenu, // handle na menu okna HINSTANCE hinstance, // handle instance běžící aplikace LPVOID lpparam // další data pro tvorbu okna ); Třídu okna vytvoříme a registrujeme podobně jako v příkladu v díle č.3, jméno okna specifikuje vnitřní název okna, který různé třídy oken používají jinak. Standardní okna, jak je zná uživatel, jej interpretují jako název v titulkovém pruhu. LPVOID lpparam pro další data pro tvorbu okna využívají především MDI aplikace, v jednoduchých programech není potřeba. V tomto článku se ovšem nebudeme věnovat samotnému oknu, nýbrž jeho prvkům. Jak již bylo vysvětleno v minulých dílech, jsou všechny prvky okna v podstatě také okny, jediný rozdíl je v tom, že tato okna mají přiřazen styl WS_CHILD, kterým toto okno přiřazujeme jinému (mateřskému neboli top-level) oknu. Pro všechny běžně používané prvky definují Windows vždy jednu třídu okna, kterou můžeme používat bez nutnosti vytvářet si jinou. V každém programu nalezneme tlačítko. Pro všechna tlačítka je definována třída "BUTTON". Pokud tento specifikujeme ve funkci CreateWindow a jako styl specifikujeme minimálně WS_CHILD a WS_VISIBLE, vytvoří nám Windows klasické tlačítko. Vzhled tohoto tlačítka můžeme dále specifikovat styly: BS_PUSHBUTTON - vytvoří klasické tlačítko - není třeba jej specifikovat BS_DEFPUSHBUTTON - vytvoří tlačítko jež je zvýrazněno a mělo by být aktivní pro vstup z klávesnice BS_GROUPBOX - nevytvoří klasické tlačítko ale jakousi drážku pro ohraničení určité oblasti okna, daný název tlačítka je použit jako nadpis tohoto rámečku BS_CHECKBOX - vytvoří místo tlačítka zaškrtávací políčko, vhodné do formulářů, kde může být zvoleno více voleb. U tohoto stylu obrdží aplikace informaci o kliknutí, ale změnu stavu již musí provést program. Text je zarovnán vpravo od tohoto políčka, není-li specifikováno jinak. BS_AUTOCHECKBOX - vytvoří zaškrtávací políčko jako BS_CHECKBOX ale na rozdíl od BS_CHECKBOX nechá na Windows správu zaškrtávání. BS_3STATE - podobně jako BS_CHECKBOX avšak políčko může mít i neurčitý stav (zašedlé). BS_AUTO3STATE - podobně jako BS_AUTOCHECKBOX avšak políčko může mít i neurčitý stav (zašedlé). BS_RADIOBUTTON - místo tlačítka je vytvořen kruhové políčko, které je určeno především do seznamů, kdy jen jedna položka může být zaškrtnuta. Funkce je podobná jako u BS_CHECKBOX. BS_AUTORADIOBUTTON - podobně jako u BS_RADIOBUTTON ale správa reakce na kliknutí je ponechána na Windows. U radio nebo check boxů můžeme dále specifikovat tyto styly: BS_LEFTTEXT - zarovná text vlevo od daného prvku BS_LEFT - zarovná text zleva na pravé straně prvku (implicitní) BS_PUSHLIKE - checkbox, 3statebox nebo radiobutton získají tímto stylem vzhled jako klasické tlačítko. BS_RIGHT - zarovná text zprava na pravé straně prvku (implicitní) BS_RIGHTBUTTON - stejná funkce jako BS_LEFTTEXT Klasická tlačítka mohou mít dále tyto styly: BS_BITMAP - specifikuje, že tlačítko bude zobrazovat bitmapu BS_BOTTOM - umístí text na dolní okraj tlačítka BS_CENTER - horizontálně vycentruje text v tlačítku BS_ICON - specifikuje, že tlačítko zobrazuje ikonu BS_MULTILINE - v případě potřeby bude text na tlačítku zalomen do více řádků BS_TEXT - specifikuje, že tlačítko zobrazuje text BS_TOP - umístí text k hornímu okraji tlačítka BS_VCENTER - vertikálně vycentruje text na tlačítku dále lze použít styly BS_LEFT, BS_RIGHT, v tomto případě však umisťují text k danému okraji tlačítka Pro všechny typy tlačítek lze dále specifikovat styly: BS_NOTIFY - tlačítko posílá mateřskému oknu notifikační zprávy jako BN_DBLCLK, BN_KILLFOCUS, BN_SETFOCUS a další BS_OWNERDRAW - tlačítko je vykreslováno aplikací (na ukázku ručního kreslení tlačítek se můžete těšit do některého z příštích dílů).
20 Některé styly je možné kombinovat a tím dosáhnout zajímavých výsledků. Zkuste si třeba přiřadit tlačítku WS_DLGFRAME. Získáte tak velice zajímavý okraj pro dané tlačítko. A ještě poslední detail. Pokud se vám nelíbí klasický styl textu na tlačítku, není žádný problém získat pomocí funkce CreateFont handle na font a přiřadit jej danému tlačítku funkcí SendMessage( hwnd, WM_SETFONT, (WPARAM)hfFont, MAKELPARAM(1, 0) ); kde hwnd je handle na dané tlačítko a hffont je handle přiřazovaného fontu. Ono je sice hezké mít pěkné tlačítko, jenže pokud s ním neumíme komunikovat, je nám na nic. Windows definují pro komunikaci s tlačítky tyto zprávy: BM_CLICK - parametry žádné - posláním této zprávy tlačítku můžete nasimulovat stisk tlačítka, jako by bylo stisknuto uživatelem. BM_GETCHECK - parametry žádné - vrátí stav checkboxu nebo radiobuttonu. BST_CHECKED = tlačítko je zaškrtnuto, BST_UNCHECKED = tlačítko není zaškrtnuto, BST_INDETERMINATE = tlačítko je v mezistavu, je zašedlé BM_GETIMAGE - parametry žádné - vrátí handle na ikonu nebo bitmapu použitou pro dané tlačítko BM_GETSTATE - parametry žádné - vrátí aktuální stav tlačítka. Vrácená hodnota je bitovým součtem hodnot uvedených v BM_GETCHECK a BST_FOCUS má-li tlačítko fokus, případně BST_PUSHED je-li tlačítko stisknuto. BM_SETCHECK - wparam = stav tlačítka (jako BM_GETCHECK) - nastaví nový stav tlačítka BM_SETIMAGE - lparam = handle na novou ikonu nebo bitmapu - nastaví tlačítku ikonu nebo bitmapu BM_SETSTATE - wparam = stav tlačítka (jako BM_GETSTATE) - nastaví nový stav tlačítka BM_SETSTYLE - wparam = nový styl tlačítka; lparam = MAKELPARAM(fRedraw, 0) - fredraw je nenulový má-li být tlačítko nově překresleno - nastaví nový styl tlačítka Dále bychom od tlačítek měli odchytávat notifikační zprávy, abychom tak získali přehled o tom, co s oknem aplikace provádí uživatel. Notifikační zprávy od tlačítek mimo BN_CLICKED obdržíme v případě, že je definován styl BS_NOTIFY. BN_CLICKED obdrží aplikace vždy. Všechny notifikační zprávy jsou posílány v kontextu zprávy WM_COMMAND, a to jako horní slovo parametru wparam (HIWORD(wParam)). V parametru lparam dostaneme vždy handle na daný prvek, a ve spodním slovu parametru wparam můžeme nalézt identifikační číslo daného prvku v okně. Notifikační zprávy od tlačítek jsou: BN_CLICKED - již zmiňovaná, mateřské okno ji obdrží pokaždé, když uživatel na některé tlačítko klikl. BN_DBLCLK - oznamuje, že uživatel provedl dvojklik nad daným tlačítkem. Je posíláno pouze radiobuttonům a aplikací kresleným tlačítkům. BN_DISABLE - oznamuje, že tlačítko bylo znefunkčněno. BN_HILITE, BN_PUSHED - oznamuje, že nad tlačítkem je kurzor myši a uživatel stiskl tlačítko myši. BN_KILLFOCUS - oznamuje, že tlačítko již nemá fokus BN_SETFOCUS - oznamuje, že tlačítko získalo fokus a reaguje nyní na příkazy z klávesnice BN_UNHILITE, BN_UNPUSHED - oznamuje, že stisk tlačítka byl uvolněn Tlačítko je v GUI Windows asi nejpoužívanějším prvkem a žádná aplikace by se bez něj neobešla. V žádném případě však práce s ním není tak náročná, jak se může z tohoto článku zdát. Pomocí této stručné reference nyní můžete pracovat s klasickými tlačítky, zaškrtávacími políčky, přepínacími tlačítky (radiobuttony) a rámečky pro tyto objekty. V příštích dílech si ukážeme podobnou stručnou referenci pro další standardní prvky oken. Základ programování pro Windows v C++ (14.) Standartní ovládací prvky - editační pole Mezi standardními Common controls pro Windows nalezneme dvě třídy, řešící tento problém. Třídu "EDIT" a třídu "RICHEDIT". Protože je Richedit trochu složitější, začneme klasickými editačními políčky "EDIT". Vytvořením okna za použití třídy EDIT získáme běžné editační políčko, jaké známe ze spousty programů a pomocí kterého můžeme komunikovat s uživatelem našeho programu. Do takovéhoto běžného políčka můžeme nechat uživatele vepsat libovolný text a na jeho základě se dále rozhodnout, jak bude program pokračovat. Pokud při tvorbě nespecifikujeme žádný styl, vytvoří nám Windows jen bílé pole, do kterého je možné text vepsat. Pro úpravu vzhledu políčka můžeme použít tyto styly:
Gabriela Janská. Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz
PŘÍRUČKA KE KURZU: ZÁKLADY PRÁCE NA PC MS WORD 2003 Gabriela Janská Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz Obsah: 1. Písmo, velikost písma, tučně, kurzíva, podtrhnout
KAPITOLA 3 - ZPRACOVÁNÍ TEXTU
KAPITOLA 3 - ZPRACOVÁNÍ TEXTU KLÍČOVÉ POJMY textové editory formát textu tabulka grafické objekty odrážky a číslování odstavec CÍLE KAPITOLY Pracovat s textovými dokumenty a ukládat je v souborech různého
Formátování pomocí stylů
Styly a šablony Styly, šablony a témata Formátování dokumentu pomocí standardních nástrojů (přímé formátování) (Podokno úloh Zobrazit formátování): textu jsou přiřazeny parametry (font, velikost, barva,
aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz
aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz Operační systém Windows - první operační systém Windows byl představen v roce
GUI ve Win32API a MFC I KIV / WIN
GUI ve a MFC I II Obsah okenní třída okno styly okna okenní funkce důležité zprávy základní ovládací prvky okno z pohledu MFC 2 Vytvoření okna registrace obsluhy zpráv nepovinné pro standardní ovládací
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů
Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 2. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.
Zdokonalování gramotnosti v oblasti ICT Kurz MS Excel kurz 2 1 Obsah Práce s listy v MS Excel 2010... 4 Výběr (volba) listu... 4 Skrýt/zobrazit listy... 5 Klik na záložky... 5 Skrýt list (využítí pásu
Gymnázium Ostrava Hrabůvka, příspěvková organizace Františka Hajdy 34, Ostrava Hrabůvka
Gymnázium Ostrava Hrabůvka, příspěvková organizace Františka Hajdy 34, Ostrava Hrabůvka Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030 MS Power Point Metodický
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
II. Elektronická pošta
II. Chceme-li si přečíst poštu, klikneme v levém sloupci na nápis Doručená pošta. Máme před sebou seznam e-mailů seřazených podle data a času přijetí. Pokud máme zapnuto zobrazení náhledu, ve spodní nebo
Spuštění a ukončení databázové aplikace Access
Spuštění a ukončení databázové aplikace Access Aplikaci Access spustíte tak, že vyhledáte její ikonu v nabídce "Start" a klepnete na ní. Najdete ho v Sekci Všechny programy/mircosoft Office. Po výběru
Popis rozšířujících funkcí JScriptu
Popis rozšířujících funkcí JScriptu Tato příloha obsahuje stručný popis funkcí, které rozšiřují základní funkce JScriptu. Ty usnadňují komunikaci s jádrem programu, takže není potřeba pokaždé sestavovat
Návod na tvorbu časové přímky v programu Microsoft PowerPoint 2013
Návod na tvorbu časové přímky v programu Microsoft PowerPoint 2013 1 Obsah 1 OBSAH... 1 2 ÚVOD... 1 3 OTEVŘENÍ PREZENTACE MICROSOFT POWERPOINT 2013... 2 4 ULOŽENÍ DOKUMENTU... 3 5 FORMÁT PROJEKTU... 4
8. OKNA 73. obr. 1 Roletové menu "Okna"
8. OKNA Obsah 8. OKNA 73 OBSAH 73 8.1 UKLÁDÁNÍ UŽIVATELSKÝCH OKEN 76 8.2 NAČÍTÁNÍ UŽIVATELSKÝCH OKEN 77 8.3 VLASTNOSTI OKEN 77 8.3.1 VLASTNOSTI ZÁLOŽKOVÉHO OKNA 78 8.4 VOLBA OKNA 78 8.5 ZRUŠENÍ OKNA 79
Popis ovládání aplikace - Mapový klient KÚPK
Popis ovládání aplikace - Mapový klient KÚPK Úvodní informace K využívání této aplikace musíte mít ve Vašem internetovém prohlížeči nainstalovaný plugin Adobe Flash Player verze 10 a vyšší. Mapová aplikace
Práce v programu Word 2003
Práce v programu Word 2003 Prostředí programu WORD 2003 Program WORD 2003 slouží k psaní textů, do kterých je možné vkládat různé obrázky, tabulky a grafy. Vytvořené texty se ukládají, jako dokumenty s
Ignijet_2007 Externí monitor
Ignijet_2007 Externí monitor ver 2010-06-17 Úvod Externí monitor dokáže monitorovat vybrané parametry zapalování a zobrazovat je dle modifikovatelného nastavení a to jak hodnoty parametrů, tak jednoduché
Základní nastavení systému Windows 7
Základní nastavení systému Windows 7 Ing. Miroslava Trusková 2012 1 Dobrý den, vítejte v lekci Systémová nastavení. Dnes si vysvětlíme, jak si přizpůsobit nastavení počítače tak, aby vyhovoval Vašim požadavkům.
2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML
ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní
Konvertor diakritiky 3. Instalace
OBSAH Popis... 2 Ovládání aplikace... 3 Odstranění diakritických znamének... 4 Operace s textem... 4 Nastavení aplikace... 4 Písmo... 4 Jazyk... 4 Přidání dalšího jazyka do aplikace... 5 Znaky... 5 Instalace
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
MS SQL Server 2008 Management Studio Tutoriál
MS SQL Server 2008 Management Studio Tutoriál Vytvoření databáze Při otevření management studia a připojením se ke konkrétnímu sql serveru mám v levé části panel s názvem Object Explorer. V tomto panelu
Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.
Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého
THEOPHILOS. (návod k použití)
THEOPHILOS (návod k použití) Nejprve si z internetových stránek www.theophilos.com (nebo www.theophilos.sk) stáhněte všechny soubory, které Vás zajímají a nainstalujte je (podrobný návod na instalaci programu
Prostředí Microstationu a jeho nastavení. Nastavení výkresu
Prostředí Microstationu a jeho nastavení Nastavení výkresu 1 Pracovní plocha, panely nástrojů Seznámení s pracovním prostředím ovlivní pohodlí, rychlost, efektivitu a možná i kvalitu práce v programu Microstation.
01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.
01. HODINA 1.1 Spuštění programu VB 2010 - pomocí ikony, z menu Start. - po spuštění si můžeme vybrat, zda chceme vytvořit nový Projekt a jaký nebo zda chceme otevřít již existující Projekt. 1.2 Prvky
GOODWILL vyššší odborná škola, s. r. o. P. Holého 400, Frýdek-Místek
GOODWILL vyššší odborná škola, s. r. o. P. Holého 400, Frýdek-Místek Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030 MS Word Metodický materiál pro základní
Tabulkový procesor. Orientace textu. O úroveň níž O úroveň výš
Formátování Formátováním rozumíme změnu vlastností daného objektu, dle našich představ a možností programu MS Excel. Formátovat můžeme texty v buňkách, můžeme formátovat buňky, listy i celý sešit a měnit
Reliance 3 design OBSAH
Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních
Vytvoření tabulky: V následujícím okně si editujete okno tabulky. Vyzkoušejte si viz podklad Cv_09_Podklad_tabulka.xls a Cv_09_Tabulka.dwg.
1. Tabulky, styly tabulek Obecné texty k vytváření tabulek najdete na této adrese: http://www.fce.vutbr.cz/studium/materialy/autocad/acad_i_cz/defaultce.html Nabídka Kreslení Tabulky. Lze se k nim dostat
OPERAČNÍ SYSTÉM. základní ovládání. Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel
OPERAČNÍ SYSTÉM základní ovládání Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel Pár otázek na začátek popište k čemu se používá počítač v jakých oborech lidské činnosti se využívá počítačů?
Microsoft Word - Styly, obsah a další
Microsoft Word - Styly, obsah a další Definice uživatelských stylů Nový - tzv. uživatelský styl - se vytváří pomocí panelu Styly a formátování stiskem tlačítka Nový styl. Po stisknutí tlačítka se objeví
Microsoft Office PowerPoint 2003
Microsoft Office PowerPoint 2003 Školení učitelů na základní škole Meteorologická Maturitní projekt SSPŠ 2013/2013 Vojtěch Dušek 4.B 1 Obsah 1 Obsah... 2 2 Seznam obrázků... 4 3 Základy programu PowerPoint...
MS Word 2007 Šablony programu MS Word
MS Word 2007 Šablony programu MS Word Obsah kapitoly V této kapitole se seznámíme s: Možností využití šablon při vytváření nových dokumentů Vytvářením vlastních šablon Studijní cíle Po absolvování této
Administrace webu Postup při práci
Administrace webu Postup při práci Obsah Úvod... 2 Hlavní menu... 3 a. Newslettery... 3 b. Administrátoři... 3 c. Editor stránek... 4 d. Kategorie... 4 e. Novinky... 5 f. Produkty... 5 g. Odhlásit se...
František Hudek. březen ročník
VY_32_INOVACE_FH06_WIN Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek březen 2013
Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.
Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,
PRÁCE S TEXTOVÝM EDITOREM 6.4 TEXTOVÉ POLE
6.4 TEXTOVÉ POLE Při tvorbě dokumentů je někdy třeba vkládat texty do rámců, kterým říkáme Textová pole. Tato textová pole, ale nemusí mít vždy pravidelný tvar (obdélník). Pomocí textových polí můžeme
STATISTICA Téma 1. Práce s datovým souborem
STATISTICA Téma 1. Práce s datovým souborem 1) Otevření datového souboru Program Statistika.cz otevíráme z ikony Start, nabídka Programy, podnabídka Statistika Cz 6. Ze dvou nabídnutých možností vybereme
Kapitola 11: Formuláře 151
Kapitola 11: Formuláře 151 Formulář DEM-11-01 11. Formuláře Formuláře jsou speciálním typem dokumentu Wordu, který umožňuje zadávat ve Wordu data, která lze snadno načíst například do databázového systému
1. Základní pojmy, používané v tomto manuálu. 2. Stránky
Redakční systém manuál 1. Základní pojmy, používané v tomto manuálu Hlavní menu Menu v horní světlemodré liště obsahující 7 základních položek: Publikovat, Správa, Vzhled, Komentáře, Nastavení, Pluginy,
Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT
Návod k aplikaci DPH Kontrol
Návod k aplikaci DPH Kontrol Obsah I. O aplikaci... 2 II. Jak používat DPH Kontrol... 3 1. Kontrola spolehlivosti plátců DPH... 3 2. Kontrola zveřejněných účtů... 5 III. Další práce s databází záznamů...
FORMÁTOVÁNÍ 2. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika
Autor: Mgr. Dana Kaprálová FORMÁTOVÁNÍ 2 Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového
9. Práce s naskenovanými mapami
9. Práce s naskenovanými mapami V této kapitole si ukážeme práci s předlohami. Předlohou rozumíme naskenovanou bitmapu, načtenou jako pozadí na pracovní plochu. Použitím bitmapového obrázku jako podklad,
Word 2007 pro začátečníky
Word 2007 pro začátečníky 1 Word OP LZZ Tento kurz je financován prostřednictvím výzvy č. 40 Operačního programu Lidské zdroje a zaměstnanost z prostředků Evropského sociálního fondu. 2 Word Cíl kurzu
Začínáme pracovat s tabulkovým procesorem MS Excel
Začínáme pracovat s tabulkovým procesorem MS Excel Nejtypičtějším představitelem tabulkových procesorů je MS Excel. Je to pokročilý nástroj pro tvorbu jednoduchých i složitých výpočtů a grafů. Program
Programování v jazyku LOGO - úvod
Programování v jazyku LOGO - úvod Programovací jazyk LOGO je určen pro výuku algoritmizace především pro děti školou povinné. Programovací jazyk pracuje v grafickém prostředí, přičemž jednou z jeho podstatných
Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází
Tiskové sestavy Tiskové sestavy se v aplikaci Access používají na finální tisk informací z databáze. Tisknout se dají všechny objekty, které jsme si vytvořili, ale tiskové sestavy slouží k tisku záznamů
3 Makra Příklad 4 Access 2007. Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker.
TÉMA: Vytváření a úprava maker Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker. Zadání: Otevřete databázi Makra.accdb. 1. Vytvořte makro Objednávky,
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro administrátory Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento
Úvodní příručka. Správa souborů Kliknutím na kartu Soubor můžete otevřít, uložit, vytisknout a spravovat své soubory Wordu.
Úvodní příručka Microsoft Word 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Panel nástrojů Rychlý přístup Příkazy tady umístěné
Programy pro OS Windows
Programy pro OS Windows Základní pojmy Operační systém o = program, rozhraní mezi člověkem a PC o Poskytuje programům přístup k HW (uživatelský vstup, úložiště, RAM, CPU atd.) Aplikace (application) =
ANS orientace v aplikaci a pokladně
ANS orientace v aplikaci a pokladně Rožnov pod Radhoštěm 756 61 BÚ:86-2201060287/0100 číslo spisu C.26504 1 1. Vyhledávání a třídění v ANS 1.1.1. Třídění: Scroll dokladů si můžeme pro snadnější vyhledávání
Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec
StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak
Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...
Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou... 7 Jak se formulář vytváří... 8 Návrh formuláře... 8 Co jsou ovládací
NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE. Ataxo Czech s.r.o.
NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE Ataxo Czech s.r.o. ÚVOD Internetové stránky vytvořené společností Ataxo v rámci produktu Mini web můžete jednoduše a rychle upravovat prostřednictvím on-line administrace.
Informační a komunikační technologie pro učební obory ME4 a SE4. Makra
Informační a komunikační technologie pro učební obory ME4 a SE4 Makra I. část Praha 2012 2013 Zpracoval: Ing. Pavel branšovský pro potřebu VOŠ a SŠSE Volně použito podkladů z internetu a kolegů ze školy
Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání
Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou
Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem
Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba
StatSoft Jak vyzrát na datum
StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek
EDITOR ADMINISTRACE WEBU PF UJEP
EDITOR ADMINISTRACE WEBU PF UJEP 2 Práce s editorem v redakčním systému stránek PF UJEP Obsah 1 Editor - obecně... 3 2 Ikony pro jednoduché formátování:... 4 3 Roletky pro přednastavené formátování...
Obr. P1.1 Zadání úlohy v MS Excel
Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel. Výpočet budeme demonstrovat
Základní vzorce a funkce v tabulkovém procesoru
Základní vzorce a funkce v tabulkovém procesoru Na tabulkovém programu je asi nejzajímavější práce se vzorci a funkcemi. Když jednou nastavíte, jak se mají dané údaje zpracovávat (některé buňky sečíst,
Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.
Zdokonalování gramotnosti v oblasti ICT Kurz MS Excel kurz 6 1 Obsah Kontingenční tabulky... 3 Zdroj dat... 3 Příprava dat... 3 Vytvoření kontingenční tabulky... 3 Možnosti v poli Hodnoty... 7 Aktualizace
Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.
Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.
Návod k ovládání aplikace
Návod k ovládání aplikace Tento návod se zabývá ovládáním aplikace PDF Annotation 1, která je založena na aplikaci AVP PDF Viewer a umožňuje nejen PDF dokumenty prohlížet, ale také do těchto dokumentů
Hromadná korespondence
Hromadná korespondence Teoretická část: Typickým příkladem použití hromadné korespondence je přijímací řízení na školách. Uchazeči si podají přihlášku, škola ji zpracuje a připraví zvací dopis k přijímací
Microsoft Office Excel 2003
Microsoft Office Excel 2003 Školení učitelů na základní škole Meteorologická Maturitní projekt SSPŠ 2013/2014 Vojtěch Dušek 4.B 1 Obsah 1 Obsah... 2 2 Seznam obrázků... 3 3 Základy programu Excel... 4
Nástroje v InDesignu. Panel nástrojů 1. část. Nástroje otevřeme Okna Nástroje
Nástroje v InDesignu Panel nástrojů 1. část Nástroje otevřeme Okna Nástroje Poklepem levé myši změníme panel nástrojů Nástroje v panelu nástrojů se používají k vybírání, úpravám a vytváření prvků stránek.
Programujeme v softwaru Statistica
Programujeme v softwaru Statistica díl třetí Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody V předchozích článcích (díl první, díl druhý) jsme si osvětlili základní
8 Makra Příklad 4 Excel 2007
TÉMA: Úprava maker rozhodování, příkaz If..Then..Else Sekretářka společnosti Naše zahrada potřebuje upravit makra vytvořená pomocí záznamu tak, aby vyhovovala jejím požadavkům. Pro úpravy využije Editor
PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7
UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ FAKULTA APLIKOVANÉ INFORMATIKY PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7 Využití knihoven podprogramů, displej Jan Dolinay Petr Dostálek Zlín 2013 Tento studijní materiál vznikl
Vkládání dalších objektů
Vkládání dalších objektů Do textu v aplikaci Word, můžeme vkládat další objekty. Jedním z takových objektů je tabulka, o které jsme si už něco ukázali. Dalšími jsou obrázky, kliparty, grafy a kreslené
METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI Základní rozložení plochy Výchozím stavem při práci je normální zobrazení. pás karet - základní nabídka příkazů Pořadí jednotlivých snímků Základní plocha
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
Manuál k programu KaraokeEditor
Manuál k programu KaraokeEditor Co je KaraokeEditor? Program slouží pro editaci tagů v hudebních souborech formátu mp3. Tagy jsou doprovodné informace o písni, uložené přímo v mp3. Aplikace umí pracovat
Pro definici pracovní doby nejdříve zvolíme, zda chceme použít pouze informační
1. 1 V programu Medicus Komfort a Medicus Profesionál je možné objednávat pacienty v nově přepracovaném objednávacím kalendáři. Volba Objednávky zpřístupňuje možnosti objednávání pacientů, nastavení pracovní
Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox
Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox 1 Opakování kreslení do Image 1. Canvas = plátno - Color, Caption Nastavení typu čáry pro kreslení perem Pen: barva Image1.Canvas.Pen.Color
Microsoft. Word. Hromadná korespondence. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie
Microsoft Word Hromadná korespondence Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie Hromadná korespondence Funkce hromadná korespondence umožňuje vytvoření malé databáze (tabulky)
y v TimeMakeru
E-Maily v TimeMakeru Jakákoliv komunikace od externího uživatele (uživatele, který nemá TimeMaker) anebo pro něj. Po doručení se objeví ve Vašem Souhrnném Inboxu. Vždy se pozná podle znaku @ v adrese,
Visual Basic for Application
Visual Basic for Application Leopold Bartoš 1 Začátek 1.1 Úvod Visual Basic for Application (VBA) je programové prostředí pro produkty, které jsou zahrnuty do balíku, který dostal jméno Microsoft Office.
Proces editace JOSM. Tato příručka může být stažena jako josm_more-about-josm_en.odt or josm_more-aboutjosm_en.pdf
Proces editace JOSM Tato příručka může být stažena jako josm_more-about-josm_en.odt or josm_more-aboutjosm_en.pdf Zkontrolováno 12.7.2015 V předchozí části jste nainstalovali JOSM a začali kreslit své
Registrační číslo projektu: Škola adresa: Šablona: Ověření ve výuce Pořadové číslo hodiny: Třída: Předmět: Název: MS Excel I Anotace:
Registrační číslo projektu: CZ.1.07/1.4.00/21.3712 Škola adresa: Základní škola T. G. Masaryka Ivančice, Na Brněnce 1, okres Brno-venkov, příspěvková organizace Na Brněnce 1, Ivančice, okres Brno-venkov
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
INFORMATIKA PRO ZŠ. Ing. Veronika Šolcová
INFORMATIKA PRO ZŠ 2 Ing. Veronika Šolcová 6. 7. 2016 1 Anotace: 1. Nástroje I 2. Ukládání dokumentu 3. Otevírání dokumentu 4. Nový dokument 5. Nástroje II 6. Nástroje III 7. Kopírování 8. Mazání 9. Text
METODICKÝ POKYN PRÁCE S MS PowerPoint - POKROČILÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
METODICKÝ POKYN PRÁCE S MS PowerPoint - POKROČILÍ Pozadí snímku Pozadí snímku můžeme nastavit všem snímkům stejné nebo můžeme volit pro jednotlivé snímky různé pozadí. Máme několik možností: Pozadí snímku
Základní škola Hluk výukové texty MS Word 2007
MS Word je textový editor (program pro tvorbu a editaci textových dokumentů). Ve verzi 2007 došlo k zásadní změně v grafickém prostředí a tedy i ovládání programu. Základní ovládací prvky aplikace: RÁM
Manuál: Editace textů v textovém editoru SINPRO Úprava tabulek a internetových odkazů, řádkování
Manuál: Editace textů v textovém editoru SINPRO Úprava tabulek a internetových odkazů, řádkování (nejen pro editaci STI v systému SINPRO, aktualizováno: 25. 6. 2015) v 2.0 Obsah TABULKY Úprava tabulek...
MS PowerPoint ZÁKLADY
MS PowerPoint ZÁKLADY UKÁZKA ŠKOLÍCÍCH MATERIÁLŮ Centrum služeb pro podnikání s.r.o. 2014, I. Verze, TP OBSAH 1. Úvod do PowerPointu... 1 2. Otevření PowerPointu... 1 3. Pracovní prostředí PowerPointu...
Rámcový manuál pro práci s programem TopoL pro Windows
Rámcový manuál pro práci s programem TopoL pro Windows Příkazy v nabídce Předmět Volba rastru rychlá klávesa F4 Příkaz otevře vybraný rastr; tj. zobrazí ho v předmětu zájmu. Po vyvolání příkazu se objeví
Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel
Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel 2007. Výpočet budeme demonstrovat
Vytvoření tiskové sestavy kalibrace
Tento návod popisuje jak v prostředí WinQbase vytvoříme novou tiskovou sestavu, kterou bude možno použít pro tisk kalibračních protokolů. 1. Vytvoření nového typu sestavy. V prvním kroku vytvoříme nový
Projektová dokumentace GED 2006
Projektová dokumentace GED 2006 20.4.2006 Řešitelé týmu a podíl práce na projektu: Kamil Dudka xdudka00 objektový návrh uživatelské rozhraní podpora plug-in programů kreslící plocha vkládání textu programová
WEBOVÉ STRÁNKY ŠKOLY A REDAKČNÍ SYSTÉM
WEBOVÉ STRÁNKY ŠKOLY A REDAKČNÍ SYSTÉM WordPress manuál A3 WEBOVÉ STRÁNKY ŠKOLY A REDAKČNÍ SYSTÉM WordPress manuál Ing. Karel Rejthar 16. 6. 2015-1 - OBSAH WordPress manuál......................................
ČÁST 1. Základy 32bitového programování ve Windows
Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25
Multimediální prezentace MS PowerPoint I
Multimediální prezentace MS PowerPoint I Informatika Multimediální prezentace zažívají v poslední době obrovský rozmach. Jsou používány například k reklamním účelům, k předvedení výrobků či služeb. Velmi