Ладно, поржали и хватит
ЕХЕшник в папке release прикрепленнеого архива. В файле pouring.cpp увидишь функцию Paint - само рисование. Там некоторые изменения. Во-первых передается параметр HDC hdc - это контекст устройства, типа указателя на устройство, на которое хочешь вывести пиксель и т.п. Это может быть монитор, принтер и т.п.
Еще вместо цвета коемки я в нее решил передавать старый цвет пикселя (в нашем случае белый). Как ты думаешь почему?
Теперь смотри на функцию LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam).
Я вносил изменения в
case WM_LBUTTONDOWN:
isLButtonDown=TRUE;
break;
case WM_LBUTTONUP:
isLButtonDown=FALSE;
break;
case WM_MOUSEMOVE:
if(isLButtonDown)
{
COLORREF color_border=RGB(0,255,0);
POINTS pt=MAKEPOINTS(lParam);
int x = pt.x;
int y = pt.y;
hdc=GetDC(hWnd);
SetPixel(hdc,x,y,color_border );
SetPixel(hdc,x+1,y,color_border );
SetPixel(hdc,x-1,y,color_border );
SetPixel(hdc,x,y+1,color_border );
SetPixel(hdc,x,y-1,color_border );
SetPixel(hdc,x+1,y+1,color_border );
SetPixel(hdc,x+1,y-1,color_border );
SetPixel(hdc,x-1,y+1,color_border );
SetPixel(hdc,x-1,y-1,color_border );
ReleaseDC(hWnd,hdc);
}
break;
case WM_RBUTTONUP:
{
POINTS pt=MAKEPOINTS(lParam);
hdc=GetDC(hWnd);
int x = pt.x;
int y = pt.y;
COLORREF old_col=GetPixel(hdc,x,y);
Paint(hdc,x,y,RGB(0,255,255),old_col);
ReleaseDC(hWnd,hdc);
}
break;
Посмотри на case WM_RBUTTONUP. Этот case выпадает когда возникает сообщение, что отпущена правая кнопка мыши. В принципе, раз кнопка отпущена, значит она была и нажат, поэтому будем считать, что клик мыши был (не рассматриваем изврат, что нажатин было вне нашего окна, а отпущено над нашим окном). Как только ты отпустил правую конпку мыши, вычисляются координаты Х, У над которыми была отпущена кнопка и вызывается наша функция зарисовки. Дальше вроде не очень надо, но если что-то станет непонятно, то спрашивай.
WM_MOUSEMOVE - это сообщение о том, что мышь движется.
Для того, чтобы поиграться. Запускаешь ЕХЕшник жмешь левую кнопку и водишь по окну, только быстро не води, а то пробелы будут
(надо было точки линией соединять
). Чтобы залить область нажми правую кнопку мыши.