Thỉnh thoảng tôi gặp lỗi mà Word mắc phải khi cố gắng đóng tài liệu với một hộp thoại khác mở nhưng tôi chưa bao giờ có thể tìm ra tại sao nó xảy ra.
Thỉnh thoảng tôi gặp lỗi mà Word mắc phải khi cố gắng đóng tài liệu với một hộp thoại khác mở nhưng tôi chưa bao giờ có thể tìm ra tại sao nó xảy ra.
Câu trả lời:
Bởi vì hầu hết các hộp thoại được coi là " phương thức "có nghĩa là điều khiển không quay trở lại chương trình chính hoặc gọi container, cho đến khi hộp thoại tự đóng. Đây là do thiết kế và lập trình viên có tùy chọn để tạo một cửa sổ theo phương thức hoặc không theo phương thức. Thông thường, một cửa sổ là được định nghĩa là phương thức nếu chương trình chính không thể hoặc không nên tiếp tục cho đến khi hộp thoại đã mở được xử lý - thông qua lựa chọn (Ok) hoặc hủy bỏ (Hủy bỏ).
Hộp thoại có thể nói một cái gì đó như:
Bạn đã thực hiện các thay đổi cho tài liệu của mình, bạn có muốn lưu chúng không? (Có không)
Không có câu trả lời đúng rõ ràng ở đây. Bạn có thể đã vô tình làm hỏng tài liệu của mình (ví dụ: con mèo đi qua bàn phím) trong trường hợp câu trả lời là "Không" hoặc bạn có thể đã mất hàng giờ để thay đổi trong trường hợp câu trả lời là "Có".
Điều an toàn nhất để Word làm là từ chối đóng cho đến khi bạn trả lời câu hỏi.
Bởi vì chương trình được thiết kế theo cách này, để tránh hành động người dùng có thể không muốn.
Thông thường, một hộp thoại được hiển thị khi chương trình cần người dùng hướng dẫn một số hành động. Đóng một tài liệu chưa được lưu là ví dụ tuyệt vời: một hộp thoại cung cấp để lưu các thay đổi, loại bỏ các thay đổi hoặc hủy bỏ đóng và quay lại chỉnh sửa. Chương trình cố tình từ chối đóng mà không trả lời câu hỏi này vì việc đóng sẽ buộc MỘT SỐ hành động được thực hiện. Chương trình không thể tự quyết định. loại bỏ chỉnh sửa gần đây hoặc ngược lại, ghi đè lên phiên bản chính xác bằng cách gõ bàn phím mèo.
Ngay cả khi chúng tôi xem xét một hộp thoại không liên quan đến việc đóng, điều đó thường có nghĩa là một quá trình đang được tiến hành, nó vẫn chưa hoàn thành và người dùng phải quyết định nên đi theo hướng nào. Nó không thể "đơn giản bị hủy bỏ", bởi vì hủy bỏ cũng là một hành động mà người dùng có thể không có ý định.
Nó cũng đơn giản hóa việc thiết kế chương trình, vì người sáng tạo không phải tạo ra "lối thoát an toàn" cho mọi chức năng.
Ngày nay, hầu hết các hộp thoại không phải là phương thức theo nghĩa kỹ thuật (chương trình vẫn chịu trách nhiệm), nhưng vẫn dễ dàng hơn để biến chúng thành phương thức theo nghĩa rộng hơn về luồng logic của chương trình.
Tôi có thể bị nhầm, nhưng tôi nghi ngờ điều này quay trở lại hành vi điều khiển hộp thoại chung cũ.
Một số trong số đó nếu bị giết đột ngột mà không quay trở lại có tác dụng phụ khó chịu, đôi khi ngay cả ngoài chương trình đã chết và không có cách nào để thoát khỏi chúng một cách lịch sự trong mọi trường hợp nếu chúng đang làm gì đó ở cấp độ hệ thống yêu cầu đầu vào của người dùng.
Về lý do tại sao nó vẫn như vậy, mọi người đã quen với nó, các nhà phát triển đã lập trình với giả định đó trong nhiều thập kỷ và quan trọng hơn là những người không lập trình đã sử dụng các hộp thoại đó trong các kịch bản tự động hóa văn phòng của họ và Microsoft không là gì nếu không tuân thủ chặt chẽ các mục tiêu tương thích ngược .
Đằng sau tấm màn, chương trình (trong trường hợp của chúng tôi là MS Word) tạo ra "Trình xử lý sự kiện nhấn nút X" khi tạo cửa sổ. Khi có một cửa sổ hộp thoại, Word sẽ ghi lại. Sau đó, trong trình xử lý nút X, khi nhấp vào nút X, nó sẽ kiểm tra các cửa sổ hộp thoại đang mở. Nếu có một số, trình xử lý hủy bỏ hoạt động gần. Nếu không có, nó sẽ chấm dứt chương trình và HĐH sẽ dọn sạch bộ nhớ mà chương trình đã lấy. Đây là cách nó hoạt động.