Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computers and programming The 10 th lecture Jiří Šebesta.

Similar presentations


Presentation on theme: "Computers and programming The 10 th lecture Jiří Šebesta."— Presentation transcript:

1 Computers and programming The 10 th lecture Jiří Šebesta

2 TOPIC – programming in MSVS for Windows 1.Basic definitions 2.Form application 3.Examples

3 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)

4 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

5 Basic definitions (3/4) 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 - window modality - modal window, cannot be leaved without closing (style attribute WS_VISIBLE is set) - unmodal window can be whenever leaved (defocused)

6 Basic definitions (4/4) 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

7 Form application (1/10) Form project establishment (MSVS 2008/10/12):

8 Form application (2/10) Form creating (setting of properties + inserting of standard graphic objects to design Form1.h[design] ):

9 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 in Form1.h : this is pointer to this form

10 Form application (4/10) Function generation for event processing … private: System::Void RB_blue_Click(System::Object^ sender, System::EventArgs^ e) { this->My_text->ForeColor = System::Drawing::Color::Blue; } … in Form1.h a header of function for events is generated, required code can be written into the body of this function

11 Form application (5/10) Function main() in Ex76.cpp #include "stdafx.h" #include "Form1.h" using namespace Ex76; [STAThreadAttribute] int main(array ^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

12 Form application (6/10) Windows Form application in MSVS2013: new project A form application can not be established directly It needs to insert an empty project of type CLR Empty Project with adequate name

13 Form application (7/10) 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):

14 Form application (8/10) Insert to MyForm.cpp following code: #include "MyForm.h" using namespace System; using namespace System::Windows::Forms; [STAThread] void Main(array ^args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault (false); Ex76::MyForm form; Application::Run(%form); return 0; } Modify code according to project name and form name

15 Form application (9/10) Set in Project – Properties: Linker - System

16 Form application (10/10) Set Linker – Advanced – Entry Point to name of starting function, e.g. Main

17 Examples (1/7) 1) Create a form application for a simple calculator – adding, subtracting, multiplying and division of two rational numbers. Visual design of form

18 double get_A(void) { return System::Convert::ToDouble(this->text_A->Text); } double get_B(void) { return System::Convert::ToDouble(this->text_B->Text); } Examples (2/7) Function for text reading from the TextBox and conversion to double conversion method calling pointer to this form object of form TextBox named as text_B variable of TextBox

19 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()); } Examples (3/7) Event processing – pressing of particular buttons function of class System pointer to this form conversion method calling function for inputs reading calling Code: Ex77

20 Examples (4/7) 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. Visual design of form

21 #include typedef struct 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 Examples (5/7) Building-up of own function library computer.h

22 #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; } Examples (6/7) Array of pointers to records declaration + solution example of the function add() in computer.cpp

23 #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()); } Examples (7/7) Adding the library pocitac.h and processing of event for pressing button Add in Form1.h conversion method VisualString => *char calling Code: Ex78

24 TOPIC OF THE NEXT LECTURE 1.FINAL TEST THANK YOU FOR YOUR ATTENTION


Download ppt "Computers and programming The 10 th lecture Jiří Šebesta."

Similar presentations


Ads by Google