Xây dựng đối tượng OpenGLInit

Một phần của tài liệu đồ án kỹ thuật cơ khí Mô phỏng quá trình gia công CNC trên máy DENFORD (Trang 66)

VI. Displaylist 1 Định nghĩa

1. Xây dựng đối tượng OpenGLInit

Đối tượng OpenGLInit được kế thừa từ lớp CWnd có đầy đủ các tính năng mạnh của một đối tượng cửa sổ. Thực hiện khởi tạo môi trường OpenGL bên trong các hàm của đối tượng ta cũng phải khởi tạo ngữ cảnh thiết bị(DC) và ngữ cảnh hiển thị (RC) nh đã trình bày ở trên. Ta biến đổi các hàm :

OnCreate(), OnDestroy(), PreCreateWindow(), OnSize(), OnEraseBackGround()

tương ứng với các thông điệp : WM_CREATE, WM_DESTROY,

WM_SISE,WM_ERASEBKGND, PreCreateWindow.

Ta còn phải lập trình thay đổi các sự kiện sử lý sự kiện chuột, bàn phím tương ứng như sau:

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy();

afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg BOOL OnEraseBkgnd(CDC* pDC);

afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnMButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonUp(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point);

Các sự kiện này khi được xử lý sẽ đảm bảo cho đối tượng OpenGlInit tự bản thân đã mang đầy đủ các tính năng xử lý sự kiện tạo ra sù trong suốt đối với người sử dụng OpenGlInit.

Đối tượng thực hiện nạp chồng hàm :

BOOL Create(CWnd* pParentWnd = NULL /*this*/,CRect rect = CRect(0,0,300,300)); BOOL OpenGLInit::Create(CWnd* pParentWnd/*pWnd*/,CRect

rect/*CRect(0,0,300,300)*/) {

CString strMyClass = AfxRegisterWndClass( CS_VREDRAW | CS_HREDRAW, ::LoadCursor(NULL, IDC_ARROW), (HBRUSH) ::GetStockObject(WHITE_BRUSH), ::LoadIcon(NULL, IDI_APPLICATION)); LPCTSTR lpszClassName = strMyClass; LPCTSTR lpszWindowName = "Hi";

DWORD dwStyle = WS_CHILDWINDOW|WS_VISIBLE|WS_BORDER; UINT nID = 1234;

CCreateContext* pContext = NULL;

return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);

}

Nên trong Dialog hay đối tượng gọi tới hàm khởi tạo OpenGlInit người sử dụng chỉ cần gọi tới hàm Create() với lượng tham số truyền rất tối thiểu. Ví dụ:

OpenGlInit p_Wnd;

p_Wnd.Create(this,CRect(10,5,650,300));

Đoạn mã trên thực hiện khởi tạo một cửa sổ đồ họa tại vị trí do người sử dụng truyền vào ở đây là CRect(10,5,650,300) chỉ với dòng lệnh ngắn này chúng ta đã xong việc khởi tạo toàn bộ môi trường đồ họa OpenGL phục vụ cho việc hiển thị các đối tượng OpenGL vẽ trên khung cửa sổ ta vừa tạo ra. Ngoài việc khởi tạo xong môi trường ta cũng có ngay các thao tác xử lý sự kiện chuột, bàn phím mà người sử dụng không phải thao tác gì thêm ngaòi dòng lệnh trên vì tất cả các công việc khởi tạo xử lý đều được đóng gói trong đối tượng OpenGlInit rồi.

Một phần của tài liệu đồ án kỹ thuật cơ khí Mô phỏng quá trình gia công CNC trên máy DENFORD (Trang 66)

Tải bản đầy đủ (DOC)

(78 trang)
w