Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz zezwolić użytkownikowi na rysowanie linii za pomocą myszy, gdy procedura okna rysuje podczas przetwarzania komunikatu WM_MOUSEMOVE. System wysyła komunikat WM_MOUSEMOVE do procedury okna za każdym razem, gdy użytkownik przenosi kursor w oknie. Aby narysować linie, procedura okna może pobrać kontekst urządzenia wyświetlania i narysować linię w oknie między bieżącymi i poprzednimi położeniami kursora.
W poniższym przykładzie procedura okna przygotowuje się do rysowania, gdy użytkownik naciska i trzyma lewy przycisk myszy (wysyłając komunikat WM_LBUTTONDOWN). Gdy użytkownik przenosi kursor w oknie, procedura okna odbiera serię komunikatów WM_MOUSEMOVE. Dla każdego komunikatu procedura okna rysuje linię łączącą poprzednią pozycję i bieżące położenie. Aby narysować linię, procedura używa GetDC w celu pobrania kontekstu urządzenia wyświetlania; następnie, gdy tylko rysunek zostanie ukończony i przed powrotem z komunikatu, procedura używa funkcji ReleaseDC, aby zwolnić kontekst urządzenia wyświetlania. Gdy tylko użytkownik zwolni przycisk myszy, procedura okna wyczyści flagę, a rysunek zostanie zatrzymany (który wysyła komunikat WM_LBUTTONUP).
BOOL fDraw = FALSE;
POINT ptPrevious;
.
.
.
case WM_LBUTTONDOWN:
fDraw = TRUE;
ptPrevious.x = LOWORD(lParam);
ptPrevious.y = HIWORD(lParam);
return 0L;
case WM_LBUTTONUP:
if (fDraw)
{
hdc = GetDC(hwnd);
MoveToEx(hdc, ptPrevious.x, ptPrevious.y, NULL);
LineTo(hdc, LOWORD(lParam), HIWORD(lParam));
ReleaseDC(hwnd, hdc);
}
fDraw = FALSE;
return 0L;
case WM_MOUSEMOVE:
if (fDraw)
{
hdc = GetDC(hwnd);
MoveToEx(hdc, ptPrevious.x, ptPrevious.y, NULL);
LineTo(hdc, ptPrevious.x = LOWORD(lParam),
ptPrevious.y = HIWORD(lParam));
ReleaseDC(hwnd, hdc);
}
return 0L;
Aplikacja, która umożliwia rysowanie, tak jak w tym przykładzie, zwykle rejestruje punkty lub wiersze, tak aby wiersze mogły być ponownie rysowane za każdym razem, gdy okno zostanie zaktualizowane. Aplikacje rysunkowe często używają kontekstu urządzenia pamięci i skojarzonej mapy bitowej do przechowywania linii rysowanych za pomocą myszy.