TAILIEUCHUNG - Hai cách ẩn hộp thoại trong MFC

Nếu đã từng phát triển ứng dụng dialog-based trên nền MFC, rất có thể bạn gặp vấn đề với việc ẩn hộp thoại chính mỗi khi chạy. Điều này rất quan trọng đối với những chương trình chạy nền, người dùng sẽ tương tác với chương trình thông qua hộp thoại phụ hoặc biểu tượng trên thanh Taskbar. Tôi cũng đã phải đau đầu với vấn đề này một thời gian khi những dòng lệnh như ShowWindow(SW_SHOW); đặt trong hàm OnInitDialog() tỏ ra vô hiệu. Sau khi tìm hiểu, tôi phát hiện ra đối với ứng dụng dialog-based, hộp thoại. | Hai cách ân hộp thoại trong MFC Nếu đã từng phát triển ứng dụng dialog-based trên nền MFC rất có thể bạn gặp vấn đề với việc ẩn hộp thoại chính mỗi khi chạy. Điều này rất quan trọng đối với những chương trình chạy nền người dùng sẽ tương tác với chương trình thông qua hộp thoại phụ hoặc biểu tượng trên thanh Taskbar. Tôi cũng đã phải đau đầu với vấn đề này một thời gian khi những dòng lệnh như ShowWindow SW_SHOW đặt trong hàm OnInitDialog tỏ ra vô hiệu. Sau khi tìm hiểu tôi phát hiện ra đối với ứng dụng dialog-based hộp thoại chính được gọi thông qua câu lệnh .DoModal . Câu lệnh này lại gọi hàm API là DialogBox do đó mặc nhiên hộp thoại chính sẽ được hiển thị. Cách xử lý dễ nhất là chuyển hộp thoại chính về dạng Modeless Box. Cách l àm rất đơn giản bạn sửa đoạn mã trong hàm InitInstance thành CModelessDlg pMainDlg pMainDlg new CModelessDlg m_pMainWnd pMainDlg pMainDlg- Create IDD_MODELESS_DIALOG pMainDlg- ShowWindow SW_HIDE Chú ý bạn phải thêm hàm PostNcDestroy vào trong class CModelessDlg và sửa CDialog PostNcDestroy thành delete this Như vậy chương trình của bạn đã có thể ẩn hộp thoại chính mỗi khi chạy. Tuy nhiên cũng có thể bạn vẫn muốn giữ nguyên đặc tính của hộp thoại chính vậy có một cách khác có thể giúp bạn thực hiện điều này. Bạn hãy thêm một biến toàn cục có kiểu là BOOL tên là bShow chẳng hạn. Trong hàm OnPaint bạn hãy thêm đoạn mã sau if bShow ShowWindow SW_HIDE else ShowWindow SW_SHOW Và thiết lập sao cho mỗi khi chạy biến bShow sẽ là FALSE nếu bạn muốn ẩn hộp thoại. Còn khi muốn hiện hộp thoại chính bạn chỉ việc thêm đoạn mã bShow TRUE Invalidate TRUE Trên đây là hai tìm tòi nhỏ của tôi hy vọng có ích cho các bạn. Mai Văn Quân TGVT A tháng 2 2006 trang .

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.