Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2014, 22:48   #1
MYuV
 
Регистрация: 03.05.2014
Сообщений: 5
По умолчанию Системное программирование. Рисование движением мыши. C++

Есть программа на Visual Studio, которая рисует мышью на экране линии одного цвета. Нужно запрограммировать так, чтобы при движении мыши вверх рисовались линии одного цвета, а вниз другого. Подскажите пожалуйста, какие функции для этого нужно использовать.

Код:
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <math.h>

int _tmain(int argc, _TCHAR* argv[])
{
HWND hWnd = GetDesktopWindow(); // Идентификатор окна
HDC hdc = GetWindowDC(hWnd); // Контекст устройства 
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(255,0,0) );
  
POINT cp;// Создаем экземпляр структуры, задающей точку на плоскости с помощью пары целых чисел
    GetCursorPos(&cp);  // Функция получает позицию курсора на экране 
    MoveToEx(hdc, cp.x, cp.y, NULL); // Начальная позиция линии

    GetCursorPos(&cp);
	while ((cp.x!=0) || (cp.y!=0))
	{
		GetCursorPos(&cp);  // Функция получает позицию курсора на экране
		LineTo(hdc, cp.x, cp.y);  // Конечная позиция линии
                HPEN hOld = (HPEN)SelectObject( hdc, hPen );
	} 
    getch();
	return 0;
 
}
MYuV вне форума Ответить с цитированием
Старый 04.05.2014, 08:38   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Нужно сохранять координаты и при получении новых сравнивать будет ли новая точка выше или ниже старой, менять цвет, рисовать и сохранять точку и начинать все по новой.
waleri вне форума Ответить с цитированием
Старый 04.05.2014, 15:42   #3
MYuV
 
Регистрация: 03.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Нужно сохранять координаты и при получении новых сравнивать будет ли новая точка выше или ниже старой, менять цвет, рисовать и сохранять точку и начинать все по новой.
Не могу сообразить, как сохранять координаты
MYuV вне форума Ответить с цитированием
Старый 04.05.2014, 20:52   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

То, что прога не твоя, это понятно. Ну, да ладно.
В этом куске ты рисуешь.
Код:
while ((cp.x!=0) || (cp.y!=0))
	{
		GetCursorPos(&cp);  // Функция получает позицию курсора на экране
		LineTo(hdc, cp.x, cp.y);  // Конечная позиция линии
                HPEN hOld = (HPEN)SelectObject( hdc, hPen );
	}
Вот это у тебя курсор.
Код:
POINT cp;
Для того, чтобы сравнивать нужно либо ещё 1 переменную целого типа, либо такой же курсор. И все сравнение в "твоем" цикле.
Вот твоя кисть, точнее цвет.
Код:
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(255,0,0) );
Думаю, что было бы неплохо создать ещё одну кисть с другим цветом.
....
И вот он, апогей! Теперь когда мы имеем ещё один курсор(или 1 переменную целого типа), ещё один цвет кисти, то запросто можем в цикле сравнить старые и новые координаты, и в зависимости от рез-та сравнения нарисуем линию первым или вторым цветом. А за это у нас отвечает вот эта строка:
Код:
HPEN hOld = (HPEN)SelectObject( hdc, hPen );
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 05.05.2014, 18:41   #5
MYuV
 
Регистрация: 03.05.2014
Сообщений: 5
По умолчанию

Спасибо большое! Всё получилось
MYuV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системное программирование в cmd GrizZzly) Помощь студентам 0 19.09.2011 18:40
Системное программирование VadEr Свободное общение 15 25.08.2011 15:24
системное программирование kholoshchak Общие вопросы Delphi 5 11.04.2011 18:00
Системное программирование Ivan_32 Свободное общение 3 03.05.2009 17:58
Рисование на Canvas при нажатии левой кнопки мыши. Ветас Помощь студентам 3 11.11.2007 22:02