Metasequoia BBS

| 新規投稿 | 通常表示 | ツリー表示 |
状態
タグ
キーワード
[3446] MQWidgetBase::GetSystemWidgetIDについて / sio29
[質問,SDK] 返信
MQWidgetBase::GetSystemWidgetIDについて質問なのですが、この返り値は
MQ_GetWindowHandleと同じと考えてよいのでしょうか?
あとMQ_GetWindowHandleは廃止予定と書かれていますが、今後ダイアログは付属のウィジェットを使えということなのでしょうか?
2013-09-03 23:48
[3447] Re: MQWidgetBase::GetSystemWidgetIDについて / 管理者
ウィジェットのIDはHWNDとはまったく別物です。

当面はMQ_GetWindowHandleを廃止するつもりはありませんし、
まだ描画イベントが提供されないなど整備が追い付いていない部分がありますので、
既にWindows APIベースで作成しているウィンドウをすぐさま新しいウィジェットを用いたものに置き換える必要はありませんが、
ウィジェットを使うことによってボタンやフレーム等の外観が統一できること、
また将来的な話になりますがWindows以外のプラットフォームで展開したときの移植のことも考えて
従来のWindows APIベースでウィンドウ等を作成することは非推奨としています。
2013-09-04 01:06
[3448] Re: Re: MQWidgetBase::GetSystemWidgetIDについて / sio29
返信ありがとうごさいます。

>当面はMQ_GetWindowHandleを廃止するつもりはありませんし
とりあえず安心しました。
簡単なダイアログならば付属のウィジェットに対応するのは問題ないのですが
使用している自作ダイアログを全てをウィジェットに移植となるとそれなりの労力になるので
ネイティブなウィンドウハンドルを獲得する関数はできれば残しておいていただけるとありがたいです。
2013-09-04 01:50
[3449] Re: Re: Re: MQWidgetBase::GetSystemWidgetIDについて / 管理者
>ネイティブなウィンドウハンドルを獲得する関数はできれば残しておいていただけるとありがたいです。

しばらく(少なくとも1、2年程度)は互換性維持のため関数を残しますが、
本体側が管理できないHWNDが存在することで思わぬ不具合を引き起こす可能性も考えられることから、
ドキュメントにあるように将来的には廃止の方向で考えていますので、
折をみてウィジェットへの移行をご検討いただければ幸いです。
また、ドキュメントを見て移行にあたって不足している機能があればご報告いただけばと思います。
2013-09-04 10:41
[3452] Re: Re: Re: Re: MQWidgetBase::GetSystemWidgetIDについて / sio29
返信ありがとうございます。

>しばらく(少なくとも1、2年程度)は互換性維持のため関数を残しますが、
うーん、なかなか短いですね。

>また、ドキュメントを見て移行にあたって不足している機能があればご報告いただけばと思います。
とりあえず独自ダイアログを作る機能を考えた場合、以下の機能は欲しいかなと思います。
・独自のグラフィックが描画できるキャンバス機能
・ビットマップを管理するクラスとそれを表示する機能
・ビットマップをダイアログとして使えるアイコン機能
・独自なダイアログ同士の通信に使える汎用的なイベントリスナ、イベントディスパッチャ。
・既存のダイアログを拡張できる機能(たとえばMQListBoxのセルを独自のものに置き換えられるようにするなど)
・メニュー、ポップアップメニュー

まだドキュメントを流し読みした程度なので、すでに存在する機能などがあったらすいません。
2013-09-04 15:45
[3454] Re: Re: Re: Re: Re: MQWidgetBase::GetSystemWidgetIDについて / 管理者
>返信ありがとうございます。
>
>>しばらく(少なくとも1、2年程度)は互換性維持のため関数を残しますが、
>うーん、なかなか短いですね。

短いでしょうか。
もっとも「少なくとも」で、実際にいつなくすという計画がまだ決まっているわけではなく、
それくらいを目途に移行いただければ、くらいにお考えいただけると。

>とりあえず独自ダイアログを作る機能を考えた場合、以下の機能は欲しいかなと思います。

描画周りはもともと実装が追い付いていないのと、あとメニューは単なる対応漏れですね。
ただスケジュール的に厳しいので、4.0.1や4.1のような後のバージョンアップで追加対応になる可能性もあります。

イベントリスな・ディスパッチャは内部でも固定化されたものしか仕組みがなく、
汎用となるとうまく対応できるかは検討してみないとよくわかりませんので、
自前で似たようなものを書いたほうがはやいかもしれません。
2013-09-04 17:04
[3455] Re: Re: Re: Re: Re: Re: MQWidgetBase::GetSystemWidgetIDについて / sio29
>もっとも「少なくとも」で、実際にいつなくすという計画がまだ決まっているわけではなく、
>それくらいを目途に移行いただければ、くらいにお考えいただけると。
了解しました。

>描画周りはもともと実装が追い付いていないのと、あとメニューは単なる対応漏れですね。
>ただスケジュール的に厳しいので、4.0.1や4.1のような後のバージョンアップで追加対応になる可能性もあります。
とりあえず現状機能のない部分はWin32APIで作れということですね。
ところで過渡的な利用方法としてWin32APIとウィジェットとの混在は可能なのでしょうか?

>イベントリスな・ディスパッチャは内部でも固定化されたものしか仕組みがなく、
>汎用となるとうまく対応できるかは検討してみないとよくわかりませんので、
>自前で似たようなものを書いたほうがはやいかもしれません。
個人的にはイベントリスナはウィンドウシステム側で持っていたほうが後々拡張するときに問題がないと思うのですが
メタセコのウィンドウシステムがそうであるのならば仕方がありませんね…
2013-09-04 19:11
[3456] Re: Re: Re: Re: Re: Re: MQWidgetBase::GetSystemWidgetIDについて / 管理者
>とりあえず現状機能のない部分はWin32APIで作れということですね。

はい、そうなります。
描画を含めた複雑な制御をおこなっているものはまだ移行できないので、
SDK側で必要なAPIの整備が行われるまで現状維持でお待ちください。

>ところで過渡的な利用方法としてWin32APIとウィジェットとの混在は可能なのでしょうか?

ウィジェットとHWNDは1対1ではなく一部のものしかHWNDを持たないこと、
またそもそもウィジェットに割り当てられたHWNDの取得関数は提供していないので、
混在は難しいと思います。
特殊な用途(自前でDirect3D描画するとか)で必要になることがあるかもしれませんが、
下手に提供すると今度はマルチプラットフォーム化の際の障害になりかねないので、今のところは提供しない方向で考えています。

>個人的にはイベントリスナはウィンドウシステム側で持っていたほうが後々拡張するときに問題がないと思うのですが
>メタセコのウィンドウシステムがそうであるのならば仕方がありませんね…

もちろんその通りです。
できないことはないとは思いますが、他のもっと重要度の高いものの実装が間に合っていない今の段階ではなんとも、、、というところです。
2013-09-04 20:01
[3457] Re: Re: Re: Re: Re: Re: Re: MQWidgetBase::GetSystemWidgetIDについて / sio29
ありがとうごさいます。了解しました
2013-09-04 20:37