1 / 24

The 10 th lecture Jiří Šebesta

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

rio
Télécharger la présentation

The 10 th lecture 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. Computers and programming The10th lecture Jiří Šebesta

  2. TOPIC – programming inMSVS for Windows Basic definitions Form application 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. 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)

  6. 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)

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

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

  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 inForm1.h : • thisis pointer to this form

  10. 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; } …

  11. 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

  12. 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

  13. 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)

  14. 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

  15. Set inProject – Properties:Linker - System Form application (9/10)

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

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

  18. 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

  19. 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

  20. 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.

  21. 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

  22. 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; }

  23. 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

  24. TOPIC OF THE NEXT LECTURE FINAL TEST THANK YOUFOR YOUR ATTENTION

More Related