VstHostアプリの作成(41) シーケンス部分実装(4)

公開:2010-07-19 07:48
更新:2020-02-15 04:36
カテゴリ:vst host,windows,c++,audio

STed2 for WindowsをVC2010でビルドしなおしてみた。少し#include部分をいじる必要があったけどそれ以外はすんなりビルドでき、Windows 7でもちゃんと動いている。
STed2 for Windowsの作りは、できるだけSTedのソースコードを変更せずに動作させるという感じ。画面周りはX68k版のソースコードそのままで動くよう、Win32 APIでラップしている。 面白いのはWinMainからmainを呼び出しているところ。なんとメッセージループが見当たらない。


int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR    lpCmdLine,
int       nCmdShow)
{
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_STED2, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
gAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_STED2);
char* argv[2];
argv[0] = "sted2";
argv[1] = NULL;
main(0, argv);
return (int) 0;
}


main関数以降はもともとのSTedのコードで、Human68Kで作られているのでキー入力などはiocsをコールする作りになっている。STed2 for WindowsはこのiocsコールをWin32APIでエミュレートしているんだけど、その際にメッセージを取り出して処理するようになっている。イベント・ドリブンなOS上で逐次処理を実現しているわけだ。なのでメッセージループは見た目ないのであった。
これはこれで良いのだけれど、自分のコードに移植する際は少し考えないといけないな。出来る限り元のコードを変えないで進めたいんだけどね。。