จะแสดงกล่องข้อความกิริยาใน C ++ บน Mac ได้อย่างไร

CFUserNotificationDisplayAlert และ CFUserNotificationDisplayNotice สร้าง หน้าต่างที่ไม่ใช่ modal และนี่เป็นสิ่งที่ไม่ดีเพราะอาจทำให้ UI แอปพลิเคชันของคุณอยู่ในสถานะที่ไม่ต้องการอย่างมาก หากคุณเลือกหน้าต่างแอปพลิเคชันดั้งเดิม (กล่องข้อความถูกซ่อนอยู่ แต่แอปพลิเคชันไม่ตอบสนอง)

SystemAlert แบบเก่าเป็นแบบโมดอล แต่อันนี้ไม่รองรับสตริง Unicode อย่างสมบูรณ์

ฉันจะแสดงกล่องข้อความเป็นหน้าต่างโมดอลใน Mac ได้อย่างไร ฉันกำลังมองหาสิ่งที่คล้ายกับ MessageBox จาก Windows อยู่ใช่ไหม


person sorin    schedule 13.01.2010    source แหล่งที่มา


คำตอบ (3)


ฉันใช้งานด้วย CFUserNotificationDisplayAlert และจะไม่ส่งคืนจนกว่าผู้ใช้จะปิด MessageBox

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

person Jorge Arimany    schedule 05.05.2010

ดูเหมือนว่า CreateStandardAlert จะเป็นคำตอบที่ถูกต้อง เพราะอันนี้เป็น โมดอล


DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
person sorin    schedule 13.01.2010
comment
ฟังก์ชันนี้เป็นแบบ 32 บิตเท่านั้น และไม่สามารถใช้ได้กับแอปพลิเคชัน 64 บิต ดูที่นี่: developer.apple.com/legacy/mac/library/documentation/Carbon/ - person Trevor; 07.03.2013

ดูฟังก์ชัน NSBeginAlertSheet หรือที่ NSApp:

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow
      modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo

อาจเป็นสิ่งที่คุณต้องการ ที่นี่ ก็เป็นบทความที่ดีเช่นกัน เกี่ยวกับการทำงานกับแผ่นงาน

person Vladimir    schedule 13.01.2010