ページ 11

マルチスレッド時のダイアログ

Posted: 2013年5月12日(日) 22:48
by だんごさん
C言語でDXライブラリのプログラムを組んでいます。
今作っているソフトは、DxLibがメッセージ処理してくれるProcessMessage()以外で動くように、マルチスレッドにしています。
理由はソフトのタイトルバーがシステムに掴まれても画面が動くようにするためです。
またモードレスダイアログを表示させるため、ダイアログメッセージ処理を肩代わりしてくれるSetDialogBoxHandle( hwnd ); を呼び出していました。

しかし、DxLibでマルチスレッドにするための関数SetMultiThreadFlag( TRUE ) ; を呼び出すと上記の関数が無効(?)になります。
使えないようにコメントアウトしてしまうのです。

そこでダイアログメッセージ処理も自分で作ろうと思ったですが、DxLib側のプログラムで呼び出すと処理が重くなります。また別のスレッドを作ろうとしたのですが、プログラムを通ってくれません(書き方が違うんだと思いますが…)。

どうすればDxLibのマルチスレッドにさらにモードレスダイアログのメッセージ処理を追加できるでしょうか?

YAHOO!知恵袋リンク

windows 7 HP
VC++2008
DxLib 3.10a

Re: マルチスレッド時のダイアログ

Posted: 2013年5月13日(月) 00:01
by softya(ソフト屋)
知恵袋に有るようにDXLIBの管理人さんに相談されたほうが良いと思いますが、もし自分でやるとしたらDXLIBのソースコードを調べられたのでしょうか?
そのぐらいしないと解決できない問題だと思います。

Re: マルチスレッド時のダイアログ

Posted: 2013年5月13日(月) 00:09
by だんごさん
分かりました…
本家様で質問させていただきます。

Re: マルチスレッド時のダイアログ

Posted: 2013年5月13日(月) 00:11
by だんごさん
DXライブラリ置き場掲示板

解決ボタン押しておいた方がいいのでしょうか?

Re: マルチスレッド時のダイアログ

Posted: 2013年5月13日(月) 00:13
by softya(ソフト屋)
だんごさん さんが書きました:DXライブラリ置き場掲示板

解決ボタン押しておいた方がいいのでしょうか?
相互リンクの条件は満たしているわけですから、誰か答えてくれるかもしれないので、しばらくはこのままで良いと思います。

Re: マルチスレッド時のダイアログ

Posted: 2013年5月19日(日) 08:54
by だんごさん
全て自己解決しました。
主な原因として、HWND型の引数の渡し方が誤っていたことでした。

無事、動作したことを確認いたしましたので解決とさせていただきます。