在 Windows 上显示带有自定义按钮标题的警报?
使用 CoreFoundation,我可以显示一个警报对话框,其中包含以下内容:
CFUserNotificationDisplayAlert(0.0,
kCFUserNotificationPlainAlertLevel,
NULL, NULL, NULL,
CFSTR("Alert title"),
CFSTR("Yes?),
CFSTR("Affirmative"),
CFSTR("Nah"),
NULL, NULL);
如何使用 Windows C API 复制此内容?我得到的最接近的是:
MessageBox(NULL, "Yes?", "Alert title", MB_OKCANCEL);
但是将“确定”和“取消”硬编码为按钮标题,这不是我想要的。有什么办法可以解决这个问题,或者可以使用替代函数吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 SetWindowText 更改按钮上的图例。由于 MessageBox() 会阻塞执行流程,因此您需要某种机制来解决此问题 - 下面的代码使用计时器。
我认为 FindWindow 代码可能依赖于 MessageBox() 没有父级,但我不确定。
You can use SetWindowText to change the legend on the buttons. Because the MessageBox() blocks the flow of execution you need some mechanism to get round this - the code below uses a timer.
I think the FindWindow code may be dependent on there being no parent for MessageBox() but I'm not sure.
Windows MessageBox 函数仅支持有限数量的样式。如果您想要比所提供的更复杂的内容,则需要创建自己的对话框。有关可能的 MessageBox 的列表,请参阅 MessageBox类型。
如果您决定创建自己的对话框,我建议您查看 DialogBox Windows 函数。
The Windows MessageBox function only supports a limited number of styles. If you want anything more complicated that what's provided, you'll need to create your own dialog box. See MessageBox for a list of possible MessageBox types.
If you decide to make your own dialog box, I'd suggest looking at the DialogBox Windows function.
如果您愿意使用 Windows Vista 及更高版本,您可能需要考虑“TaskDialog”函数。我相信它会让你做你想做的事。
If you're willing to tie yourself to Windows Vista and above, you might want to consider the "TaskDialog" function. I believe it will allow you do do what you want.