Помогите дописать программу! Пользователь отмечает нажатиями левой клавиши мыши произвольные точки, не лежащие на одной прямой. Программа рисует крестики в отмеченных точках. По нажатию правой кнопкой программа должна отметить последнюю точку и нарисовать ломаную без сам оперетинань с вершинами в отмеченных точках!
Точки и крестики программа ставит! подскажите что тут дальше делать?
| Код | // Включаем необходимый заголовочный файл для Windows-программ #include <windows.h> #include <math.h> int q=0;
// Объявление функции окна (оконной процедуры) LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
HINSTANCE hInst; // Идентификатор приложения
// Указатель на константную строку символов - имя программы и класса окна LPCSTR AppName = "MyProgramm";
// Точка входа в программу - функция WinMain int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd; // Уникальный идентификатор окна (handle) MSG msg; // Объявление структуры типа MSG, для работы с сообщениями
hInst = hInstance; // Сохраняем идентификатор приложения
// Заполняем структуру WNDCLASS WNDCLASS wc; // Инициализируем выделенную для структуры память нулями ZeroMemory(&wc, sizeof(wc)); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)WndProc; wc.hInstance = hInst; wc.hIcon = LoadIcon(hInst, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszClassName = AppName;
RegisterClass(&wc); // Создаем и регистрируем оконный класс
// Создаем окно программы hWnd = CreateWindow( AppName, // Имя класса окна AppName, // Заголовок окна WS_OVERLAPPEDWINDOW, // Стиль окна CW_USEDEFAULT, 0, // Горизонтальная и вертикальная позиции окна 300, 300, // Ширина и высота окна NULL, // Хендл родительского окна NULL, // Хендл меню hInst, // Идентификатор приложения NULL); // Дополнительные данные окна
ShowWindow(hWnd, SW_SHOW); // Отображаем окно UpdateWindow(hWnd); // Перерисовываем окно
// Стандартный цикл обработки сообщений while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
return msg.wParam; }
// Оконная процедура LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {HDC hdc; //создаём контекст устройства PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода LOGFONT lf; HFONT hFont; RECT r; HBRUSH hBrush; HPEN hPen; POINT pt; LPPOINT Pt = &pt; HDC hDC;
hDC=GetDC(hWnd);
switch(msg) { /* case WM_MOUSEMOVE: int x,y; x=LOWORD(lParam); y=HIWORD(lParam); char u[10]; _itoa_s(x,u,10,10); if(u[1]==0) u[1]=' '; if(u[2]==0) u[2]=' '; _itoa_s(y,u+4,6,6); u[3]='x'; SetWindowText(hWnd,u); */int x,y,x1[100],y1[100]; //координаты
case WM_PAINT : {hdc=BeginPaint(hWnd, &ps); //здесь можно вставить какие-нибудь функции рисования //Если был щелчок левой
case WM_LBUTTONDOWN: { x=LOWORD(lParam); //узнаём координаты y=HIWORD(lParam); x1[q]=x; y1[q]=y; SetPixel(hDC, x,y,RGB(0,0,0)); MoveToEx(hDC,x,y,&pt); LineTo(hDC,x+5,y-5); MoveToEx(hDC,x,y,&pt); LineTo(hDC,x+5,y+5); MoveToEx(hDC,x,y,&pt); LineTo(hDC,x-5,y+5); MoveToEx(hDC,x,y,&pt); LineTo(hDC,x-5,y-5); q=q++; break; } case WM_RBUTTONDOWN: { MoveToEx(hDC,15,15,&pt); LineTo(hDC,x1[0],y1[0]); break; }/* Polyline( hDC, // идентификатор контекста отображения const POINT FAR* lppt,// указатель на массив структур POINT int cPoints); */
ValidateRect(hWnd, NULL);
//заканчиваем рисовать EndPaint(hWnd, &ps); break; }
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefWindowProc(hWnd, msg, wParam, lParam); }
return 0; }
|
|