Presentation is loading. Please wait.

Presentation is loading. Please wait.

Simple Gui in C++. Project Selecting So Far Registering the window class Creating the window.

Similar presentations


Presentation on theme: "Simple Gui in C++. Project Selecting So Far Registering the window class Creating the window."— Presentation transcript:

1 Simple Gui in C++

2 Project Selecting

3

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_NOMOVE|SWP_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_NOMOVE|SWP_NOZORDER); EndPaint(hWnd, &ps);

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…


Download ppt "Simple Gui in C++. Project Selecting So Far Registering the window class Creating the window."

Similar presentations


Ads by Google