ฉันได้รับข้อผิดพลาดเป็นครั้งคราวที่ Word ให้เมื่อพยายามปิดเอกสารด้วยกล่องโต้ตอบอื่นที่เปิดอยู่ แต่ฉันไม่สามารถเข้าใจสาเหตุที่เกิดขึ้นได้
ฉันได้รับข้อผิดพลาดเป็นครั้งคราวที่ Word ให้เมื่อพยายามปิดเอกสารด้วยกล่องโต้ตอบอื่นที่เปิดอยู่ แต่ฉันไม่สามารถเข้าใจสาเหตุที่เกิดขึ้นได้
คำตอบ:
เพราะกล่องโต้ตอบส่วนใหญ่ถือว่าเป็น " โมดอล " ซึ่งหมายความว่าการควบคุมจะไม่ส่งกลับไปที่โปรแกรมหลักหรือการเรียกคอนเทนเนอร์จนกว่าจะปิดกล่องโต้ตอบเอง นี่คือการออกแบบและโปรแกรมเมอร์มีตัวเลือกที่จะทำให้หน้าต่างเป็นกิริยาช่วยหรือไม่เป็นกิริยาช่วย โดยปกติแล้วหน้าต่างจะถูกกำหนดให้เป็นโมดัลหากโปรแกรมหลักไม่สามารถหรือไม่ควรดำเนินการต่อไปจนกว่าไดอะล็อกที่เปิดจะได้รับการจัดการโดยผ่านการเลือก (Ok) หรือยกเลิก (ยกเลิก)
กล่องโต้ตอบอาจพูดบางสิ่งเช่น:
คุณทำการเปลี่ยนแปลงเอกสารของคุณคุณต้องการบันทึกหรือไม่ (ใช่ไม่ใช่)
ไม่มีคำตอบที่ถูกต้องชัดเจนที่นี่ คุณอาจเสียหายเอกสารของคุณโดยไม่ตั้งใจ (เช่นแมวเดินผ่านแป้นพิมพ์) ซึ่งในกรณีนี้คำตอบคือ "ไม่" หรือคุณอาจใช้เวลาหลายชั่วโมงในการพิมพ์การเปลี่ยนแปลงซึ่งในกรณีนี้คำตอบคือ "ใช่"
สิ่งที่ปลอดภัยที่สุดสำหรับ Word ที่ต้องทำคือปฏิเสธที่จะปิดจนกว่าคุณจะตอบคำถาม
เนื่องจากโปรแกรมได้รับการออกแบบในลักษณะนี้เพื่อหลีกเลี่ยงการดำเนินการที่ผู้ใช้อาจไม่ต้องการ
โดยปกติแล้วกล่องโต้ตอบจะปรากฏขึ้นเมื่อโปรแกรมต้องการให้ผู้ใช้เป็นแนวทางในการดำเนินการบางอย่าง การปิดเอกสารที่ไม่ได้บันทึกเป็นตัวอย่างที่ดีเยี่ยม: กล่องโต้ตอบจะบันทึกการเปลี่ยนแปลงยกเลิกการเปลี่ยนแปลงหรือยกเลิกการปิดและกลับสู่การแก้ไข โปรแกรมตั้งใจปฏิเสธที่จะปิดโดยไม่ตอบคำถามนี้เพราะการปิดจะบังคับให้มีการดำเนินการบางอย่าง โปรแกรมไม่สามารถตัดสินใจด้วยตนเองเช่น ยกเลิกการแก้ไขล่าสุดหรือในทางตรงข้ามเขียนทับเวอร์ชันที่ถูกต้องด้วยการพิมพ์ cat-on-the-keyboard
แม้ว่าเราจะพิจารณากล่องโต้ตอบที่ไม่เกี่ยวข้องกับการปิด แต่ก็มักจะหมายถึงกระบวนการบางอย่างกำลังดำเนินอยู่ แต่ยังไม่เสร็จสิ้นและผู้ใช้ต้องตัดสินใจว่าจะไปทางไหน ไม่สามารถ "ยกเลิกอย่างง่ายดาย" ได้เนื่องจากการยกเลิกเป็นการกระทำที่ผู้ใช้อาจไม่ได้หมายถึง
นอกจากนี้ยังลดความซับซ้อนของการออกแบบโปรแกรมเนื่องจากผู้สร้างไม่จำเป็นต้องสร้าง "ทางออกที่ปลอดภัย" ของทุกฟังก์ชั่น
วันนี้บทสนทนาส่วนใหญ่ไม่ได้เป็นกิริยาช่วยในแง่เทคนิค (โปรแกรมยังคงมีความรับผิดชอบ) แต่ก็ยังง่ายกว่าที่จะทำให้พวกเขาเป็นกิริยาช่วยในแง่ที่กว้างขึ้นของการไหลของตรรกะของโปรแกรม
ฉันอาจเข้าใจผิด แต่ฉันคิดว่าสิ่งนี้จะกลับไปสู่พฤติกรรมการควบคุมการโต้ตอบทั่วไปแบบเก่า
หลายคนหากถูกฆ่าอย่างกระทันหันโดยไม่กลับมามีผลข้างเคียงที่ไม่พึงประสงค์บางครั้งแม้จะอยู่นอกโปรแกรมที่ตายแล้วและไม่มีทางที่จะหนีจากพวกเขาได้อย่างสุภาพในทุกกรณีหากพวกเขาทำบางสิ่งบางอย่างในระดับระบบ
สำหรับสาเหตุที่ยังเป็นเช่นนั้นผู้คนเริ่มชินกับมันมากขึ้นนักพัฒนาโปรแกรมที่ตั้งสมมติฐานมานานหลายทศวรรษและที่สำคัญกว่านั้นไม่ใช่โปรแกรมเมอร์ที่ใช้กล่องโต้ตอบเหล่านั้นในสคริปต์ระบบอัตโนมัติในสำนักงานของพวกเขาและ Microsoft ก็ไม่เป็นเช่นนั้น .
ด้านหลังม่านโปรแกรม (ในกรณีของเราคือ MS Word) สร้าง "ตัวจัดการเหตุการณ์คลิกปุ่ม X" เมื่อสร้างหน้าต่าง เมื่อมีหน้าต่างข้อความ Word จะบันทึกสิ่งนั้น จากนั้นในตัวจัดการปุ่ม X เมื่อคลิกปุ่ม X มันจะตรวจสอบหน้าต่างข้อความที่เปิดอยู่ หากมีบางตัวจัดการยกเลิกการดำเนินการปิด หากไม่มีจะเป็นการยกเลิกโปรแกรมและระบบปฏิบัติการจะล้างหน่วยความจำที่โปรแกรมใช้ นี่คือวิธีการทำงาน