2017-01-13 12 views
1

私はドキュメントを見つけられませんでしたので、私は、コードと同等を持っているしたいと思います:C + +でMac上のCarbonで新しいウィンドウを開くには?

#include <carbon.h> 

int main() { 
    carbon::Window win1 = carbon::openWindow(10,10,640,480); 
    win1.setVisible(true); 
    return 0; 
} 

問題は、Googleとスタックオーバーフローの研究で、私はそれを行うために必要な要素を見つけることができませんでした、です。

+0

「相当する」とはどういう意味ですか?書かれたコードの何が間違っていますか? –

+0

これはこれらの関数ではないため、私のコードはコンパイルされません。そのために見つけたドキュメントがないため、名前空間と関数名がわかりません。 –

+2

@CrearoLisifi 2012年にCarbon API全体が廃止されたという理由が書類を見つけられなかった理由が考えられます。 –

答えて

1

問題はグーグルでの研究やスタックオーバーフローと私は

カーボンは、クラシックのMacOSから開発者の移行を支援するためのもの、古いフレームワークであることを行うために必要な要素を見つけられませんでしたということである(つまり、バージョン9 AlgirdasPreidžiusがコメントで指摘しているように、HIToolbox.frameworkは、CarbonのうちWindowsなどの作成に使用する部分であり、deprecated in MacOS X 10.7であった。今、これらのフレームワークを使用しようとすると少しのポイントがあります。

あなたの例は、グラフィカルユーザーインターフェイスを備えたプログラムに必要なものの基本的な誤解を示しています。ここにあなたのコードは次のとおりです。

int main() { 
carbon::Window win1 = carbon::openWindow(10,10,640,480); 
win1.setVisible(true); 
return 0; 
} 

炭素APIは、あなたが(それも近くにありません)ここに持っているものと一致することが起こった場合でも、あなたのプログラムが何もしないように思われます。それはウィンドウを作成し、おそらくそれを表示するでしょうが、すぐに終了するので、ウィンドウがまったく画面に表示されない可能性があります。グラフィカルインターフェイスを備えたプログラムは、マウスの移動やマウスボタンの押下、キーボードのキーの押下、フロッピーディスクの挿入など、ユーザーが何かをやるのを待っています。 )。これを容易にするために、GUIアプリケーションの中心はイベントループです。 MacOSと呼ばれる前の初期の段階では、Macintoshオペレーティングシステムは一度に1つのプログラムしか実行できず、その新しいイベントを取得するためにOSをポーリングしなければならなかったので、アプリケーションの中心は次のようになりました:イベントループをした

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... 
    } 
} 

。それ以降のバージョンでは、複数のアプリケーションを同時に実行できるようにOSが変更されたため、イベントループはGetNextEvent()の代わりにWaitNextEvent()という関数に基づいていました。主な違いは、イベントが利用できない場合にWNEがブロックする点です。 Carbonが登場すると、スタイルが再び変わりました。今回は、イベントループがオペレーティングシステムによって処理され、プログラムは興味のあるすべてのイベントのコールバック関数を登録するだけでした(これはMicrosoft Windowsのアプリケーションも同様です)これらのハンドラは必要に応じて呼び出されます。

これは実際にあなたが指摘したものよりもGUIアプリケーションには多くのことがあることを説明するだけです。あなたはウィンドウを作成するだけでなく、それも処理する必要があります。あなたの意図はあなたの質問からは明らかではありませんが、あなたがしようとしていることは何でも、Carbonはほとんど確かに答えではありません。基本的なアプリケーションを作成したい場合は、Xcodeで新しいmacOSプロジェクトを作成することで、必要なものすべてを得ることができます。あなたのアプリケーションでC++を使いたいなら、C++とObjective-Cを簡単に混ぜることができ、Swiftコードとの統合もかなり簡単であるはずです。

関連する問題