240 likes | 347 Views
Computers and programming. The 10 th lecture Jiří Šebesta. T OPIC – programming in MS VS for Windows. Basic definitions Form application Examples. Basic definitions (1/4). Project for Windows: header files files xxx.h source code files files xxx.c or xxx.cpp
E N D
Computers and programming The10th lecture Jiří Šebesta
TOPIC – programming inMSVS for Windows Basic definitions Form application Examples
Basic definitions (1/4) Project for Windows: header files files xxx.h source code files files xxx.c or xxx.cpp resources = above all graphic objects determined by set of properties and behavior files xxx.rc(xxx.ico)
Basic definitions (2/4) Resources: menus shortcuts bit rasters, icons, cursors character strings tool panels dialog windows • Dialog window: • fundamental objekt (each window is dialog window) • control objects in dialog window are again dialog windows with special properties • applied principle:parent’s vs. child’s dialogs
Dialog window (resp. object): • properties – variables define a visual characteristic and behavior of window (object)and events, i.e. functions called if an events in window (object) occurs, e.g. click by mouse Basic definitions (3/4) • window modality • modal window, cannot be leaved without closing (style attribute WS_VISIBLE is set) • unmodal window can be whenever leaved (defocused)
Fundamental sorts of Win applications: • using MFC(Microsoft Foundation Class Library) • SDI (Single-document interface) – application using one document • MDI (Multiple-document interface) – application using more documents at the same time (e.g. MS Visual Studio is MDI application) • Dialog application – single dialog window for simple programs • using standard resources from Windows • Form application for Windows Basic definitions (4/4)
Form project establishment (MSVS 2008/10/12): Form application (1/10)
Form creating(setting of properties + inserting of standard graphic objects to design Form1.h[design]): Form application (2/10)
Form application (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"; Automatically generated code for setting of graphic object properties inForm1.h : • thisis pointer to this form
Function generation for event processing Form application (4/10) inForm1.ha header of function for events is generated, required code can be written into the body of this function … private: System::Void RB_blue_Click(System::Object^ sender, System::EventArgs^e) { this->My_text->ForeColor = System::Drawing::Color::Blue; } …
Functionmain()inEx76.cpp Form application (5/10) #include "stdafx.h" #include "Form1.h" using namespace Ex76; [STAThreadAttribute] int main(array<System::String ^> ^args) { // Enabling Windows XP visual effects before any controls are created Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Create the main window and run it Application::Run(gcnew Form1()); return 0; } Code: Ex76
WindowsForm application in MSVS2013: new project Form application (6/10) • A form application can not be established directly • It needs to insert an empty project of type CLR Empty Project with adequate name
A form application required an adding UI – Windows Form with adequate name, e.g. MyForm.h or Form.h, by Project – Add (use right mouse button): Form application (7/10)
Insert to MyForm.cpp following code: Form application (8/10) #include"MyForm.h" using namespaceSystem; using namespaceSystem::Windows::Forms; [STAThread] voidMain(array<System::String ^> ^args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Ex76::MyForm form; Application::Run(%form); return 0; } • Modify code according to project name and form name
Set inProject – Properties:Linker - System Form application (9/10)
Set Linker – Advanced – Entry Point to name of starting function, e.g. Main Form application (10/10)
Examples (1/7) • Visual design of form 1)Create a form application for a simple calculator – adding, subtracting, multiplyingand division of two rational numbers.
Function for text reading from theTextBoxand conversion todouble Examples (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); } object of formTextBoxnamed astext_B conversion method calling variable of TextBox pointer to this form
Event processing – pressing of particular buttons Examples (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()); } conversion method calling function for inputs reading calling pointer to this form function of classSystem Code: Ex77
Examples (4/7) • Visual design of form 2) Create an form application for simple database of computers (items: producer, price and memory capacity) with record up to 20 computers using dynamic access.
Building-up of own function library computer.h Examples (5/7) #include<stdlib.h> #include<string.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
Array of pointers to records declaration + solution example of the function add() in computer.cpp Examples (6/7) #include"computer.h"// definition of the struct t_pc t_pc *register[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; register[ptr=index++] = my_pc; }
Adding the library pocitac.h and processing of event for pressing button Add inForm1.h Examples (7/7) #pragma once #include"computer.h" using namespace System::Runtime::InteropServices; namespace Ex78 { …. 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()); } conversion method VisualString => *char calling Code: Ex78
TOPIC OF THE NEXT LECTURE FINAL TEST THANK YOUFOR YOUR ATTENTION