Computers and programming The 10 th lecture Jiří Šebesta.
-
Upload
victor-jenkins -
Category
Documents
-
view
216 -
download
1
Transcript of Computers and programming The 10 th lecture Jiří Šebesta.
Computers and programming
The 10th lecture
Jiří Šebesta
TOPIC – programming in MSVS for Windows
1. Basic definitions 2. Form application 3. 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
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)
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
Form application (1/10)
• Form project establishment (MSVS 2008/10/12):
Form application (2/10)
• Form creating (setting of properties + inserting of standard graphic objects to design Form1.h[design]):
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
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
Form application (5/10)
• Function main() in Ex76.cpp
#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 itApplication::Run(gcnew Form1());return 0;
}
Code: Ex76
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
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):
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<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
Form application (9/10)
• Set in Project – Properties: Linker - System
Form application (10/10)
• Set Linker – Advanced – Entry Point to name of starting function, e.g. Main
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
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
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
callingCode: Ex77
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
#include <stdlib.h>#include <string.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
Examples (5/7)
Building-up of own function library computer.h
#include "computer.h" // definition of the struct t_pc
t_pc *register[20]; // array of pointers to computersint index=0; // first free position in the katalogint 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
#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
TOPIC OF THE NEXT LECTURE
1. FINAL TEST
THANK YOU FOR YOUR ATTENTION