1 / 24

P řednáška 5 10 .3.2014 Jiří Šebesta

Počítače a programování 2. P řednáška 5 10 .3.2014 Jiří Šebesta. TÉMA. PROGRAMOVÁNÍ V MS VISUAL STUDIU: Základní pojmy Formulářová aplikace Příklady formulářových aplikací. Základní pojmy (1/4). Projekt pro Windows: hlavičkové soubory soubory xxx.h zdrojové soubory

Download Presentation

P řednáška 5 10 .3.2014 Jiří Šebesta

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Počítače a programování 2 Přednáška 5 10.3.2014 Jiří Šebesta

  2. TÉMA PROGRAMOVÁNÍ V MS VISUAL STUDIU: Základní pojmy Formulářová aplikace Příklady formulářových aplikací

  3. Základní pojmy (1/4) Projekt pro Windows: hlavičkové soubory soubory xxx.h zdrojové soubory soubory xxx.c nebo xxx.cpp zdroje (resources) = především grafické objekty s danými vlastnostmi a chováním soubory xxx.rc(xxx.ico)

  4. Základní pojmy (2/4) Zdroje: nabídky klávesové zkratky bitové rastry, ikony, kurzory znakové řetězce panely nástrojů dialogová okna • Dialogové okno: • základní objekt (každé okno je dialogové okno) • ovládací prvky v dialogovém okně jsou opět dialogová okna se speciálními vlastnostmi • platí princip nadřízený vs. podřízený dialog

  5. Dialogové okno (resp. prvek): • vlastnosti (properties) – proměnné defi-nující vlastnosti okna (prvku)a události (events), tj. funkce vyvolané při vzniku určité události v objektu (okně), např. kliknutí myší Základní pojmy (3/4) • modalita oken • modální okno, ne-lze opustit bez za-vření (příznak stylu WS_VISIBLE nastaven) • nemodální lze kdykoli opustit (defokusovat)

  6. Základní typy Win aplikací: • využívající MFC(Microsoft Foundation Class Library) • SDI (Single-document interface) – aplikace, kdy se pracuje pouze s jedním dokumentem • MDI (Multiple-document interface) – aplikace, kdy se pracuje s více dokumenty současně (např. MS Visual Studio je MDI aplikace) • Aplikace na bázi dialogu – jedno dialogové okno pro jednodušší programy • využívající standardní prostředky Windows • Formulářová aplikace pro Windows Základní pojmy (4/4) • Kde získat MS Visual Studio Professional 2008/2010/2012/2013: MSDN AA FEKT VUT v Brně

  7. Založení projektu (MSVS 2008/2010):new project Formulářová aplikace (1/10)

  8. Tvorba formuláře (úprava vlastností + vkládání ovládacích prvků do designu Form1.h[design]) : Formulářová aplikace (2/10)

  9. Formulářová aplikace (3/10) this->ColorBox->BackColor= system::Drawing::Color::Transparent; this->ColorBox->Controls->Add(this->RB_blue); this->ColorBox->Controls->Add(this->RB_green); this->ColorBox->Controls->Add(this->RB_red); this->ColorBox->ForeColor= system::Drawing::SystemColors::ControlText; this->ColorBox->Location = System::Drawing::Point(2,86); this->ColorBox->Name = L"ColorBox"; this->ColorBox->Size = System::Drawing::Size(88, 100); this->ColorBox->TabIndex = 1; this->ColorBox->TabStop = false; this->ColorBox->Text = L"Color"; Automaticky vygenerovaný kód pro nastavení ovládacího prvku veForm1.h : • thisreprezentuje ukazatel na tento formulář

  10. Generování funkce pro ošetření události Formulářová aplikace (4/10) ve Form1.h je vygenero-vána hlavička funkce udá-losti, do které lze vepsat tělo s požadovaným kódem … private: System::Void RB_blue_Click(System::Object^ sender, System::EventArgs^e) { this->My_text->ForeColor = System::Drawing::Color::Blue; } …

  11. Funkce main() ve Form1.cpp Formulářová aplikace (5/10) #include<stdafx.h> #include"Form1.h" using namespaceEx105; [STAThreadAttribute] int main(array<System::String ^> ^args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Create the main window and run it Application::Run(gcnew Form1()); return 0; } Projekt: Ex105

  12. Windows Form aplikace ve MSVS2013: new project Formulářová aplikace (6/10) • Nelze založit formulářovou aplikaci přímo, je nutné nejprve založit prázdný projekt CLR Empty Project s vhodným jménem

  13. Pro formulářovou aplikaci je třeba přidat v Project – Add (vyvolat pravým tlačítkem): UI – Windows Form s vhod-ným jménem např. MyForm.h nebo Form.h Formulářová aplikace (7/10)

  14. Dále je třeba doplnit MyForm.cpp o následující kód: Formulářová aplikace (8/10) #include"MyForm.h" using namespaceSystem; using namespaceSystem::Windows::Forms; [STAThread] voidMain(array<System::String ^> ^args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Ex105::MyForm form; Application::Run(%form); return 0; } • Podle názvu projektu a formuláře upravit.

  15. Nastavit v Project – Properties:Linker - System Formulářová aplikace (9/10)

  16. Nastavit Linker – Advanced – Entry Point na jméno startovací funkce v MyForm.cpp, např.Main Formulářová aplikace (10/10)

  17. Příklady formulářových aplikací (1/7) • Vizuální návrh formuláře veForm.h[design] 1) Vytvořte program jako formulářovou aplikaci pro jednoduchou kalkulačku – sčítání, odečítání, násobení a dělení dvou racionálních čísel.

  18. Funkce pro načtení textu z TextBoxu s koverzí na double Příklady formulářových aplikací (2/7) double get_A(void) { return System::Convert::ToDouble(this->text_A->Text); } double get_B(void) { return System::Convert::ToDouble(this->text_B->Text); } ovládací prvek formuláře TextBox pojmenovaný text_B proměnná TextBoxu volání konverzní metody ukazatel na tento formulář

  19. Ošetření událostí – kliknutí na jednotlivá tlačítka Příklady formulářových aplikací (3/7) private: System::Void bt_plus_Click(System::Object^ sender, System::EventArgs^ e) { this->Res->Text = System::Convert::ToString(get_A()+get_B()); } … private: System::Void bt_div_Click(System::Object^ sender, System::EventArgs^ e) { this->Res->Text = System::Convert::ToString(get_A()/get_B()); } volání konverzní metody volání funkcí pro čtení vstupů ukazatel na tento formulář třídaSystem metoda třídy System Projekt: Ex106

  20. Příklady formulářových aplikací (4/7) • Vizuální návrh formuláře 2) Vytvořte formulářový program pro jednoduchou databázi počítačů (položky: výrobce, cena a velikost paměti) se záznam až 20ti počítačů s dynamickým přístupem.

  21. Sestavení vlastní knihovny funkci pocitac.h Příklady formulářových aplikací (5/7) #include<stdlib.h> #include<string.h> #include"stdafx.h" typedefstruct t_pc { char prod[ 20]; // name of the producer int price; // price of the computer float mem; // RAM capacity in GB }a_pc; void add(char* _prod, int _price, float _mem); // adding new computer void sort(void); // sorting according to the price t_pc* get_fwd(void);// point out to the next computer t_pc* get_bwd(void);// point out to the prev. computer int show_price(void);// get price of an added pc int show_cheap(void);// get price of the cheapest pc

  22. Deklarace pole ukazatelů na záznamy + příklad funkce add() v pocitac.cpp Příklady formulářových aplikací (6/7) #include<stdafx.h> #include"pocitac.h"// definition of the struct t_pc t_pc *katalog[20];// array of pointers to computers int index=0; // first free position in the katalog int ptr=index-1; // pointer to a pc displayed in edits void add(char* _prod, int _price, float _mem) { t_pc *my_pc; my_pc = (t_pc*) malloc(sizeof(t_pc)); strcpy(my_pc->prod, _prod); my_pc->price = _price; my_pc->mem = _mem; katalog[ptr=index++] = my_pc; }

  23. Přilinkování knihovny a ošetření události stisku tlačítka Add ve Form1.h Příklady formulářových aplikací (7/7) #pragma once #include"pocitac.h" using namespace System::Runtime::InteropServices; namespace EX07_3 { …. private: System::Void AddBtn_Click(System::Object^ sender, System::EventArgs^ e) { add((char*)Marshal::StringToHGlobalAnsi(ProdEdit->Text).ToPointer(), System::Convert::ToInt32(PriceEdit->Text), System::Convert::ToDouble(MemEdit->Text)); ShowLbl->Text = System::Convert::ToString(show_price()); } volání konverzní metody VisualString=> *char Projekt: Ex107

  24. TÉMA NÁSLEDUJÍCÍHO TUTORIÁLU Dialogové aplikace v MSVS DĚKUJI ZA POZORNOST

More Related