Menggambar dengan Mouse
Anda dapat mengizinkan pengguna untuk menggambar garis dengan mouse dengan membuat prosedur jendela Anda menggambar saat memproses pesan WM_MOUSEMOVE . Sistem mengirim pesan WM_MOUSEMOVE ke prosedur jendela setiap kali pengguna memindahkan kursor di dalam jendela. Untuk menggambar garis, prosedur jendela dapat mengambil konteks perangkat tampilan dan menggambar garis di jendela antara posisi kursor saat ini dan sebelumnya.
Dalam contoh berikut, prosedur jendela bersiap untuk menggambar saat pengguna menekan dan menahan tombol mouse kiri (mengirim pesan WM_LBUTTONDOWN ). Saat pengguna memindahkan kursor di dalam jendela, prosedur jendela menerima serangkaian pesan WM_MOUSEMOVE . Untuk setiap pesan, prosedur jendela menggambar garis yang menghubungkan posisi sebelumnya dan posisi saat ini. Untuk menggambar garis, prosedur menggunakan GetDC untuk mengambil konteks perangkat tampilan; kemudian, segera setelah gambar selesai dan sebelum kembali dari pesan, prosedur menggunakan fungsi ReleaseDC untuk merilis konteks perangkat tampilan. Segera setelah pengguna melepaskan tombol mouse, prosedur jendela menghapus bendera, dan gambar berhenti (yang mengirim pesan 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;
Aplikasi yang memungkinkan menggambar, seperti dalam contoh ini, biasanya merekam titik atau garis sehingga garis dapat digambar ulang setiap kali jendela diperbarui. Aplikasi gambar sering menggunakan konteks perangkat memori dan bitmap terkait untuk menyimpan garis yang digambar dengan menggunakan mouse.