2017年2月6日月曜日

Windowsアプリって独特

FMtrialもv3リリースした所で、次はMMLworkstationの開発の続きを。

MMLworkstationはVSTinstをGUIで読み込んだりできるようにする為に、今までの
DXライブラリの構造に加えてWindowsアプリの構造も加える必要がある。

自分でアプリ内にウィンドウを作ればいいのだけど、そんなのって今の時代は
あんまり努力としては意味が無い感じ。

でもDXライブラリは普通のWindowsアプリを作るには結構不向きで、でも
Dxライブラリを抜く事はできず、共存させていく事に。

その中でいくつかアホみたいな事でハマったのでメモ。

■子ウィンドウを出したり消したり
世の中のウィンドウアプリのサンプルは、基本的にウィンドウを出したらそれで満足
みたいで、消したり出したりしているサンプルが全く無い!!

いや、あるのかもしれんけど、ググっても全く当たってこない!!困った!!

とにかく、一回出したウィンドウを消して、次出すという行為、これ意外とムズイ!

色々やってみて、大きく二つの行為が必要だという事を把握。

・ウィンドウのクラスを登録
・ウィンドウをクリエイト

この二つを毎回やると怒られる。そこで、クラスの登録だけしておいて、ウィンドウ
が必要になったらクリエイト、いらなくなったらデストロイという流れでなんとかクリア。

多分これで大丈夫でしょう・・。

■子ウィンドウのアイコン
そしてVSTインストのセレクタを子ウィンドウで出してみて、アイコンがWindowsの
デフォルトのアイコンが出て「作り途中感」がすごい。

調べてみると、クラスを登録する時にアイコンを登録するみたいだ。

WNDCLASSのhIconにリソースのアイコンを登録するだけみたい。

でも、色々やるも出ない。

LoadIcon()には二つの引数があって、一つ目はHINSTANCE。これは問題ない。
二つ目がLPCSTRでアイコンを渡すみたいだ。

世の中のサンプルが、「"IDC_ICON"」みたいなダブルコーテーションでリソース値を
渡してるものだから、すっかりだまされた。LPCSTRだし、文字列で検索でもするの
かいな?と。

色々やって出たのは、

wc.hIcon = LoadIcon(hInstance, (LPCSTR)IDC_ICON);

これ。LPCSTRでキャストするだけだった。なんだよ!もう!!どこにもそんな事
書いてなかったよ!!もう!!こんなのただの数字じゃんか!!ぷんすか!!
結構な時間取られたよ・・全く・・。

0 件のコメント:

コメントを投稿