C++ 如何在C++;Mac电脑上的碳含量?

C++ 如何在C++;Mac电脑上的碳含量?,c++,macos-carbon,C++,Macos Carbon,我没有找到文档,因此我希望代码等效于: #include <carbon.h> int main() { carbon::Window win1 = carbon::openWindow(10,10,640,480); win1.setVisible(true); return 0; } #包括 int main(){ carbon::Window win1=carbon::openWindow(10,10640480); win1.setVisible(

我没有找到文档,因此我希望代码等效于:

#include <carbon.h>

int main() {
    carbon::Window win1 = carbon::openWindow(10,10,640,480);
    win1.setVisible(true);
    return 0;
}
#包括
int main(){
carbon::Window win1=carbon::openWindow(10,10640480);
win1.setVisible(true);
返回0;
}
问题是,通过对google和Stack Overflow的研究,我没有找到实现这一点的必要元素

问题是,在谷歌和stack overflow的研究中,我没有找到实现这一点的必要元素

Carbon是一个古老的框架,旨在帮助开发人员从经典MacOS(即9.x和更低版本)过渡到MacOS x。正如Algirdas Preidžius在评论中指出的那样,
HIToolbox.framework
,它是Carbon的一部分,您可以用来创建windows等。现在尝试使用这些框架没有什么意义

撇开这一点不谈,您的示例说明了对具有图形用户界面的程序的要求的基本误解。这是您的代码:

int main() {
carbon::Window win1 = carbon::openWindow(10,10,640,480);
win1.setVisible(true);
return 0;
}
即使Carbon API恰好与您这里的API匹配(甚至不接近),您的程序也会显得无所作为。它会创建一个窗口并可能显示它,但随后它会立即退出,这样窗口可能根本不会出现在屏幕上,或者可能会在屏幕上闪烁并消失得如此之快,以至于你可能看不到它。带有图形界面的程序几乎所有的时间都在等待用户做一些事情,比如移动鼠标、按下鼠标按钮、按键盘上的键或插入软盘(记住,我们这里说的是老式的)。为了实现这一点,任何GUI应用程序的核心都是事件循环。在被称为“MacOS”之前的早期,Macintosh操作系统一次只能运行一个程序,而该程序必须轮询操作系统以获取每个新事件,因此应用程序的核心看起来是这样的:

EventRecord theEvent;
EventMask eventMask = everyEvent;
while (!quitting) {
    GetNextEvent(eventMask, &eventRecord);
    switch (eventRecord.what) {
        case keyDown: {
            // do something with the key in the event
        }
        case keyUp: {
            // do something with the key in the event
        }
        case autoKey: {
            // do something with the key in the event
        }
        case mouseDown: {
            // do something with the mouse position in the event
        }
        case mouseUp: {
            // do something with the mouse position in the event
        }
        // ...and so on...
    }
}
这就是事件循环。在以后的版本中,操作系统更改为允许多个应用程序同时运行,因此事件循环基于一个名为
WaitNextEvent()
的函数,而不是
GetNextEvent()
,主要区别在于,如果没有可用的事件,WNE将被阻止。当Carbon出现时,样式又发生了变化——这次事件循环由操作系统处理,程序只需为它们感兴趣的所有事件注册回调函数(这与Microsoft Windows应用程序的工作原理差不多),这些处理程序将在需要时被调用


所有这些都只是为了说明GUI应用程序的功能远不止您所指出的——您不仅要创建一个窗口,还必须处理好它。你的问题并不清楚你的意图,但无论你想做什么,碳几乎肯定不是答案。如果您想创建一个基本的应用程序,在Xcode中创建一个新的macOS项目将为您提供所需的一切。如果你想在你的应用程序中使用C++,你就知道你可以很容易地将C++和ObjuleC混合,并且银行代码与SWIFT代码也应该是非常简单的。编写的代码有什么问题?我的代码不会编译,因为这不是这些函数,我不知道要编译的名称空间和函数名,因为我没有找到这样做的文档。@Crearolisif您没有找到任何文档的可能原因是整个Carbon API在2012年被弃用。