■吉里吉里/KAG/TJS雑談質問スレ■その25
■ このスレッドは過去ログ倉庫に格納されています
0389名前は開発中のものです。
2012/03/05(月) 20:04:43.90ID:ogqGQR0AウインドウプロシージャはOSによって吉里吉里本体同様にメインスレッドで単独で走ることが保証されてるので、
・自前で不可視のウインドウクラスとそのウインドウを作ってそのプロシージャに吉里吉里を呼び出す処理を書く
・スレッドにはそのウインドウの HWND を受け渡す
・スレッドからその HWND を指定して PostMessage
これで処理できる。
吉里吉里内部だと、Borland C++ の便利関数を使ってる。
例えば win32/WaveImpl.cpp 中の以下のような処理
UtilWindow = AllocateHWnd(UtilWndProc);
これで準備した内部ウインドウに
::PostMessage(UtilWindow, WM_USER+1, 0, 0);
これでメッセージおくってる
VCで書かれたプラグインの例だと、httprequest プラグインは吉里吉里の Window を使って目的の処理を実装してる。
Window クラスに HWND とる口と、任意のメッセージIDに対するプロシージャを登録する口 ( Window.registerMessageReceiver )
があるのでそれで対応できる。
ただ、吉里吉里のウインドウはフルスクリーンまきこまれも配慮する必要があって対応が面倒くさいので、
今新規に作るのなら shellexecute プラグインでやってるように、Win32 API で自前で窓を作って対応するほうが
プラグインの独立性も保ちやすくて良いと思います
■ このスレッドは過去ログ倉庫に格納されています