Lưu đồxử lý biến cố MouseMove cho WorldObject

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 77 - 78)

Trình xử lý biến cố MouseMove của WorldObject được kích hoạt trong trường hợp vị trí mouse đã được xem là ổn định. Do vậy, ta không cần quan tâm đến việc thay đổi

tọa độ quá nhanh của mouse giống như trình xử lý biến cố của World3D.

Ở trình xử lý này, trong chế độ dragging, khi tính tốn vector độ dời của đối tượng bị

kéo dựa vào độ dời của mouse, ta cần tính tốn sao cho khi thay đổi vị trí theo độ dời này đối tượng vẫn “nằm dưới” mouse. Ngồi ra, khi tính tốn độ dời này cần đảm bảo tính bất biến của các thành phần tọa độ.

c. Mouse up.

Biến cố mouse up được xử lý khá đơn giản. Đối với World3D, trình xử lý biến cố này xóa cờ wsMouseCaptured trong chế độ wmMouseFly. Đối với WorldObject, trình xử lý biến cố gọi thủ tục ReleaseMouse() và ReleaseKeyboard(). Nếu WorldObject đang

trong chế độ dragging, thì thủ tục EndDrag() sẽ được gọi để xác nhận dộ dời thực sự.

IV.3.2. Trình xử lý thơng điệp WM_PAINT.

Trình xử lý thông điệp WM_PAINT là thành phần quan trọng nhất trong World3D. Nó là hạt nhân cơ bản giúp các đối tượng 3D được thể hiện lên màn hình, tạo nền tảng cho khả năng chọn đối tượng 3D cũng như các tương tác khác với người dùng thông qua mouse. Trình xử lý này phát sinh ra các biến cố cho phép can thiệp vào quá trình dựng

ảnh (rendering) các đối tượng 3D.

Trình xử lý thơng điệp WM_PAINT được chia làm hai phần: phần dựng ảnh các đối

tượng 3D thông quan render context của OpenGL và phần vẽ các đối tượng đồ họa GDI thông qua device context của điều khiểnWorld3D.

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 77 - 78)