SewiGの日記
2007-04-23 [月]
■ [Mac][Programming] Macでプログラミング(5) - リソースを使わないでウィンドウ表示
今度はリソースを使わないでソースコードでウィンドウを作ってみます。前回と違うのは、ウィンドウの作成に使う関数がNewCWindowになっていることです。戻り値はウィンドウへのポインタです。引数は左からウィンドウ作成のメモリへのポインタ、ウィンドウの大きさを表すRectのポインタ、ウィンドウの名前を表す文字列、初期状態でウィンドウを表示するかどうかを表す真偽値、ウィンドウのアピアランスを表す数値、ウィンドウの配置で最背面は0で最前面は-1、ズームボックスをつけるかどうかの真偽値、最後は何に使うのか良く分かりません…
ShowWindow()までがウィンドウ関連、この後2行が描画関連。MoveTo()で描画位置を指定してDrawString()で文字列を描画します。
今回は偉そうにEventLoop()でイベント処理をしていますが、マウスが押し下げられたらアプリケーションが終了するという点で前回と同じ動作を行っています。
#include <Dialogs.h> #include <Strings.h> #include <Fonts.h> #include <Sound.h> QDGlobals qd; void InitToolBox() { InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(nil); FlushEvents(everyEvent, 0); InitCursor(); } void EventLoop() { EventRecord event; for (;;) { if (WaitNextEvent(everyEvent, &event, 0, 0L) == true) { switch(event.what) { case mouseDown: return; case autoKey: case keyDown: break; } } } } void main() { WindowPtr window; Rect rect = {50, 50, 360, 340}; InitToolBox(); window = NewCWindow(NULL, &rect, "Hello World", true, 0, (WindowPtr)-1, false, 0); if (window == NULL) ExitToShell(); SetPort(window); ShowWindow(window); MoveTo(30, 30); DrawString("Hello"); SysBeep(0); EventLoop(); DisposeWindow(window); ExitToShell(); }