Bagaimana cara menampilkan kotak pesan modal di C++ di Mac?

CFUserNotificationDisplayAlert dan CFUserNotificationDisplayNotice membuat jendela non-modal dan ini buruk karena dapat membawa UI aplikasi Anda ke keadaan yang tidak diinginkan jika Anda memilih jendela aplikasi asli (kotak pesan disembunyikan tetapi aplikasi tidak merespons).

SystemAlert yang lama adalah modal tetapi yang ini tidak sepenuhnya mendukung string Unicode.

Bagaimana saya bisa menampilkan kotak pesan sebagai jendela modal di Mac? Saya mencari sesuatu yang mirip dengan MessageBox dari Windows?


person sorin    schedule 13.01.2010    source sumber


Jawaban (3)


Saya telah menerapkannya dengan CFUserNotificationDisplayAlert dan tidak akan kembali sampai pengguna menutup MessageBox.

Jika Anda ingin melihat kodenya, saya memilikinya di Fungsi MessageBox di Mac di sana Anda akan menemukan fungsi MessageBox yang diterapkan untuk mac, ini hanya diterapkan untuk MB_OKCANCEL, tetapi dengan sedikit kode lagi dapat mencakup seluruh flag MessageBox dan mengembalikan nilai, merupakan titik awal yang baik.

person Jorge Arimany    schedule 05.05.2010

Tampaknya CreateStandardAlert adalah solusi yang tepat karena ini adalah modal.


DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
person sorin    schedule 13.01.2010
comment
Fungsi ini hanya untuk 32-bit dan tidak tersedia untuk aplikasi 64-bit. Lihat di sini: developer.apple.com/legacy/mac/library/documentation/Carbon/ - person Trevor; 07.03.2013

Lihat fungsi NSBeginAlertSheet atau NSApp:

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

mungkin itu yang kamu inginkan. Di sini juga ada artikel yang bagus tentang bekerja dengan lembaran.

person Vladimir    schedule 13.01.2010