Advertisement
Guest User

Untitled

a guest
May 5th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.12 KB | None | 0 0
  1. #include<windows.h>
  2. #include<string.h>
  3.  
  4. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  5. char szProgName[]="Имя программы";
  6.  
  7. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
  8. {
  9. HWND hWnd;
  10. MSG lpMsg;
  11. WNDCLASS w;
  12.  
  13. w.lpszClassName=szProgName; //имя программы - объявлено выше
  14. w.hInstance=hInstance; //идентификатор текущего приложения
  15. w.lpfnWndProc=WndProc; //указатель на функцию окна
  16. w.hCursor=LoadCursor(NULL, IDC_ARROW); //загружаем курсор
  17. w.hIcon=0;
  18. w.lpszMenuName=0;
  19. w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //цвет фона окна
  20. w.style=CS_HREDRAW|CS_VREDRAW;
  21. w.cbClsExtra=0;
  22. w.cbWndExtra=0;
  23.  
  24. //Если не удалось зарегистрировать класс окна - выходим
  25. if(!RegisterClass(&w))
  26. return 0;
  27.  
  28. //Создадим окно в памяти, заполнив аргументы CreateWindow
  29. hWnd=CreateWindow(szProgName, //Имя программы
  30. "Грфические возможности Win32 API", //Заголовок окна
  31. WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
  32. 100, //положение окна на экране по х
  33. 100, //положение по у
  34. 500, //ширина
  35. 400, //высота
  36. (HWND)NULL, //идентификатор родительского окна
  37. (HMENU)NULL, //идентификатор меню
  38. (HINSTANCE)hInstance, //идентификатор экземпляра программы
  39. (HINSTANCE)NULL); //отсутствие дополнительных параметров
  40.  
  41. //Выводим окно из памяти на экран
  42. ShowWindow(hWnd, nCmdShow);
  43. //Обновим содержимое окна
  44. UpdateWindow(hWnd);
  45.  
  46. //Цикл обработки сообщений
  47.  
  48. while(GetMessage(&lpMsg, NULL, 0, 0)) {
  49. TranslateMessage(&lpMsg);
  50. DispatchMessage(&lpMsg);
  51. }
  52. return(lpMsg.wParam);
  53. }
  54.  
  55. //Функция окна
  56. LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,
  57. WPARAM wParam, LPARAM lParam)
  58. {
  59. HDC hdc; //создаём контекст устройства
  60. PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
  61. LOGFONT lf;
  62. HFONT hFont;
  63. RECT r;
  64. HBRUSH hBrush;
  65. HPEN hPen;
  66.  
  67. //Цикл обработки сообщений
  68. switch(messg)
  69. {
  70. //сообщение рисования
  71. case WM_PAINT :
  72. hdc=BeginPaint(hWnd, &ps);
  73.  
  74. //Создаём свой шрифт
  75. strcpy(lf.lfFaceName,"Times New Roman"); //копируем в строку название шрифта
  76. lf.lfHeight=20;
  77. lf.lfItalic=1;
  78. lf.lfStrikeOut=0;
  79. lf.lfUnderline=0;
  80. lf.lfWidth=10;
  81. lf.lfWeight=40;
  82. lf.lfCharSet=DEFAULT_CHARSET; //значение по умолчанию
  83. lf.lfPitchAndFamily=DEFAULT_PITCH; //значения по умолчанию
  84. lf.lfEscapement=0;
  85.  
  86. hFont = CreateFontIndirect(&lf);
  87. SelectObject(hdc, hFont);
  88. SetTextColor(hdc, RGB(0,0,255));
  89. TextOut(hdc, 80,40, "Красота спасёт мир!!", 20);
  90.  
  91. //рисуем красный прямоугольник
  92. r.top=100;
  93. r.left=180;
  94. r.right=400;
  95. r.bottom=300;
  96. FillRect(hdc, &r, HBRUSH(CreateSolidBrush(RGB(255,0,55))));
  97.  
  98. //рисуем зелёный эллипс
  99. hBrush=CreateSolidBrush(RGB(10,200,100));
  100. SelectObject(hdc, hBrush);
  101. Ellipse(hdc, 20,100,200,200);
  102.  
  103. //рисуем закруглённый прямоугольник
  104. hBrush=CreateSolidBrush(RGB(250,200,100));
  105. SelectObject(hdc, hBrush);
  106. hPen=CreatePen(2,2,RGB(0,0,255));
  107. SelectObject(hdc, hPen);
  108. RoundRect(hdc, 20, 250, 250, 350, 15, 15);
  109.  
  110.  
  111. ValidateRect(hWnd, NULL);
  112. EndPaint(hWnd, &ps);
  113. break;
  114.  
  115. //сообщение выхода - разрушение окна
  116. case WM_DESTROY:
  117. PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
  118. DeleteObject(hPen);
  119. DeleteObject(hBrush);
  120. break;
  121.  
  122. default:
  123. return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
  124. }
  125. return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement