Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <tchar.h>
- #include <stdio.h>
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {
- HWND hWnd;
- MSG lpMsg;
- WNDCLASS w;
- HBRUSH hBrush;
- w.lpszClassName = L"MyAppClass"; //имя программы
- w.hInstance = hInstance; //идентификатор текущего приложения
- w.lpfnWndProc = WndProc; //указатель на функцию окна
- w.hCursor = LoadCursor(NULL, IDC_ARROW); //загружаем курсор
- w.hIcon = 0;
- w.lpszMenuName = 0;
- hBrush = CreateSolidBrush(RGB(0, 0, 255));
- w.hbrBackground = hBrush;
- w.style = CS_HREDRAW | CS_VREDRAW;
- w.cbClsExtra = 0;
- w.cbWndExtra = 0;
- //Если не удалось зарегистрировать класс окна - выходим
- if (!RegisterClass(&w))
- return 0;
- //Создадим окно в памяти, заполнив аргументы CreateWindow
- hWnd = CreateWindow(L"MyAppClass", //Имя программы
- L"Грфические возможности Win32 API", //Заголовок окна
- WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
- CW_USEDEFAULT, //положение окна на экране по х
- CW_USEDEFAULT, //положение по у
- 320, //ширина
- 240, //высота
- (HWND)NULL, //идентификатор родительского окна
- (HMENU)NULL, //идентификатор меню
- (HINSTANCE)hInstance, //идентификатор экземпляра программы
- (HINSTANCE)NULL); //отсутствие дополнительных параметров
- //Выводим окно из памяти на экран
- ShowWindow(hWnd, nCmdShow);
- //Обновим содержимое окна
- UpdateWindow(hWnd);
- //Цикл обработки сообщений
- while (GetMessage(&lpMsg, NULL, 0, 0)) {
- TranslateMessage(&lpMsg);
- DispatchMessage(&lpMsg);
- }
- return(lpMsg.wParam);
- }
- //Функция окна
- LRESULT CALLBACK WndProc(HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam) {
- HDC hdc; //создаём контекст устройства
- PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
- RECT r;
- HBRUSH hBrush;
- HBRUSH hBrush1;
- int x = 0, y = 0;
- //Цикл обработки сообщений
- switch (messg) {
- case WM_LBUTTONDOWN:
- hdc = GetDC(hWnd);
- hBrush = CreateSolidBrush(RGB(255, 0, 0)); //задаём сплошную кисть, закрашенную цветом RGB
- SelectObject(hdc, hBrush); //делаем кисть активной
- x = LOWORD(lParam);//координаты с которыми нажата мышь - аргументы WndProc
- y = HIWORD(lParam);
- x /= 40;
- y /= 40;
- Ellipse(hdc, x * 40, y * 40, x * 40 + 40, y * 40 + 40);
- ReleaseDC(hWnd, hdc);
- break;
- case WM_RBUTTONDOWN:
- break;
- //сообщение рисования
- case WM_PAINT:
- HPEN hPen;
- hPen = CreatePen(PS_DASHDOT, 3, RGB(255, 0, 255));
- hdc = BeginPaint(hWnd, &ps);
- int i;
- for (i = 1; i <= 10; i++) {
- MoveToEx(hdc, 0, i * 40, NULL);
- SelectObject(hdc, hPen);
- LineTo(hdc, 400, i * 40);
- MoveToEx(hdc, i * 40, 0, NULL);
- SelectObject(hdc, hPen);
- LineTo(hdc, i * 40, 400);
- }
- EndPaint(hWnd, &ps);
- break;
- case WM_DESTROY:
- PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
- break;
- default:
- return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement