COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based...
-
Upload
frank-barber -
Category
Documents
-
view
220 -
download
3
Transcript of COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based...
![Page 1: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/1.jpg)
COS220 Concepts of PLs AUBG, COS dept
Lecture 30aa
Alternate Ways of Developing Windows Based Applications
Reference: MS Visual C++,Deitel, Chapter 2.7
![Page 2: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/2.jpg)
Lecture Contents
• Applications classified:– Console applications– Windows based applications– Internet/Web based applications
• Alternate ways to Build Windows based applications:– Using API programming model– Using MFC programming model– Using FCL /Framework Class Library/ and Win Forms – Using WPF /Windows Presentation Foundation/
![Page 3: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/3.jpg)
3
Computer programs classified
• When you begin creating a new program, you must choose the type of application you will be developing
• Based on your choice, the IDE provides– the classes,– the tools,– the features
• required for the selected type of application
![Page 4: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/4.jpg)
4
Types of Visual Basic 2010 Applications,
GShally,pp25
• VB operates 5 major types of apps:–Windows applications–Mobile applications–Web site applications–Office applications–Database applications
![Page 5: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/5.jpg)
5
Types of Visual Basic 2010 Apps
• Windows application– Program will run on a computer or other
device that supports the Windows GUI
• Mobile application– Designed to run on mobile devices as
smartphones, Pocket PCs and computers running the Windows CE OS or Windows Phone OS
![Page 6: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/6.jpg)
6
Types of Visual Basic 2010 Apps• Web site application
– Uses ASP.NET. Runs on a Web server. Produces HTML code that is downloaded to the client computer where the browser interprets HTML and displays the contents of a Web page
• Office application– Includes writing VBasic code to automate and
manipulate documents created using Microsoft Office 2003/2007/2010
• Database application– Written using ADO.NET to reference, access,
display, and update data stored in a database
![Page 7: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/7.jpg)
7
Types of Visual Basic 2010 Apps
• Other types of applications include: – Console applications– Classes for class libraries– Certain controls to use in Windows
applications– Web services– Device-specific applications
![Page 8: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/8.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 8
Types of C++ Apps• Application types you can create with C++
– Console applications– Windows applications– Web applications – run on a Web server when a
particular URL is loaded, and send HTML to a waiting browser.
– Services – applications that run in the background and respond to requests, but do not have any visual interface
– Class libraries – collections of code that can be called by other code.
– Other
![Page 9: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/9.jpg)
9
Types of C# Apps• Applications Developed with C#,
– Web applications
– Windows (GUI) applications
– Console applications
– Class libraries and stand-alone components (.dlls)
– Smart device applications
– Services
![Page 10: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/10.jpg)
10C# Programming: From Problem Analysis to Program Design 10
Types of Java Apps• Java programs may be applications and
applets(servlets).
• Applications are standalone programs, similar to .NET Console applications and/or Windows based GUI applications.
• Applets are similar to applications, but they do not run as standalone programs. Instead, applets adhere to a set of conventions that lets them run within a Java-compatible browser (client-side). You can only run an applet from an HTML page.
• Servlets – applets that run on a server.
![Page 11: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/11.jpg)
11
Computer programs classifiedSummary
•Apps with Visual Interface
•Apps with No Visual Interface
![Page 12: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/12.jpg)
12
Computer programs classifiedSummary
• Apps with Visual Interface– Console apps
• Input/Output data displayed in MSDOS window
– Windowed Dlg Box apps (modified console apps)• Using dialog boxes for I/O
– Windows based apps• Using visual components: labels, text fields, buttons
etc
– Web site apps
![Page 13: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/13.jpg)
13
Computer programs classifiedSummary
• Apps with No Visual Interface that run in the background and respond to requests– Class libraries
• Collections of code that can be called by other code
– Windows services• No UI, Runs independently of any other user
app• Starts automatically when the computer starts
– Web services• No UI, It is code for other apps to call
![Page 14: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/14.jpg)
14
.
FromConsole apps
ToWindows GUI apps
![Page 15: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/15.jpg)
1515Java Programming: From Problem Analysis to Program Design, 4e
INTRO to Graphical User Interface (GUI) Components
• Drawbacks/disadvantages of– Console applications– Dialog boxes based windowed
applications• Suppose, the user/developer wants the
program to display all input data and output data in one pane or window or dialog box
• Such a dialog box is known as GUI or only UI
![Page 16: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/16.jpg)
1616Java Programming: From Problem Analysis to Program Design, 4e
Graphical User Interface (GUI) Components
• Advantages of using GUI:– View inputs and outputs
simultaneously – One graphical window– Input values in any order– Change input values in window – Click on buttons to get output
![Page 17: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/17.jpg)
1717Java Programming: From Problem Analysis to Program Design, 4e
Graphical User Interface (GUI) Components
• Terminology:• Frame/Form
– Title bar• System supported icons• Title
– Content pane• Components – labels, text fields, buttons
etc
![Page 18: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/18.jpg)
18
Win API
![Page 19: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/19.jpg)
Assoc. Prof. Stoyan Bonev 1919
IntroductionIntroduction
• The Windows Operating System introduced changes in the structure, implementation and execution of the computer programs.
• In line with the console applications, programs oriented towards Windows and Internet were developed.
![Page 20: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/20.jpg)
Assoc. Prof. Stoyan Bonev 2020
Windows based Application – structure Windows based Application – structure and source code:and source code:
• A C++ program is composed to include:– definitions of global variables and– definitions of functions, one of which is the main
function titled main().
• The minimal console application does not include executable statements and is presented by sample source codes as on the next slide:
![Page 21: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/21.jpg)
Assoc. Prof. Stoyan Bonev 2121
Windows based Application – structure Windows based Application – structure and source code:and source code:
• Minimal console app:•int main(){ return 0; }
• More minimal console application:•void main() {return; }
• Most minimal console application:•void main() { }
![Page 22: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/22.jpg)
Assoc. Prof. Stoyan Bonev 2222
Windows based Application – structure Windows based Application – structure and source code:and source code:
• The execution of a Windows program doesn't start in main--it starts in WinMain
• Following the console apps analogy one may expect that
• The minimal Windows Application is expected to be presented by one of the presented source codes:–int WinMain() { return 0; }–void WinMain(){ return; }–void WinMain(){ }
![Page 23: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/23.jpg)
Assoc. Prof. Stoyan Bonev 23
Minimal Windows API application
The analogy with console applications dictates the same style
int WinMain( )
{
return 0;
}
But real story is quite different . .> next slide
![Page 24: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/24.jpg)
Assoc. Prof. Stoyan Bonev 24
Minimal Windows API applicationIncludes two non-empty functions. look at next two slides:
int WinMain( . . . )
{
. . .
}
int WndProc( . . . )
{
. . .
}
![Page 25: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/25.jpg)
Assoc. Prof. Stoyan Bonev 25
Minimal Windows API application
int WinMain( . . . ) { WndClass wc;RegisterClass(&wc);CreateWindow(wc);ShowWindow(wc);UpdateWindow(wc);while ( GetMessage( … ) != NULL )
{ TranslateMessage( ); DispatchMessage( );}
}
![Page 26: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/26.jpg)
Assoc. Prof. Stoyan Bonev 26
Minimal Windows API application int WndProc(HWND hWnd, UINT message,...) { switch (message) {
case WM_PAINT: /* stmts */case WM_LBUTTONUP: . . .
case WM_RBUTTONDOWN:. . .
case WM_CLOSE: . . .case WM_QUIT: . . .
};}
![Page 27: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/27.jpg)
Assoc. Prof. Stoyan Bonev 2727
Windows based Application – structure Windows based Application – structure and source code:and source code:
• No, there is no analogy btw console app & Windows based app.
• Windows Application totally differs. • It has different philosophy and is based on
different principles like• Visual programming,• Component programming and• Event-driven programming
![Page 28: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/28.jpg)
Assoc. Prof. Stoyan Bonev 2828
Windows based Application – structure Windows based Application – structure and source code:and source code:
• Win app need an entity to locate its components (labels, text boxes, buttons etc)
• Such an entity has to be visualized.• Win app needs a mechanism to respond to
user actions, known as events.
• To answer these requirements, Win app may not be empty, as the console app is.
![Page 29: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/29.jpg)
Assoc. Prof. Stoyan Bonev 2929
Windows based Application – structure Windows based Application – structure and source code:and source code:
• Win app need at least two program units:• One that creates a structure for the
form/window and visualizes it• One that contains event handlers, i.e. User
specified code to run as response to events/messages/ sent to the Win app by the user or by the OS.
![Page 30: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/30.jpg)
Assoc. Prof. Stoyan Bonev 3030
Windows based Application – structure Windows based Application – structure and source code:and source code:
![Page 31: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/31.jpg)
Assoc. Prof. Stoyan Bonev 3131
Windows based Application – structure Windows based Application – structure and source code:and source code:
• As it was alredy discussed, Windows Application has a totally different composition.
• It is structurally organized to include two components:
• Source code component (.cpp file)• Resource component (.rc file)
![Page 32: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/32.jpg)
Assoc. Prof. Stoyan Bonev 3232
Source code componentSource code component• The .cpp file contains at least 2 functions:
– WinMain()• To register, create, update, show app window
• To use a loop to distribute events for processing at run time
– WndProc()• To run code as response to fixed events at run time
![Page 33: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/33.jpg)
Assoc. Prof. Stoyan Bonev 3333
Resource componentResource component• An additional feature of a Windows
Application is the resource component structured as contents of a resource file.
• Resource is any element of the user interface like icons, mouse pointers, menus etc.
• Comprised in a separate resource file, compiled by a resource compiler and is bound to the executable file.
![Page 34: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/34.jpg)
Assoc. Prof. Stoyan Bonev 34
• C++ source C++ compiler Object code Linker Executable file
• Applic.cpp Applic.obj Applic.exe
![Page 35: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/35.jpg)
Assoc. Prof. Stoyan Bonev 35
• C++ source C++ compiler Object code Linker Executable file
• Applic.cpp Applic.obj
Applic.exe
• Applic.rc Applic.res
• Resource RCcompiler Resource RCcompiler
description in binary
![Page 36: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/36.jpg)
Assoc. Prof. Stoyan Bonev 36
How to build standard (unmanaged) .exe for console application?
• Processing stages:– Compiling– Linking
![Page 37: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/37.jpg)
Assoc. Prof. Stoyan Bonev 37
• C++ source C++ compiler Object code Linker Executable file
• Applic.cpp Applic.obj Applic.exe
![Page 38: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/38.jpg)
Assoc. Prof. Stoyan Bonev 38
How to build .exe for Windows based application?
• Processing stages:– Compiling– Compiling resources– Linking – Binding resources
![Page 39: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/39.jpg)
Assoc. Prof. Stoyan Bonev 39
• C++ source C++ compiler Object code Linker Executable file
• Applic.cpp Applic.obj
Applic.exe
• Applic.rc Applic.res
• Resource RCcompiler Resource RCcompiler
description in binary
![Page 40: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/40.jpg)
Assoc. Prof. Stoyan Bonev 40
!
• The presentation demonstrates the API programming model through two versions of an application:
– Standard– Minimal
![Page 41: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/41.jpg)
Assoc. Prof. Stoyan Bonev 41
• My understanding of a Standard application:
– Standard – represents a window form with attributes and resources generated automatically by the IDE without any developer interference.
![Page 42: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/42.jpg)
Assoc. Prof. Stoyan Bonev 42
• My understanding of a Minimal application:
– Minimal – represents a window form free of resources, displayed as an empty window with a greeting message “Hello, AUBG!”.
![Page 43: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/43.jpg)
Assoc. Prof. Stoyan Bonev 43
The difference btw
debug and release version
![Page 44: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/44.jpg)
Assoc. Prof. Stoyan Bonev 44
Comparative Efforts Analysis
• API Model:– Advantages
• Minimal program size;
• No need of extra libraries, except Windows dll’s.
– Disadvantages• Huge number of API base functions.
![Page 45: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/45.jpg)
Assoc. Prof. Stoyan Bonev 45
Comparative Efforts Analysis
• MFC and .NET Model:– Advantages
• No need to know the set of API base functions;
• User friendly techniques for developing applications.
– Disadvantages• Greater size of the executable file;
• Need for additional class libraries (dll or static).
![Page 46: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/46.jpg)
Assoc. Prof. Stoyan Bonev 46
Applications based on
A P Iprogramming model
![Page 47: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/47.jpg)
Assoc. Prof. Stoyan Bonev 47
Building Windows Application using Windows API program model
• Select:–Project type Visual C++ >> Win32–Project template Win32 Project:
![Page 48: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/48.jpg)
Assoc. Prof. Stoyan Bonev 48
Building Windows Application using Windows API program model
• Select:
– Standard application settings
• Build:– Debug application version
– Release application version
• How?
Build > Configur Manager > select Dbg/Rlse
• Compare:
– The .exe file sizes
![Page 49: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/49.jpg)
Assoc. Prof. Stoyan Bonev 49
Building Windows Application using Windows API program model
• The standard API application window view:
![Page 50: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/50.jpg)
Assoc. Prof. Stoyan Bonev 50
Building Windows Application using Windows API program model
• The minimal API application window view:
![Page 51: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/51.jpg)
51
MFC
![Page 52: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/52.jpg)
Assoc. Prof. Stoyan Bonev 5252
Examples using different techniques:Examples using different techniques:
• Example of a Windows Application using Windows MFC programming model.
standard (Dynamic) minimal (Dynamic)
standard (Static) minimal (Static)
![Page 53: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/53.jpg)
Assoc. Prof. Stoyan Bonev 53
The difference btw statically linked and dynamically linked
application
![Page 54: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/54.jpg)
Assoc. Prof. Stoyan Bonev 54
Applications based on
M F Cprogramming model
![Page 55: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/55.jpg)
Assoc. Prof. Stoyan Bonev 55
Building Windows Application using Windows MFC program model
• Select:–Project type Visual C++ >> MFC–Project template MFC Application:
![Page 56: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/56.jpg)
Assoc. Prof. Stoyan Bonev 56
Building Windows Application using Windows MFC program model
• Select:–Standard application settings:
• SDI as alternate to MDI or DIALOG based• MFC with Shared DLL• MFC with Static Lib
• Build:– Debug application version– Release application version
• Compare:–The .exe file sizes
![Page 57: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/57.jpg)
Assoc. Prof. Stoyan Bonev 57
Building Windows Application using Windows MFC program model
◦The standard MFC application window view:
![Page 58: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/58.jpg)
Assoc. Prof. Stoyan Bonev 58
Building Windows Application using Windows MFC program model
◦The minimal MFC application window view:
![Page 59: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/59.jpg)
04/19/23 assoc. prof. Stoyan Bonev 59
OOP DOTNET FCL.NET & FCL
![Page 60: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/60.jpg)
C++,Visual C++
andManaged C++
![Page 61: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/61.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 61
C++, Visual C++ and Managed C++
• The Managed Extensions to C++
• Developers are offered a series of extension keywords, also known as Managed Extensions to C++, to generate code that targets the .NET Framework, also called managed code.
__gc
__value
__property
![Page 62: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/62.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 62
Applications that run directly under Windows
• When you develop an application using Visual C++ .NET it will be either– managed application or– unmanaged application.
• In either case, it will be built to run on Windows machine.
• An unmanaged application runs directly under Windows.
• A managed application runs in the .NET runtime.
![Page 63: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/63.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 63
Managed and Unmanaged Code
• A compiler that emits unmanaged code or native code compiles source code to machine code which then just runs under Windows.
• A compiler that emits managed code does not compile source code to machine code but rather to Intermediate Language (IL). Managed code runs in the Common Language Runtime (CLR), not directly under Windows.
• Compilers Visual C++ 2002 and later emit both unmanaged code and managed code
![Page 64: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/64.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 64
Managed and Unmanaged Code
Using :– Visual C++ .NET 2010/2012– You have a choice of whether you build a
managed or unmanaged application.– Visual C++ .NET is the only language
provided with Visual Studio .NET that can emit either managed code or unmanaged code.
![Page 65: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/65.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 65
Managed and Unmanaged Code
• When you build a managed application, your code is compiled to IL in a file called an assembly, along with metadata that describes the classes, methods and attributes of the code you’ve created. This assembly is the unit of deployment in the .NET world. You copy it to another server to deploy the assembly there – and often that copying is the only step required in the deployment.
![Page 66: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/66.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 66
Managed and Unmanaged Code• Managed code runs in the CLR. The runtime offers a
variety of services to your running code:– It first loads and verifies the assembly to make sure the IL
is OK.– Then, just in time, as methods are called, the runtime
arranges for them to be compiled to machine code for the machine the assembly is running on, and caches this machine code to be used the next time the method is called. (This is known as Just In Time or JIT compiling, or just jitting).
– As the assembly runs, the runtime continues to provide services such as security, memory management, threading, etc
• The application is managed by the runtime.
![Page 67: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/67.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 67
Application in unmanaged C++// UnmanagedCPPApplication.cpp#include <iostream>using namespace std;
class ArithmeticClass // Remark: class with no data members {
public: double Add( double n1, double n2) { return n1 + n2; }
};
void main(){
ArithmeticClass arith; cout << endl << arith.Add(1.1, 2.2);
double answer;answer = arith.Add(4.4, 5.5); cout << endl << answer;
}
![Page 68: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/68.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 68
Application in managed C++#include "stdafx.h“ // ManagedCPPApplication.cpp : main project fileusing namespace System;
class ArithmeticClass {
public: double Add( double n1, double n2) { return n1 + n2; }
};
void main( ){
ArithmeticClass arith; Console::WriteLine( arith.Add(1.1, 2.2) );double answer;
answer = arith.Add(4.4, 5.5); Console::WriteLine(answer);}
![Page 69: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/69.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 69
Managed and Unmanaged Data
• When you write unmanaged application, you have only unmanaged data.
• When you write managed application in VB or C#, you have only managed data.
• When you write a managed C++ application, you control whether your data is managed or unmanaged.
![Page 70: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/70.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 70
Unmanaged Data
• This term is a way to describe how data has always been handled in C++.– Given a class– You create an instance of the class on the stack– You create an instance of the class on the heap
and use it through a pointer– See next slide
![Page 71: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/71.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 71
Unmanaged Data
class ArithmeticClass {public: double Add( double num1, double
num2){ return num1 + num2; }
};
void main(){
ArithmeticClass arith; cout << endl << arith.Add(1.1, 2.2);
ArithmeticClass *pArith = new ArithmeticClass();cout << endl << pArith->Add(2., 2.);
}
![Page 72: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/72.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 72
Unmanaged Data
No problems with the stack variable arith.
The heap variable must be explicitly cleared away:delete pArith;
So, memory management is your job in classic C++.What you create with new, you must clean up with delete.
If you forget, you can suffer a memory leak.
![Page 73: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/73.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 73
Garbage-Collected Classes
• If you create a GCC ( __gc … ), the runtime will manage the memory for you.
• In exchange:– you give up capability to create an instance on the
stack– You have to follow some rules when designing your
class• Inheritance Restrictions• Single Inheritance• You cannot override operator & or operator new• You cannot implement a copy constructor.
![Page 74: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/74.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 74
Garbage-Collected Classes// you set garbage collection class-by-class, not object-by-object
__gc class Sample{private: double number;public:
Sample (double num): number(num) { }};
void main( ){
Sample a(5.0); // Error
Sample* pa = new Sample(6.0); // OK,no need of delete operator}
![Page 75: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/75.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 75
Value Classes
• Programmers feel uncomfortable when they are told they cannot create instances of GCC /managed data/ on the stack.
• The fundamental types, such as int, float, are referred as value types, because they are allocated on the stack.
• You can define a class of yours to be a value class ( __value …)
![Page 76: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/76.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 76
Value Classes
__value class Sample{private: double number;public:
Sample (double num): number(num) { }};
void main( ){
Sample a(5.0); // OKSample* pa = __nogc new Sample(6); // OK
}
![Page 77: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/77.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 77
Value Classes
• These value classes are still managed, but are not garbage-collected.
![Page 78: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/78.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 78
Boxing
• When you use/mix managed and unmanaged data, you need to use the following .NET concept :– Boxing
![Page 79: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/79.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 79
Boxing a Fundamental Type
If you try to pass a piece of unmanaged data to a method that is expecting managed data, the compiler will reject your attempt.
The way to get a pointer to garbage-collected data (i.e managed data) is to use the __box extension.
This is referred as boxing. See next slide.
![Page 80: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/80.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 80
Boxing a Fundamental Type
int i=3;
System::Console::Write(“ i is =“);
System::Console::WriteLine(i);
System::Console::WriteLine( __box(i) );
![Page 81: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/81.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 81
Properties • Managed classes have properties. class Employee { private: int salary;
. . . // remaining member variables
public: int getSalary() { return salary; } void setSalary(int s) {salary=s;}
. . . // remaining public methods
};
![Page 82: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/82.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 82
Properties
• Basic concept: class Employee has data member salary– It’s a private variable– With public get and set functions
• Many classes follow this “get and set” paradigm.• Benefit is encapsulation.• Downside is the way your code looks when
you’re using get and set functions.
![Page 83: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/83.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 83
Properties
• Managed classes have properties.
If you have a pointer to an instance of class Employee, say pe and you want to give that Employee’s $5000.00 raise, here is the code
Employee *pe = new Employee; pe->setSalary(40000);
pe->setSalary(pe->getSalary() + 5000);
![Page 84: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/84.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 84
Properties
• In order to simplify the last line code
__gc class Employee { private: int salary; public:
__property int get_Salary() { return salary; }__property void set_Salary(int s) {salary=s;}
};
![Page 85: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/85.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 85
Properties
• Now the Employee class has a Salary property. It is directly tied to salary member variable.
• The property name is what appears to follow get_ and set_ of the function names.
• To use the property, you write code that treats the Salary property as a public member variable: pe->Salary = 40000; pe->Salary = pe->Salary + 5000;
or pe->Salary += 5000;
![Page 86: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/86.jpg)
Digression on Properties in VBasic
(read or skip 8 coming slides)
![Page 87: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/87.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 87
Class Counter
Private m_count As Integer
. . .
Public Sub New()
m_count = 0
End Sub
Public Sub New(ByVal val As Integer)
m_count = val
End Sub
. . .
End Class
![Page 88: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/88.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 88
Dim b, c As Counter
b = New Counter
b.ShowData()
c = New Counter(20)
c.ShowData()
![Page 89: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/89.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 89
Class Distance
Private m_feet As Integer, m_inches As Single . . . Public Sub New() m_feet = 0 : m_inches = 0.0 End Sub
Public Sub New(ByVal valft As Integer, ByVal valin As Single) m_feet = valft m_inches = valin End Sub . . .End Class
![Page 90: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/90.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 90
Dim aa, bb, cc As Distance
aa = New Distance(3, 3.0) bb = New Distance(6, 6.0) cc = New Distance
aa.ShowData() : bb.ShowData() : cc.ShowData()
![Page 91: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/91.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 91
Example class Counter with property block
Class Counter
Private m_count As Integer . . .
Public Property Count() As Integer
Get Return m_count ' read value of property End Get
Set(ByVal Value As Integer) m_count = Value ' write value of property End Set
End Property . . .
End Class
![Page 92: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/92.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 92
Example class Counter with property block
Dim d As New Counterd.Count = 880Console.WriteLine _
("Counter data displayed through property = {0}", d.Count)
Dim var As Integervar = d.CountConsole.WriteLine _
("Counter data displayed through assignment = {0}", var)
![Page 93: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/93.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 93
Example class Distance with property block
Class Distance Private m_feet As Integer, m_inches As Single
. . . Public Property Feet() As Integer Get Return m_feet ' read value of property End Get Set(ByVal Value As Integer) m_feet = Value ' write value of property End Set End Property
Public Property Inches() As Single Get Return m_inches ' read value of property End Get Set(ByVal Value As Single) m_inches = Value ' write value of property End Set End Property
. . . End Class
![Page 94: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/94.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 94
Example class Distance with property block
Dim aa As Distance
aa = New Distance aa.Feet = 5 aa.Inches = 5.0 Console.WriteLine _ ("Distance displayed through property Feet={0} Inches={1}", aa.Feet, aa.Inches)
Dim varft As Integer, varin As Single
varft = aa.Feet varin = aa.Inches Console.WriteLine _ ("Distance displayed through assignment: {0} feet, {1} inches", varft, varin)
![Page 95: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/95.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 95
Application types you can create with Visual C++
• Console applications
• Windows applications
• Web applications – run on a Web server when a particular URL is loaded, and send HTML to a waiting browser.
• Services – are applications that run in the background and respond to requests, but do not have any visual interface
• Class libraries – are collections of code that can be called by other code.
• Other
![Page 96: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/96.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 96
Creating unmanaged C++ Application
• Open Visual Studio .NET IDE
• On the main menu choose File , New , Project
• Select Visual C++ projects, Win32
![Page 97: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/97.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 97
Creating managed C++ Application
• Open Visual Studio .NET IDE
• On the main menu choose File , New , Project
• Select Visual C++ projects, CLR
![Page 98: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/98.jpg)
The .NET Base Class Libraries
![Page 99: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/99.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 99
The .NET Base Class Libraries
• Libraries Shared Across Languages
• When you write managed C++, you have access to all of the managed code libraries that come with the .NET Framework:– The Base Class Libraries
– ASP.NET
– ADO.NET
• These libraries are modern and powerful. They provide services, as XML processing, that weren’t even thought of when libraries such as MFC and ATL were first written.
![Page 100: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/100.jpg)
Digression on Namespaces
(read or skip 8 coming slides)
![Page 101: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/101.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 101
Namespaces in C++
• Namespaces are a C++ feature designed to eliminate name conflicts, such as having two classes, each in different libraries, called the same name, e.g. String.
• Before namespaces, library developers made their names unique by adding letters to them: GCString, CString, TKString. This approach reduces, but doesn’t prevent name conflicts.
• With namespaces, classes can have simple names.
• Name conflicts are much less likely, because in addition to a short or local name, classes have a fully qualified name that includes their namespace.
![Page 102: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/102.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 102
Namespaces in C++
namespace One { class Common { . . . }; void Do() { … } }
namespace Two { class Common { . . . }; void Do() { … } }
![Page 103: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/103.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 103
Namespaces in C++
void main()
{
Common c(3); // ambiguous
One::Common c1(3); // OK
Two::Common c2(3); // OK
Do(); // ambiguous
One::Do(); // OK
Two::Do(); // OK
}
![Page 104: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/104.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 104
Namespaces in C++
using namespace One;
void main()
{
Common c1(3); // OK
Two::Common c2(3); // OK
Do(); // OK
Two::Do(); // OK
}
![Page 105: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/105.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 105
Namespaces in C++
using namespace Two;
void main()
{
One::Common c1(3); // OK
Common c2(3); // OK
One::Do(); // OK
Do(); // OK
}
![Page 106: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/106.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 106
Namespaces in C++
Modern class libraries are each in their own namespace.
For example, the templates in the Standard Template Library STL are in the namespace std.
using namespace std;
![Page 107: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/107.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 107
Namespaces in C++
To use a class in a namespace, you have two choices:• Call the class by its full name
x = System::Math::PI / 4;
• Add a using statement at the top of the file and then call the class by its name within the namespace: using namespace System;
. . .
x = Math::PI / 4;
![Page 108: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/108.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 108
The .NET Base Class Libraries
• The System Namespace
• All the data types are represented.
• Two classes deserve special mention– System::Console Class
– System::String Class
• Other components– System::DateTime structure
• Other useful namespaces– System::IO namespace
– System::Text namespace
– System::Collections namespace
– System::Threading namespace
![Page 109: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/109.jpg)
Building Simple User Interfaces with Windows Forms
![Page 110: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/110.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 110
Building Simple User Interfaces with Windows Forms
• A Managed C++ Windows Forms App
![Page 111: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/111.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 111
Building Simple User Interfaces with Windows Forms
• The project wizard creates a blank form for you, and later you’ll drag controls onto it.
• It also generates a file full of code, which will be edited as you add controls and set properties.
• To see the code, right-click the form in the designer and choose View Code.
![Page 112: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/112.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 112
Building Simple User Interfaces with Windows Forms
![Page 113: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/113.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 113
Building Simple User Interfaces with Windows Forms
![Page 114: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/114.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 114
namespace SimpleForm2 {
using namespace System;using namespace System::ComponentModel;using namespace System::Collections;using namespace System::Windows::Forms;using namespace System::Data;using namespace System::Drawing;
public ref class Form1 : public System::Windows::Forms::Form{public:
Form1(void){
InitializeComponent();////TODO: Add the constructor code here//
}
protected:~Form1(){
if (components){
delete components;}
}
private:/// <summary>/// Required designer variable./// </summary>System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code/// <summary>/// Required method for Designer support - do not modify/// the contents of this method with the code editor./// </summary>void InitializeComponent(void){
this->components = gcnew System::ComponentModel::Container();this->Size = System::Drawing::Size(300,300);this->Text = L"Form1";this->Padding = System::Windows::Forms::Padding(0);this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
}#pragma endregion
};}
![Page 115: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/115.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 115
Using the Toolbox to build the user interface
• The Toolbox is a tabbed window that appears on the editing screen.
• When you are working with the designer on Windows Forms, you can drag typical Windows controls onto your form
![Page 116: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/116.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 116
Using the Toolbox to build the user interface
![Page 117: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/117.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 117
Using the Toolbox to build the user interface
Popular controls:• Label• Text box• Button• Check box• Radio buttons• Group box• Picture box• DateTime picker
![Page 118: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/118.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 118
Using the Toolbox to build the user interface
• The form and the controls are designed and implemented as classes with properties.
• The properties pane may be displayed in a way similar to toolbox pane.
• Right click on the control and select Properties.
![Page 119: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/119.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 119
Using the Toolbox to build the user interface
![Page 120: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/120.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 120
Using the Toolbox to build the user interface
![Page 121: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/121.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 121
Demo Application
• Form and two controls:– Picture Box– DateTime picker
![Page 122: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/122.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 122
Demo Application
![Page 123: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/123.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 123
Demo Application
![Page 124: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/124.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 124
Demo Application
![Page 125: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/125.jpg)
04/19/23 Assoc. Prof. Stoyan Bonev 125
Writing Event Handlers
• There are two ways to add a handler to an event• The simplest is to double-click the control in the
designer. This adds a handler to the default event, which varies from control to control.
• To add a handler for another event, use the Properties window: at the top a toolbar with 5 tabs: the 4th is Events. When this tab is pressed, it displays all the events that can occur for this particular control.
![Page 126: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/126.jpg)
126
WPF
![Page 127: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/127.jpg)
What is WPF?Windows Presentation Foundation (WPF) is a next-generation presentation system for building Windows client applications with visually stunning user experiences. –Official Microsoft Definition
Based on: •.NET platform• Extensible Application Markup Language (XAML)
![Page 128: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/128.jpg)
Advantages of WPF
• Easy to create stunning design• Technology for developing future
windows applications• Reuse of existing code• Advanced Data-Binding• Supported by Microsoft
![Page 129: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/129.jpg)
Disadvantages of WPF• Requires .NET Framework 3.0 or
higher• Comparatively slower than
Windows Forms• Requires DirectX9 compatible
video card for graphics
![Page 130: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/130.jpg)
Microsoft Visual Studio &.NET Framework 3.0 or
higher
and
WPF technology for building applications
![Page 131: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/131.jpg)
Building WPF applications• WPF approach may apply for C# and
VBasic.
• UI is described using XAML /Extensible Application Markup Language/.
• Resource definition language and .rc file(s) as well as resource compiler replaced with XAML.
![Page 132: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/132.jpg)
Creating WPF graphical applications
• You design the form-based UI of a Windows-based app interactively
• IDE generates code to implement UI that you designed
• IDE provides two views of a graphical app:– The design view– The code view
• Code and Text Editor window used to modify code and logic for a graphical app
• Design View window used to layout UI• Easy to switch between the two views
whenever user wants
![Page 133: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/133.jpg)
Note
• As with WinForms, drag and drop controls from the Toolbox onto the window
![Page 134: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/134.jpg)
Building C# WPF applications
.
![Page 135: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/135.jpg)
Creating WPF graphical applications
• VS displays an empty WPF form in the Design View window, together with another window containing the XAML description of the form, as shown next slide
• XAML is used by WPF applications to define the layout of a form and its contents.
![Page 136: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/136.jpg)
Assoc. Prof. Stoyan Bonev
Building C# WPF applications
.
![Page 137: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/137.jpg)
Assoc. Prof. Stoyan Bonev
Building C# WPF applications
.
![Page 138: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/138.jpg)
Assoc. Prof. Stoyan Bonev
Building C# WPF applications
.
![Page 139: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/139.jpg)
Assoc. Prof. Stoyan Bonev
Building C# WPF applications
.
![Page 140: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/140.jpg)
140
Demo
• One more comprehensive example
![Page 141: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/141.jpg)
Windows Presentation Foundation
Figure 10-19 WPF design
![Page 142: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/142.jpg)
142
My first WPF application
• Write a program to display an elementary simple form containing 3 controls:
• a label • a text box where you can enter your
name and • a button that displays a personalized
greeting in a message box• Try to Solve task using your skills
from Win Forms technology
![Page 143: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/143.jpg)
143
My first WPF application
• Create your WPF project, named sbWPFHello.• Create the UI
– Click the Toolbox tab– Select/click Label, click visible part of the
form– Reposition and resize the label, – On the View menu, click Properties window,
change Text property. Another way to modify Text property is through XAML pane <Label> tag, Content attribute
![Page 144: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/144.jpg)
144
My first WPF application
– Click the Toolbox tab– Select/click TextBox, click visible part of
the form– Reposition and resize the textbox, – On the View menu, click Properties
window, change Text property. Another way to modify Text property is through XAML pane <TextBox> tag, Content attribute
![Page 145: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/145.jpg)
145
My first WPF application
– Click the Toolbox tab– Select/click Button, click visible part of
the form– Reposition and resize the button, – On the View menu, click Properties
window, change Text property. Another way to modify Text property is through XAML pane <Button> tag, Content attribute
![Page 146: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/146.jpg)
146
My first WPF application
• Build Solution to verify the project builds successfully
• Click Start without Debugging– Form gets displayed– You type your name– Nothing happens
• You managed a C# application without writing any line of C# source code
![Page 147: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/147.jpg)
147
My first WPF application
• You managed a C# application without writing any line of C# source code
• IDE generates a lot of code. Examine the .cs files attached to the project
• You need to add the EvH code associated with the button control
![Page 148: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/148.jpg)
148
My first WPF application
• Before we include EvH code, examine what IDE generated as C# source code:
• The generated code handles routine tasks that all graphical apps must perform such as– Starting up an application– Displaying the form etc.
![Page 149: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/149.jpg)
149
My first WPF application
• In Solution explorer click ‘+’ beside the file MainWindow.xaml
• The MainWindow.xaml.cs file appears.• Open the ….cs file. ..
– You see a lot of using namespace stmts– You see definition of a class MainWindow :
Window– You see a constructor that calls method InitializeComponent();– The purpose of code you see is that you can add
your own methods to handle the logic for your application, such as what happens when the user clicks a button
![Page 150: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/150.jpg)
150
My first WPF application
• Now you may be wondering– Where is the Main() method– How the form gets displayed when the
app runs
• In Solution explorer you can see one more XAML file, App.xaml
![Page 151: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/151.jpg)
151
My first WPF application• In Solution explorer click ‘+’ beside the file
App.xaml• The App.xaml.cs file appears.• Open the App.xaml.cs file
– You see a lot of using namespace stmts.– You see not a lot else (there is a lot of
hidden code)– The Main() method is hidden as well. But its
code is generated based on settings of the App.xaml file
– Main() method will create and display the form by the StartupURI property.
![Page 152: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/152.jpg)
152
My first WPF application
• Now, it’s time to start writing C# source code, i.e. the EvH associated with the Button.
![Page 153: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/153.jpg)
153
My first WPF application
• Double click on the button control• Source code window opens• You have to fill the body of the EVH andler
method
MessageBox.Show(“Hello, “+textBox1.Text);
• Rebuild the solution• Click the button• The program works.
![Page 154: COS220 Concepts of PLs AUBG, COS dept Lecture 30aa Alternate Ways of Developing Windows Based Applications Reference: MS Visual C++,Deitel, Chapter 2.7.](https://reader036.fdocuments.us/reader036/viewer/2022062422/56649e885503460f94b8c979/html5/thumbnails/154.jpg)
Thank You
For
Your attention!
Any questions?