การลงรายการบัญชี และส่งข้อความ

โปรแกรมประยุกต์ใด ๆ สามารถลงรายการบัญชี และส่งข้อความ เช่นเดียวกับระบบ โปรแกรมประยุกต์ลงข้อความ โดยการคัดลอกไปยังคิวข้อความ และส่งข้อความ ด้วยการส่งผ่านข้อมูลข้อความที่เป็นอาร์กิวเมนต์ไปยังกระบวนงานของหน้าต่าง เมื่อต้องการติดประกาศข้อความ โปรแกรมประยุกต์ใช้ฟังก์ชันPostMessage โปรแกรมประยุกต์ที่สามารถส่งข้อความ โดยการเรียกเรียก sendmessage ระหว่างงาน BroadcastSystemMessage, SendMessageCallback, SendMessageTimeout, SendNotifyMessageหรือฟังก์ชันSendDlgItemMessage.

แอปพลิเคชันโดยปกติข้อความข้อความแจ้งให้ทราบเฉพาะหน้าต่างการทำงาน PostMessageสร้างโครงสร้างการMSGสำหรับข้อความ และการคัดลอกข้อความไปยังคิวข้อความ วนรอบข้อความของโปรแกรมประยุกต์ในที่สุดดึงข้อความ และ dispatches ลงในกระบวนงานของหน้าต่างที่เหมาะสม.

แอปพลิเคชันโดยทั่วไปส่งข้อความแจ้งให้ทราบกระบวนงานหน้าต่างการทำงานทันที ฟังก์ชันเรียก sendmessage ระหว่างงานส่งข้อความไปยังหน้าต่างขั้นตอนที่สอดคล้องกับหน้าต่างการกำหนด ฟังก์ชันรอจนกว่ากระบวนการหน้าต่างเสร็จสิ้นการประมวลผลแล้ว ส่งกลับผลลัพธ์ของข้อความ หน้าต่างแม่และเด็กมักจะสื่อสาร โดยการส่งข้อความถึงกัน ตัวอย่างเช่น หน้าต่างหลักที่มีตัวควบคุมการแก้ไขเป็นหน้าต่างของเด็กสามารถตั้งค่าข้อความของตัวควบคุม โดยการส่งข้อความนั้น ตัวควบคุมสามารถแจ้งหน้าต่างหลักของการเปลี่ยนแปลงข้อความที่มีดำเนินการ โดยผู้ใช้ โดยการส่งข้อความกลับไปปกครอง.

ฟังก์ชันSendMessageCallbackจะยังส่งข้อความไปยังหน้าต่างขั้นตอนที่สอดคล้องกับหน้าต่างการกำหนด อย่างไรก็ตาม นี้ฟังก์ชันส่งกลับทันที หลังจากกระบวนการหน้าต่างการประมวลผลข้อความ ระบบเรียกใช้ฟังก์ชันการเรียกกลับที่ระบุ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันการเรียกกลับ ดูฟังก์ชันSendAsyncProc.

บางครั้งคุณอาจต้องการส่ง หรือประกาศข้อความไปยังหน้าต่างระดับบนสุดที่ทั้งหมดในระบบ ตัวอย่างเช่น ถ้าแอพลิเคชันเป็นการเปลี่ยนแปลงเวลาของระบบ มันต้องแจ้งระดับบนหน้าต่างทั้งหมดเกี่ยวกับการเปลี่ยนแปลง โดยการส่งแบบ WM_TIMECHANGEข้อความ แอปพลิเคชันสามารถส่ง หรือประกาศข้อความไปยังหน้าต่างระดับบนสุดทั้งหมด ด้วยการเรียกฟังก์ชันเรียก sendmessage ระหว่างงานหรือPostMessageและระบุ HWND_TOPMOST ในพารามิเตอร์hwnd คุณสามารถออกอากาศข้อความไปยังโปรแกรมประยุกต์ทั้งหมดได้ ด้วยการเรียกฟังก์ชันBroadcastSystemMessageและระบุ BSM_APPLICATIONS ในพารามิเตอร์lpdwRecipients.

แอปพลิเคชันสามารถประกาศข้อความโดยไม่ได้ระบุในหน้าต่าง ถ้าแอพลิเคชันหน้า ๆ จับหน้าต่าง NULL เมื่อเรียกPostMessageข้อความถูกลงรายการบัญชีลงในคิวที่เกี่ยวข้องกับเธรดปัจจุบัน เนื่องจากมีระบุหมายเลขอ้างอิงไม่มีหน้าต่าง แอพลิเคชันต้องประมวลผลข้อความในการวนรอบข้อความ นี่เป็นวิธีหนึ่งในการสร้างข้อความที่นำไปใช้กับโปรแกรมประยุกต์ทั้งหมด แทนที่จะไปยังหน้าต่างที่เฉพาะเจาะจง.

โดยใช้ฟังก์ชันInSendMessageหรือInSendMessageExหน้าต่างกระบวนงานสามารถตรวจสอบว่า กำลังประมวลผลข้อความที่ส่ง โดยเธรดอื่น ความสามารถนี้จะมีประโยชน์เมื่อมีการประมวลผลข้อความขึ้นอยู่กับแหล่งมาของข้อความ.

มีข้อผิดพลาดโปรแกรมทั่วไปคือสมมติว่า ฟังก์ชันPostMessageบทความเสมอ นี้ไม่ได้จริงเมื่อคิวข้อความเต็ม แอปพลิเคชันควรตรวจสอบค่าที่ส่งกลับของฟังก์ชันPostMessageการตรวจสอบว่า ข้อความได้ถูกลงรายการบัญชี และ ถ้ามันไม่ได้ repost นั้น.

Index