Tại sao chính xác Microsoft Word không thể đóng nếu có hộp thoại mở?


27

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.


6
Vấn đề chung là những thứ trong hộp thoại có thể trở nên hợp lệ, không hợp lệ hoặc thậm chí không thể áp dụng tùy thuộc vào những gì bạn làm trong cửa sổ chính và thường không có cách nào rõ ràng để giải quyết vấn đề này với những thay đổi mà người dùng có thể đã thực hiện trong hộp thoại tạm thời (Tôi đoán đây chỉ là một biểu hiện khác của nguyên tắc chung hơn là "các vòng phản hồi có thể gây ra sự cố trong hệ thống".)
Mehrdad

Họ có thể nếu bạn khởi chạy Trình quản lý tác vụ và yêu cầu nó hủy quá trình. =) Nhưng điều này có thể có tác dụng phụ không mong muốn. (Có có thể là một số trường hợp hiếm hoi khi một tệp có thể bị hỏng, nhưng tôi khá chắc chắn rằng chúng cực kỳ hiếm. Nó phải được thiết kế cho các sự cố không lường trước được và mất điện.)
jpmc26

Câu trả lời:


60

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ỏ).


4
Nhưng nếu hộp thoại là phương thức, OP đã hướng dẫn chương trình đóng như thế nào? Có thể có điều gì khác đang xảy ra ở đây?
Lightness Races in Orbit

7
@LightnessRacesinOrbit Có nhiều cách để đóng một chương trình, không phải tất cả đều yêu cầu nhấp vào cửa sổ chính. Chẳng hạn, bạn có thể nhấp chuột phải vào mục nhập trên thanh tác vụ và chọn "Đóng" hoặc kéo Trình quản lý tác vụ lên bằng Ctrl-Shift-Esc và cố gắng đóng từ đó. Tắt Windows cũng sẽ cố gắng đóng các ứng dụng một cách duyên dáng ban đầu, mặc dù sau đó có thể "giết" chúng sau khi hết thời gian. Chúng gửi tín hiệu đến chương trình để đóng mà không thực sự tập trung, do đó Ảnh chụp màn hình của Bob nói "Nhấp vào OK, chuyển sang Word" theo thứ tự đó.
IMSoP

@IMSoP: Tôi biết rằng có nhiều cách "kỹ thuật" hơn để yêu cầu đóng ứng dụng, nhưng tôi đã vẽ một cách tinh thần một dòng mà tôi nghĩ rằng "sử dụng chung" kết thúc, bởi vì tôi đã mong đợi OP chỉ định chính xác những gì họ đã làm nếu nó vượt quá "sử dụng chung".
Lightness Races in Orbit

11
@LightnessRacesinOrbit Tôi cấp cho bạn Trình quản lý tác vụ là một cách "chuyên gia" hơn, nhưng tôi sẽ không ngạc nhiên nếu mọi người nghĩ rằng việc đóng thứ gì đó từ thanh tác vụ là hoàn toàn bình thường. Trên thực tế, bây giờ tôi nhận ra rằng, bạn thậm chí không cần phải nhấp chuột phải, có nút [x] màu đỏ ngay tại đó nếu bạn di chuột qua một nhóm hoặc xem hình thu nhỏ. Những điều khác nhau dường như rõ ràng với những người khác nhau.
IMSoP

@IMSoP: Đó là sự thật.
Lightness Races in Orbit

20

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.


8
Tôi khá chắc chắn rằng câu hỏi là về điều này lỗi cụ thể.
Bob

12
OK, nhưng câu hỏi không đề cập đến bất kỳ hộp thoại cụ thể. Tôi là một lập trình viên, tôi hiểu hộp thoại phương thức là gì, tuy nhiên tôi đã cố gắng trả lời câu hỏi về tại sao nó xảy ra.
Nick Gammon

IMHO phải ghi nhớ rằng những người không lập trình viên sử dụng chương trình.
LawrenceC

1

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.


0

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 .


0

Đằ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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.