トップページ > 記事閲覧
ChangeWindowMode時の挙動
名前:GASHI 日時: 2018/07/13 00:41

お世話になっております。 LoadGraphで作成した画像ですが、ChangeWindowMode()した時には壊れます。 過去のトピックでは「LoadGraphしたものは自動で復帰する」とありましたが…。 どうやらそれは昔の話だったようで。 ChangeWindowModeの説明には書いてあるようですが。 現在のLoadGraphのリファレンスには壊れることすら書いてなかったのでかなり悩みました。 何が一体正しいのか? 結局、いずれにしても必要なので、SetRestoreGraphCallbackでコールバックルーチンを 設定しました。 それで、ChangeWindowModeすると呼ばれるはずなのですが、呼ばれません。 そもそも画像も表示できないですし、GetGraphSizeが-1を返すので、間違いなく画像は ロストしているようですが、コールバックが帰ってきません。 仕方が無いので、その時点で無理やりReloadFileGraphAllを呼んでみるようにしたのですが、 これでは画像は復帰出来ませんでした。 最終的に、「DeleteGraphしてLoadGraphし直す」というなんだか頭の悪い方法でしのいで ますが、結局どういう実装が正しいのか…。 コールバックが呼ばれないのは、バグなのか、現在の仕様なのか、正直わかりません。 ReloadFileGraphAllで復帰しないのも同様です。 以上、よろしくお願いいたします。
メンテ

Page: 1 |

Re: ChangeWindowMode時の挙動 ( No.1 )
名前:管理人 日時:2018/07/16 23:51

> LoadGraphで作成した画像ですが、ChangeWindowMode()した時には壊れます。 > 過去のトピックでは「LoadGraphしたものは自動で復帰する」とありましたが…。 > どうやらそれは昔の話だったようで。 LoadGraph で作成されたグラフィックハンドルが自動で復帰するのは、例えばフルスクリーンモードで動作中に Alt+Tab が押されてデスクトップ画面に戻ってしまい開発者の意図しない動作でグラフィックハンドルが 壊れてしまった場合です ChangeWindowMode や SetGraphMode を呼ぶのは開発者の意図した処理なのでデフォルトでは自動的には復帰されません 事前に SetChangeScreenModeGraphicsSystemResetFlag( FALSE ); を実行しておくと、 ChangeWindowMode や SetGraphMode の実行でグラフィックハンドルが削除された場合も 自動的に復帰されるようになりますので、よろしければお試しください m(_ _)m > それで、ChangeWindowModeすると呼ばれるはずなのですが、呼ばれません。 SetRestoreGraphCallback で登録した関数も開発者の意図しない動作でグラフィックハンドルが 壊れてしまった場合にのみ呼ばれます > 最終的に、「DeleteGraphしてLoadGraphし直す」というなんだか頭の悪い方法でしのいで > ますが、結局どういう実装が正しいのか…。 SetChangeScreenModeGraphicsSystemResetFlag( FALSE ); を使用せずに ChangeWindowMode や SetGraphMode を呼んでグラフィックハンドルが削除された場合は LoadGraph や LoadDivGraph を使用して復帰処理を行います
メンテ
Re: ChangeWindowMode時の挙動 ( No.2 )
名前:GASHI 日時:2018/07/17 23:20

ありがとうございます。 「仕様だ」と解るともうすぐに普通に安心して使えるのですが、 リファレンスに書いてないことはどうしても慎重にならざるを得ません。 非公開関数などの説明も無いので(おそらく質問攻めに遭うのを避けるためと思われますが) この関数は使って良いのか悪いのか、すら解らないので安易には使えません。 【詳しい説明もしないし、質問も受け付けないけど、とりあえず「近々に無くす予定は無い」  非公開関数の一覧】 などがあるだけでもとても助かるのですが…。 質問するより、ソースコードに語ってもらったほうがよほど速いという場合もあります。 誤解が生じるなどのマイナス面もあるにはありますが。 「こういう関数があるよ。あとはソースを見て理解してね」ってスタンスのものが有っても 良いと思うんですよね。それだけでも助かる!というかたは他にもいらっしゃると思います。 お忙しい事とは思いますが、一度作ってしまえば楽だと思いますし、有志の方がまとめてく れる…ような期待も持てるかも知れません。 勝手な要望で申し訳ありません…。
メンテ
Re: ChangeWindowMode時の挙動 ( No.3 )
名前:管理人 日時:2018/07/18 01:00

> 【詳しい説明もしないし、質問も受け付けないけど、とりあえず「近々に無くす予定は無い」 >  非公開関数の一覧】 などがあるだけでもとても助かるのですが…。 『「近々に無くす予定は無い」非公開関数の一覧』は DxLib.h と DxFunctionWin.h や DxFunctionAndroid.h などに書かれている関数すべてですのでご安心ください ( DirectX のバージョンが変わったことで関数だけ残っていて全く効果が無いものなどもありますが… ) あと、非公開の関数でもご質問があればお答えします > 「こういう関数があるよ。あとはソースを見て理解してね」ってスタンスのものが有っても > 良いと思うんですよね。それだけでも助かる!というかたは他にもいらっしゃると思います。 正にそのスタンスのものが DxLib.h, DxFunctionWin.h, DxFunctionAndroid.h で、 且つ、非公開関数の仕様や利用方法について理解が及ばなかったり、そもそもそこまで深く使おうと思われない方は DxLib.h や DxFunctionWin.h などをご覧になることも無いので、現在の状態( DxLib.h で使える関数を直接確認する方 = 非公開関数を 関数の注釈や掲示板の過去ログを見ることである程度使えてしまう方 )が丁度良かったりもします…
メンテ
Re: ChangeWindowMode時の挙動 ( No.4 )
名前:GASHI(解決) 日時:2018/07/18 13:51

お世話になっております。 これは嬉しいかぎりですね。 これで不安材料が大幅に減り、色々試してみることも出来ます。 ありがとうございます!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存