Event-based Programming - PowerPoint PPT Presentation

About This Presentation
Title:

Event-based Programming

Description:

Event-based Programming Roger Crawfis Window-based programming Most modern desktop systems are window-based. Event-based Programming Window-based GUI s are ... – PowerPoint PPT presentation

Number of Views:154
Avg rating:3.0/5.0
Slides: 22
Provided by: RogerC84
Category:

less

Transcript and Presenter's Notes

Title: Event-based Programming


1
Event-based Programming
  • Roger Crawfis

2
Window-based programming
  • Most modern desktop systems are window-based.

What location do I use to set this pixel?
Window based environment
Non-window based environment
3
Event-based Programming
  • Window-based GUIs are typically comprised of
    many independent processes.
  • These processes sit and wait for the user to do
    something, to which it can respond.
  • Moreover, a simple application may be waiting for
    any of a number of things.

4
Event-based Programming
  • Sample main programs
  • C / managed C
  • static void Main()
  • Application.Run( new Form1())
  • C (MFC Document/View architecture)
  • There isnt one!!
  • GLUT
  • void main(int argc, char argv)
  • myInit()
  • glutMainLoop()

5
Programming forms
  • Procedural programming
  • code is executed in sequential order.
  • Event-driven programming
  • code is executed upon activation of events.

statement 1 statement 2 statement 3 --------
-------- statement n
method 1 method 2 method 3 --------
-------- method n
Do method 2then method 1 then method 3
Do method 1then method 3
6
Procedural programming
  • Up to now, our control flow model has been pretty
    straight-forward.
  • Execution starts at main() and executes statement
    sequentially branching with if,for,and while
    statement, and occasional method calls.
  • When we need user input we call read() on the
    console stream which waits (blocks) until the
    user types something, then returns.
  • One problem with this model is How do we wait
    for and respond to input from more than one
    source (eg keyboard and mouse). If we block on
    either waiting for input, we may miss input from
    the other.

7
Event-driven programming
  • the system waits for user input events, and these
    events trigger program methods
  • Event-based programming addresses the two
    problems
  • How to wait on multiple input sources (input
    events)
  • How to decide what to do on each type of input
    event

8
General form of event-driven programming
  • The operating system and window system process
    input events from devices (mouse movement, mouse
    clicks, key presses etc)
  • The window system decides which window, and hence
    which frame and program, each input event belongs
    to.

9
General form of event-driven programming
  • A data structure describing the event is produced
    and placed on an event queue. Events are added to
    one end of the queue by the window system. Events
    are removed from the queue and processed by the
    program. These event data structures hold
    information including
  • Which of the program's windows this event belongs
    to.
  • The type of event (mouse click, key press, etc.)
  • Any event-specific data (mouse position, key
    code, etc.)

10
Event loop
  • main()
  • ...set up application data structures...
  • ...set up GUI....
  • // enter event loop
  • while(true)
  • Event e get_event()
  • process_event(e) // event dispatch routine
  • the event loop is usually hidden from programmer,
    he/she provides just a process_event() method

11
AWT Applications - Frame
  • Frame is a container for components

Frame with normal window controls
Optional Menu
Three containers in Frame with Border Layout
UI-components inside containers each with own
layout
12
Understanding the GUI
  • UI-containers
  • have list of UI-components
  • Each UI-component
  • is a class
  • with paint method
  • lists of Event listeners

13
Understanding .NET UI Components
  • Overview
  • Replacement for VB Forms and MFC
  • Fully integrated with the .NET framework
  • Web Service aware
  • Data (ADO.NET and XML) aware
  • Secure code and Licensing
  • A framework for building Windows application
  • No touch deployment
  • No registration, Versionable, Smart caching
  • A RAD environment in Visual Studio .NET
  • Windows Form Designer, Property Browser

14
Overview (cont)
  • Rich set of controls
  • Standard controls - Label, Button, TextBox, etc.
  • Common controls - ProgressBar, StatusBar, etc.
  • Data aware controls - ListBox, DataGrid, etc.
  • Common dialogs
  • ActiveX Interoperability
  • Can host ActiveX controls / author ActiveX
    controls
  • Printing Support
  • Visual inheritance
  • Create a form based on another form by using
    inheritance
  • Advanced layout
  • Anchoring and docking

15
Basic Terms
  • Component
  • Timer, DB Connection
  • Control (User Control)
  • Windows Forms
  • Menu
  • Button
  • etc
  • Web Forms
  • ASP.NET specific

16
Using VS.NET
  • Adding Components and Controls
  • Just drag component from the toolbox
  • Editing properties
  • Edit directly in the properties editor
  • Registering for events
  • Also in the properties editor

17
What actually happens?
  • Data members for components
  • For example, after placing timer
  • public class FunnyButton System.Windows.Forms.
    Button
  • private System.Windows.Forms.Timer timer1

18
What actually happens?
  • Attributes for the properties
  • For example, after changing Text property
  • private void InitializeComponent()
  • this.Text "ADO Example"

19
What actually happens?
  • Delegates for events
  • Special type event in .NET (special delegate)
  • private void InitializeComponent()
  • this-gtMouseEnter new System.EventHandler(this.
    UserControl1_MouseEnter)
  • private void UserControl1_MouseEnter(object
    sender, System.EventArgs e)

20
Names everyone should know
  • Properties
  • Name data member name
  • Text text shown by control (was Caption)
  • ForeColor current text color
  • Dock docking to the parent
  • Enabled active or not
  • Events
  • Click mouse click on the control
  • SizeChanged - resize

21
InitializeComponent() method
  • This method is created by VS.NET
  • Code generated there represents all the changes
    done in the design view
  • Note if you remove event handler or data member
    added by VS.NET manually, do not forget to clean
    the code that uses it from InitializeComponent().
  • Doing this from the design view is easier!
Write a Comment
User Comments (0)
About PowerShow.com