1 / 23

Simple Gui in C++

Simple Gui in C++. Project Selecting. So Far. Registering the window class Creating the window. So Far. The major function/Handling Messages. WndProc Return value: LRESULT CALLBACK Parameters: HWND hWnd UINT message WPARAM wParam

Télécharger la présentation

Simple Gui in C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Simple Gui in C++

  2. Project Selecting

  3. So Far • Registering the window class • Creating the window

  4. So Far

  5. 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

  6. 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

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

  8. 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.

  9. Painting • When does painting occur? • After receiving WM_PAINT

  10. 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);

  11. 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)

  12. 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);

  13. Painting (Cont) • CreatePen(intnPenStyle,intnWidth,COLORREFcrColor) • 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

  14. Alternative Ways • CPen*SelectObject( hdc, CPen*pPen); • CBrush*SelectObject( hdc, CBrush*pBrush); • CBitmap*SelectObject(hdc, CBitmap*pBitmap); • Etc…

  15. 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

  16. 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

  17. How does it look?

  18. Adding Options

  19. For more Information • A simple tutorial • MSDN!!!

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

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

  22. 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…

More Related