その買うを、もっとハッピーに。|ハピタス

Cubase支援ツール

こ、このアイコンは一体…(笑)


音楽制作支援ツール


そうです、Cubase支援ツールを開発し始めました(笑)
これから気長に少しずつ理想に近づけたら良いなと思ってます。
普段はエクセル(VB6)で書いてるので、
理想としてる事が出来るのかどうかも、
まずは慣れているエクセルでサンプルを作ってみるのですが、
最終的にVB.NETに移行しなければならない訳で、大変です。


実験的に個人的に一番やりたかったプログラムを実装してみました。
まぁ、MacのExposeみたいな感じですね。
仕組みは全く違いますけど(笑)
これである程度ウィンドウがかさ張ってても、
最前面にしたいウィンドウを直感的に前面にする事が出来ます。


画質が悪く、何やってるか分かり辛いですが、動画もUPしてみました。
見辛いですが、マウスポインタの動きに注目して頂ければ、
どういう動作をしているのか分かると思います。
また、動画では見て分かりませんが、
ウィンドウがタイル状になるのはキーボードから操作してます。


Cubase、ウィンドウ操作


Exposeみたいですが、全く違います(笑)
ExposeやWindowsでそれを再現するソフトは、
今あるウィンドウをキャプチャーしてから、
その画像を選んで前面にする、
というロジックになっていると思います(多分…)。
ですが、僕はそんな難しい事はしてません(笑)


Windowsがウィンドウのウィンドウプロシージャに送るメッセージの、
WM_MDITILE = &H226を利用してます。
そう、良くメニューに「水平に並べる」とか、
「重ねて表示」とかあるアレですね。


最初に今CubaseのMDIウィンドウ上にある全ての子ウィンドウを、
APIのEnumWindowsとEnumChildWindowsを使って回し、
位置情報を取得してレジストリに格納します。
また、現在最前面の子ウィンドウのハンドルも変数に格納しておきます。
そして先程のWM_MDITILEをMDIウィンドウに送信し、
各子ウィンドウはタイル状になります。
で、ここでDo〜Loopのループ(今後ここが心配)に入ります。
新規に前面にしたいウィンドウをクリックします。
要するに、先程最前面だったハンドルの変数と、
現在最前面のハンドルが不一致になったら、
ループから抜けます。
そして、再度EnumWindowsとEnumChildWindowsを使って回し、
今度はレジストリに格納しておいた値を元に、
各子ウィンドウを再配置します。


という事で、Exposeとは違います(笑)
また、画像処理系のAPIも使ってませんし、
大した事はしてません(笑)
いいんです、自分専用ツールなので。
ちなみに、よくあるExposeモドキのツールは、
EnumWindowsしか使ってない(多分)と思います。
親ウィンドウしかキャプションされてないので、
多分そうだと思います。



CUBASE6 アカデミック版Steinberg 輸入版

CUBASE6 アカデミック版Steinberg 輸入版


APIで学ぶWindowsプログラミング (日経BPパソコンベストムック)

APIで学ぶWindowsプログラミング (日経BPパソコンベストムック)