C言語でDXライブラリのプログラムを組んでいます。
今作っているソフトは、DxLibがメッセージ処理してくれるProcessMessage()以外で動くように、マルチスレッドにしています。
理由はソフトのタイトルバーがシステムに掴まれても画面が動くようにするためです。
またモードレスダイアログを表示させるため、ダイアログメッセージ処理を肩代わりしてくれるSetDialogBoxHandle( hwnd ); を呼び出していました。
しかし、DxLibでマルチスレッドにするための関数SetMultiThreadFlag( TRUE ) ; を呼び出すと上記の関数が無効(?)になります。
使えないようにコメントアウトしてしまうのです。
そこでダイアログメッセージ処理も自分で作ろうと思ったですが、DxLib側のプログラムで呼び出すと処理が重くなります。また別のスレッドを作ろうとしたのですが、プログラムを通ってくれません(書き方が違うんだと思いますが…)。
どうすればDxLibのマルチスレッドにさらにモードレスダイアログのメッセージ処理を追加できるでしょうか?
YAHOO!知恵袋リンク
windows 7 HP
VC++2008
DxLib 3.10a
マルチスレッド時のダイアログ
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: マルチスレッド時のダイアログ
知恵袋に有るようにDXLIBの管理人さんに相談されたほうが良いと思いますが、もし自分でやるとしたらDXLIBのソースコードを調べられたのでしょうか?
そのぐらいしないと解決できない問題だと思います。
そのぐらいしないと解決できない問題だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: マルチスレッド時のダイアログ
相互リンクの条件は満たしているわけですから、誰か答えてくれるかもしれないので、しばらくはこのままで良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: マルチスレッド時のダイアログ
全て自己解決しました。
主な原因として、HWND型の引数の渡し方が誤っていたことでした。
無事、動作したことを確認いたしましたので解決とさせていただきます。
主な原因として、HWND型の引数の渡し方が誤っていたことでした。
無事、動作したことを確認いたしましたので解決とさせていただきます。
Dango San