Đối với ứng dụng dựa trên hộp thoại MFC, bạn có thể đặt mã quyết toán theo phương thức InitInstance
của lớp ứng dụng, ngay sau khi cuộc gọi thoại DoModal
được thực hiện. Đối với các loại ứng dụng MFC khác (MDI, SDI), mã quyết toán thường được đặt ở phương thức ExitInstance
.
Sự khác biệt giữa ứng dụng dựa trên hộp thoại và ứng dụng SDI/MDI, là InitInstance
trong ứng dụng dựa trên hộp thoại trả về FALSE và thoát ứng dụng - tất cả hành động được thực hiện trong cuộc gọi thoại chính DoModal
.
Bạn có thể thích sử dụng ExitInstance
cho tất cả các loại ứng dụng, nó cũng sẽ hoạt động.
Chỉnh sửa. Nếu bạn muốn làm cho mã dọn dẹp bên trong của lớp hộp thoại, WM_DESTROY
(đã được đề cập bởi Roger Rowland) là nơi tốt hơn so với WM_CLOSE
. Đôi khi, chúng tôi có thể xử lý thông báo WM_CLOSE
và ngăn hộp thoại đóng, ví dụ: bằng cách yêu cầu "Thoát khỏi chương trình? Có - Không". Trong trường hợp bạn muốn sử dụng một số cửa sổ con, chúng tồn tại trong các trình xử lý tin nhắn WM_CLOSE
và WM_DESTROY
và không tồn tại trong trình phá hoại hộp thoại. Ngoài ra, hàng đợi tin nhắn không tồn tại khi hộp thoại hủy chính được gọi, do đó bạn không nên sử dụng tính năng nhắn tin Windows trong trường hợp này.
Nguồn
2013-04-09 14:04:33
Tôi thường đặt nó vào trình xử lý 'WM_DESTROY', nhưng tôi thích điều đó hơn với trình phá hủy vì tôi biết cơ sở hạ tầng MFC sẽ vẫn còn sống và khi tôi đến dtor, tôi không chắc chắn :-) Thông thường tôi dự trữ các dtor cho chỉ cần xóa phân bổ heap. –