Simple%20Gui%20in%20C - PowerPoint PPT Presentation

About This Presentation
Title:

Simple%20Gui%20in%20C

Description:

signal the OS that this window is invalid and need to be repaint. The OS send all the invalid windows the WM_PAINT message. How does it look? Adding Options ... – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Slides: 24
Provided by: csTa1
Category:
Tags: 20c | 20gui | 20in | invalid | simple

less

Transcript and Presenter's Notes

Title: Simple%20Gui%20in%20C


1
Simple Gui in C
2
Project Selecting
3
(No Transcript)
4
So Far
  • Registering the window class
  • Creating the window

5
So Far
6
The major function/Handling Messages
  • WndProc
  • Return value LRESULT CALLBACK
  • Parameters HWND hWnd
  • UINT message
  • WPARAM wParam
  • LPARAM lParam)
  • The function handles all events (message)
  • WM_CREATE
  • WM_PAINT
  • WM_LBUTTONUP

7
Handling Messages(Cont)
  • Historically wParam 16 bit lParam 32 bit Today
    both 32 bit
  • Each message use those parameters differently
  • For example
  • WM_LBUTTON - lParam stores coordinates
  • LOWORD, HIWORD extract two words

8
Message Queue
  • There are no interrupts
  • When messages are posted they are added to the
    message queue
  • After handling them they are removed

9
Working with Rectangles
  • GetWindowRect(m_hWnd,rt1)
  • return the window rectangle in screen coordinates
  • GetClientRect(m_hWnd,rt2)
  • return window rectangle in "itself" coordinates
  • SetWindowPos(m_hWnd,NULL,0,0,x,y
    ,SWP_NOMOVESWP_NOZORDER)
  • Determines the window position and size.

10
Painting
  • When does painting occur?
  • After receiving WM_PAINT

11
How to Paint
  • First get an handle to the screen
  • hdc BeginPaint(hWnd, ps)
  • Using hdc in each painting function.
  • Do not forget
  • EndPaint(hWnd, ps)

12
Painting functions
  • LineTo(hdc, int x, int y)
  • Line from current position to (x,y)
  • MoveToEx(hdc, int x, int y, NULL)
  • Move the position to (x,y)

13
  • case WM_PAINT
  • hdc BeginPaint(hWnd, ps)
  • // TODO Add any drawing code here...
  • RECT rt,rt1
  • GetClientRect(hWnd, rt)
  • GetWindowRect(hWnd, rt1)
  • int x, y
  • y (rt1.bottom - rt1.top) - rt.bottom
  • x (rt1.right - rt1.left) - rt.right
  • //DrawText(hdc, szHello, strlen(szHello), rt,
    DT_CENTER)
  • MoveToEx(hdc,0,0, NULL)
  • LineTo(hdc, 100,0)
  • LineTo(hdc, 100,100)
  • LineTo(hdc, 0,100)
  • LineTo(hdc,0,0)
  • SetWindowPos(hWnd,NULL,0,0,100 x 1, 100
    y 1,SWP_NOMOVESWP_NOZORDER)

14
Painting (Cont)
  • CreatePen( int nPenStyle, int nWidth, COLORREF
    crColor )
  • Can paint in different styles and colors
  • SelectObject(hdc, HPEN pen)
  • The next object will be painted by pen
  • Ellipse(x,y,x1,y1)
  • The coordinates of the bounding rectangle

15
Alternative Ways
  • CPen SelectObject( hdc, CPen pPen )
  • CBrush SelectObject( hdc, CBrush pBrush )
  • CBitmap SelectObject(hdc, CBitmap pBitmap )
  • Etc

16
Working with Bitmap(See Roy Bubis and Keren
Michaeli Proj)
  • Insert Bitmaps to Resources
  • LoadImage
  • CreateCompatibleDC ( hdc ) -
  • Working on another hdc to avoid flickering
  • SelectObject(memdc, bmp)
  • TransparentBlt(hdc,x,y, dx, dy,
    memdc,0,0,width, height, RGB(255,0,0))
  • //passing the content of medc to hdc

17
Forcing RePaint
  • InvalidateRect(m_hWnd,rect,TRUE)
  • signal the OS that this window is invalid and
    need to be repaint.
  • The OS send all the invalid windows the WM_PAINT
    message

18
How does it look?
19
Adding Options
20
For more Information
  • A simple tutorial
  • MSDN!!!

21
Java - Graphics
  • Working with Graphics object
  • Graphics g
  • DrawLine
  • DrawRect
  • SetColor
  • .

22
Applet
  • An applet is a small, embeddable Java Program.
  • Usually implementing a subclass of applet.

23
Handling events
  • The events that we want to handle should be
    define in our subclass
  • boolean mouseDown(Event e, int x, int y)
  • Boolean mouseDrag(Event e, int x, int y)
  • boolean keyDown(Event e, int x, int y)
  • Etc
Write a Comment
User Comments (0)
About PowerShow.com