Upload
courtney-foreman
View
43
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
OSNOVA:a) Úvod do MS Visual Studiab) Formulářová aplikacec) Příklady formulářových aplikací
Jiří ŠebestaJiří ŠebestaÚstav radioelektroniky, FEKT VUT v BrněÚstav radioelektroniky, FEKT VUT v Brně
Počítače a programování 2 pro obor ESTBPC2E
PŘEDNÁŠKA 5
Úvod do MS Visual Studia (1/4)Úvod do MS Visual Studia (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)
Úvod do MS Visual Studia (2/4)Úvod do MS Visual Studia (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
Úvod do MS Visual Studia (3/4)Úvod do MS Visual Studia (3/4)
• 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ší
- modalita oken - modální okno, ne-lze opustit bez za-vření (příznak stylu WS_VISIBLE nastaven) - nemodální lze kdykoli opustit (defokusovat)
Úvod do MS Visual Studia (4/4)Úvod do MS Visual Studia (4/4)
• 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
• Kde získat MS Visual Studio Professional 2005/2008/2010/2012/2013: MSDN AA FEKT VUT v Brně
Formulářová aplikace (1/Formulářová aplikace (1/1010))
• Založení projektu (MSVS 2008/2010): new project
Formulářová aplikace (2/Formulářová aplikace (2/1010))
• Tvorba formuláře (úprava vlastností + vkládání ovládacích prvků do designu Form1.h[design]) :
Formulářová aplikace (3/Formulářová aplikace (3/1010))
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 ve Form1.h :
• this reprezentuje ukazatel na tento formulář
Formulářová aplikace (4/Formulářová aplikace (4/1010))
• Generování funkce pro ošetření události
…private: System::Void RB_blue_Click(System::Object^ sender, System::EventArgs^ e)
{this->My_text->ForeColor =
System::Drawing::Color::Blue;}
…
• ve Form1.h je vygenerována hlavička funkce události, do které lze vepsat tělo s poža-dovaným kódem
Formulářová aplikace (5/Formulářová aplikace (5/1010))
• Funkce main() ve Form1.cpp#include <stdafx.h>#include "Form1.h"using namespace BPC2E_Ex112;
[STAThreadAttribute]
int main(array<System::String ^> ^args){
Application::EnableVisualStyles();Application::SetCompatibleTextRenderingDefault
(false); // Create the main window and run itApplication::Run(gcnew Form1());return 0;
}
Projekt: BPC2E_Ex112
Formulářová aplikace (Formulářová aplikace (66//1010))
• Windows Form aplikace ve MSVS2013: new project
• Nelze založit formulářovou aplikaci přímo, je nutné nejprve založit prázdný projekt CLR Empty Project s vhodným jménem
Formulářová aplikace (Formulářová aplikace (77//1010))
• Pro formulářovou aplikaci je třeba přidat v Project – Add (vyvolat pravým tlačítkem): UI – Windows Form s vhodným jménem např. MyForm.h nebo Form.h
Formulářová aplikace (Formulářová aplikace (88//1010))
• Dále je třeba doplnit MyForm.cpp o následující kód:#include "MyForm.h"using namespace System;using namespace System::Windows::Forms;
[STAThread]
void Main(array<System::String ^> ^args){
Application::EnableVisualStyles();Application::SetCompatibleTextRenderingDefault
(false);Ex105::MyForm form; Application::Run(%form);
}
• Podle názvu projektu a formuláře upravit.
Formulářová aplikace (Formulářová aplikace (99//1010))
• Nastavit v Project – Properties: Linker - System
Formulářová aplikace (Formulářová aplikace (1010//1010))
• Nastavit Linker – Advanced – Entry Point na jméno startovací funkce v MyForm.cpp, např. Main
PříkladPříkladyy formulářových aplikací formulářových aplikací (1/(1/77))Příklad 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.
• Vizuální návrh formuláře ve Form.h[design]
double get_A(void){ return System::Convert::ToDouble(this->text_A->Text);}
double get_B(void){ return System::Convert::ToDouble(this->text_B->Text);}
PříkladPříkladyy formulářových aplikací formulářových aplikací (2/(2/77))Funkce pro načtení textu z TextBoxu s konverzí na double
volání konverzní metody
ukazatel na tento formulář
ovládací prvek formuláře TextBox
pojmenovaný text_B
proměnná(člen)
TextBoxu
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());
}
PříkladPříkladyy formulářových aplikací formulářových aplikací (3/(3/77))Ošetření událostí – kliknutí na jednotlivá tlačítka
metoda třídy
System
ukazatel na tento formulář
volání konverzní metody
volání funkcí pro čtení vstupů
Projekt:BPC2E_Ex113
třída System
PříkladPříkladyy formulářových aplikací formulářových aplikací ((44//77))Příklad 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.
• Vizuální návrh formuláře
#include <stdlib.h>#include <string.h>#include "stdafx.h"typedef struct t_pc{
char prod[ 20]; // name of the producerint price; // price of the computerfloat mem; // RAM capacity in GB
} a_pc;void add(char* _prod, int _price, float _mem); // adding new computervoid sort(void); // sorting according to the pricet_pc* get_fwd(void); // point out to the next computert_pc* get_bwd(void); // point out to the prev. computerint show_price(void);// get price of an added pcint show_cheap(void);// get price of the cheapest pc
PříkladPříkladyy formulářových aplikací formulářových aplikací ((55//77))Sestavení vlastní knihovny funkci pocitac.h
#include <stdafx.h>#include "pocitac.h" // definition of the struct t_pc
t_pc *katalog[20]; // array of pointers to computersint index=0; // first free position in the katalogint ptr=index-1; // pointer to a pc displayed in editsvoid 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;
}
PříkladPříkladyy formulářových aplikací formulářových aplikací ((66//77))Deklarace pole ukazatelů na záznamy + příklad funkce add() v pocitac.cpp
#pragma once#include "pocitac.h"using namespace System::Runtime::InteropServices;namespace BPC2E_Ex114 { ….
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());}
PříkladPříkladyy formulářových aplikací formulářových aplikací ((77//77))Přilinkování knihovny a ošetření události stisku tlačítka Add ve Form1.h
volání konverzní metody VisualString => *char Projekt: BPC2E_Ex114
Téma následující přednášky
– Grafika pro Windows ve MS Visual Studiu
DĚKUJI ZA POZORNOST