gpt4 book ai didi

c++ - C++ 中的简单警告框,而不是 Objective-C

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:11 25 4
gpt4 key购买 nike

我需要一个非常简单的警告框,例如 NSRunAlertPanel(),但这是针对 C++ 嵌入式 64 位应用程序的,我既不了解 Cocoa 也不了解 Objective-C。

关于如何做到这一点有什么想法吗?

最佳答案

选项A

一种解决方案是查看 CFUserNotification API。

选项 B

另一种选择是包装 NSRunAlertPanel,使用 CoreFoundation 类型作为参数:

// MONNSRunAlertPanel.hpp
extern "C++" {
int MONNSRunAlertPanel(CFStringRef title,
CFStringRef msg,
CFStringRef defaultButton,
CFStringRef alternateButton,
CFStringRef otherButton);
}


// MONNSRunAlertPanel.mm

#include <Foundation/Foundation.h>
#include "MONNSRunAlertPanel.hpp"

int MONNSRunAlertPanel(CFStringRef title,
CFStringRef msg,
CFStringRef defaultButton,
CFStringRef alternateButton,
CFStringRef otherButton) {
int result = 0;
@autoreleasepool {
result = NSRunAlertPanel(
(NSString *)title,
(NSString *)msg,
(NSString *)defaultButton,
(NSString *)alternateButton,
(NSString *)otherButton
);
}
return result;
}

如果您想要一个 C 符号,请将文件命名为 MONNSRunAlertPanel.m (objc),并相应地更改 header ,

如果您希望它作为 C++ 符号,只需将文件命名为 MONNSRunAlertPanel.mm (objc++)。

假设您使用的是默认编译器设置,我们的源代码将根据其文件扩展名进行编译。

最后,添加Foundation和AppKit链接到必要的系统库。

然后您可以调用 MONNSRunAlertPanel 而无需将 Foundation.framework 拖到您的 C++ 源代码中(因为 CFString 和 NSString 类型已桥接)。

关于c++ - C++ 中的简单警告框,而不是 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8094145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com