Re: SetWindowStyleMode ( No.18 ) |
- 名前:ねこさん 日時:2015/11/13 00:00
ちょっと気になる程度で特に困ることではないので
仕様ならば大丈夫です
ありがとうございました
|
Re: SetWindowStyleMode ( No.19 ) |
- 名前:管理人 日時:2015/11/13 00:39
No.8 では最大化時の表示の問題以外にも二つほど問題があるとのことでしたが、
そちらの現象は最新のものでも発生してしまいますでしょうか?
|
Re: SetWindowStyleMode ( No.20 ) |
- 名前:ねこさん 日時:2015/11/14 00:13
ウィンドウリサイズ時の動作の重さについてですが
これもDirect3D 11を使用した時だけ重くなるようです
一応win10とwin8.1の二つの環境で試しましたがどちらでもなりました
ずっと11で作っていましたが本スレッドを立てるまでは重さは目立ちませんでしたので
最大化処理の変更のあたり何か関係がありそうです
最大化したウィンドウを通常ウィンドウに戻すとおかしくなる件は
本スレッドNo12に貼ったログを出力したPCと同じPCでの問題で
No.1 モニター名:\\.\DISPLAY2 1280x1024 32bit 60Hz
で最大化したウィンドウを枠を掴んだまま
No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 59Hz
に持って行こうとするとカーソルがDISPLAY1の領域に入った時点でウィンドウの動きがおかしくなるようです
カーソルだけからまわりしてしまうイメージです
同時に、一瞬だけウィンドウサイズが小さくなる(おそらくDISPLAY2のサイズ)現象も起こります
|
Re: SetWindowStyleMode ( No.21 ) |
- 名前:管理人 日時:2015/11/16 02:35
ご返答ありがとうございます
別件の作業量の見積もりを見誤ってまだ現象の確認もできていませんが
なるべく早く対応したいと思いますので少々お待ちください m(_ _;m
|
Re: SetWindowStyleMode ( No.22 ) |
- 名前:ねこさん 日時:2015/11/16 23:47
忙しいなかすみません
よろしくお願いします
|
Re: SetWindowStyleMode ( No.23 ) |
- 名前:管理人 日時:2015/11/18 01:48
相変わらず手元では現象が再現できていませんが、ひとつだけ疑問なことがありましたので
ご質問させてください
SetWindowSizeChangeEnableFlag(TRUE, FALSE); を使用した際に
「ウインドウリサイズ時に重くなる」とのことですが、
このときも SetWindowStyleMode( 10 ) ; を使用しているのでしょうか?
なぜこのような質問をするのかと言いますと、
SetWindowSizeChangeEnableFlag(TRUE, FALSE); + SetWindowStyleMode( 10 ) ; で
最大化ボタンなどを押してウインドウを最大化した場合、SetGraphMode で指定する解像度が
最大化時のウインドウのクライアント領域のサイズ以下の場合はDXライブラリの画面が
ウインドウのクライアント領域の左上に寄ってしまうので、そのような不自然な状態での
動作をしているのか、それとも「ウインドウリサイズ時に重くなる」の際は
SetWindowStyleMode( 10 ) ; を使用していないのか、ということが気になりまして・・・
お手数で申し訳ありませんがよろしければご返答をください m(_ _;m
|
Re: SetWindowStyleMode ( No.24 ) |
- 名前:ねこさん 日時:2015/11/18 11:52
改めて検証をしてみたところ、すみません、かなり間違えていました
Direct3D 11を使用している時、ウィンドウサイズを変更させると
6037:スワップチェインのバッファの ID3D11Texture2D を取得します.... 成功
6080:スワップチェインのバッファの ID3D11ShaderResourceView を作成します.... 成功
6119:スワップチェインのバッファの ID3D11RenderTargetView を作成します.... 成功
というログが延々と出力され、それが原因で重くなっていただけのようです
ログ出力をしないように設定したら重くなくなりました
ちなみに最大化時の処理落ちもなくなりました
振り回してしまい申し訳ございません
|
Re: SetWindowStyleMode ( No.25 ) |
- 名前:管理人 日時:2015/11/20 02:24
> というログが延々と出力され、それが原因で重くなっていただけのようです
> ログ出力をしないように設定したら重くなくなりました
なるほど!確かに山のようにログが出力されますね・・・
エラーが発生したときのみログを出力するように変更してみます
> ちなみに最大化時の処理落ちもなくなりました
こちらは
「最大化したウィンドウを枠を掴んだまま
No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 59Hz
に持って行こうとするとカーソルがDISPLAY1の領域に入った時点でウィンドウの動きがおかしくなる」
↑こちらの件のことでしょうか?
ログ出力の重さが無くなった事でこちらの現象が直るからくりが分かりませんが、
直ったということでしたら何よりです
> 振り回してしまい申し訳ございません
ログ出力が異常にされていることも十分バグですので、
こちらで気付けず申し訳ありませんでした
原因を調べていただきありがとうございます m(_ _;m
|
Re: SetWindowStyleMode ( No.26 ) |
- 名前:ねこさん 日時:2015/11/20 02:35
すみません言葉が悪かったです
直ったというのはNo.16の事になります
「最大化したウィンドウを枠を掴んだまま
No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 59Hz
に持って行こうとするとカーソルがDISPLAY1の領域に入った時点でウィンドウの動きがおかしくなる」
の件については未だ直ってはいません
|
Re: SetWindowStyleMode ( No.27 ) |
- 名前:管理人 日時:2015/11/22 19:57
私も勘違いしてしまってすみません
私の環境で再現するか再度試してみたいので、以下の項目について教えていただけないでしょうか?
1.No.7の「最大化処理の変更」を行う前は発生しなかったのでしょうか?
2.Windows10 のみで発生するのでしょうか?
3.Direct3D 11 を使用した場合のみ発生するのでしょうか?
4.SetGraphMode で指定されている解像度は幾つでしょうか?
5.SetWindowStyleMode( 10 ) ; を使用していますでしょうか?
6.SetWindowSizeChangeEnableFlag(TRUE, FALSE); を使用していますでしょうか?
7.DISPLAY1 と DISPLAY2 のデスクトップ画面での設定解像度はそれぞれ幾つでしょうか?
8.ソフト起動直後は DISPLAY1 と DISPLAY2 のどちらにウインドウが表示されていますでしょうか?
9.DISPLAY1 と DISPLAY2 のどちらが「プライマリ」でしょうか?
10.DISPLAY2 は DISPLAY1 のどちら側に配置されていますでしょうか?( 左側、右側など )
質問が多くて申し訳ありません m(_ _;m
|
Re: SetWindowStyleMode ( No.28 ) |
- 名前:ねこさん 日時:2015/11/22 23:12
1.No.7の「最大化処理の変更」を行う前は発生しなかったのでしょうか?
はい。発生しませんでした
2.Windows10 のみで発生するのでしょうか?
はい。Windows10でのみ発生します
3.Direct3D 11 を使用した場合のみ発生するのでしょうか?
いいえ。9でも発生します
4.SetGraphMode で指定されている解像度は幾つでしょうか?
1280x720です
5.SetWindowStyleMode( 10 ) ; を使用していますでしょうか?
はい。しかし最大化ボタンの付いている全てのスタイルで試しましたが
いずれも発生しました
6.SetWindowSizeChangeEnableFlag(TRUE, FALSE); を使用していますでしょうか?
いいえ。SetWindowSizeChangeEnableFlag(TRUE);を使用しているので
SetWindowSizeChangeEnableFlag(TRUE, TRUE);だと思われます
7.DISPLAY1 と DISPLAY2 のデスクトップ画面での設定解像度はそれぞれ幾つでしょうか?
DISPLAY1 1920x1080
DISPLAY2 1280x1024
8.ソフト起動直後は DISPLAY1 と DISPLAY2 のどちらにウインドウが表示されていますでしょうか?
DISPLAY1にウィンドウが表示されています
9.DISPLAY1 と DISPLAY2 のどちらが「プライマリ」でしょうか?
DISPLAY1がプライマリになります
10.DISPLAY2 は DISPLAY1 のどちら側に配置されていますでしょうか?( 左側、右側など )
左DISPLAY2 右DISPLAY1 となっています
ごちゃごちゃしてしまったので一応もう一度書いておきますが
このバグはDPIスケーリングをしている時にのみ起こります
|
Re: SetWindowStyleMode ( No.29 ) |
- 名前:管理人 日時:2015/11/22 23:24
ご返答ありがとうございます
すみません、追加でDPIについてご質問させてください m(_ _;m
11.DPIスケーリングの拡大率( 150% など )は幾つでしょうか?
|
Re: SetWindowStyleMode ( No.30 ) |
- 名前:ねこさん 日時:2015/11/22 23:43
125%になります
|
Re: SetWindowStyleMode ( No.31 ) |
- 名前:管理人 日時:2015/11/24 00:31
ご返答ありがとうございます
こちらで可能な限り状況を再現してみました
Windows10
Direct3D 10
Direct3D 9Ex
DISPLAY1 1920x1080 (プライマリ)
DISPLAY2 1280x1024 (DISPLAY1の左側に配置)
DPIスケーリング 125%
SetGraphMode( 1280, 720 );
SetWindowStyleMode( 10 );
SetWindowSizeChangeEnableFlag(TRUE);
その上で以下のプログラムを実行してみました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
SetGraphMode( 1280, 720, 32 ) ;
SetWindowStyleMode( 10 ) ;
SetWindowSizeChangeEnableFlag(TRUE);
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
SetDrawScreen( DX_SCREEN_BACK ) ;
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
DrawBox( 0, 0, 256, 256, GetColor( 255,255,0 ), TRUE ) ;
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
実行後ウインドウがDISPLAY1に表示されるので、それをDISPLAY2の領域に移動して最大化、
その後ウインドウ上部の枠を掴んでDISPLAY1の領域に移動( 移動開始時に最大化は解除 )
してみましたが、特に問題は発生しませんでした
こちらに手元の環境でビルドした実行ファイルをアップしましたので、お手数で申し訳ありませんが
こちらの実行ファイルでも同様の現象が発生してしまうかお試しいただけないでしょうか? m(_ _;m
https://dxlib.xsrv.jp/temp/SetWindowStyleModeTest.zip
|
Re: SetWindowStyleMode ( No.32 ) |
- 名前:ねこさん 日時:2015/11/24 01:16
試してみました
その結果、こちらのプログラムでも発生しました
見られるかわからないのですが、動画を撮ったのでアップロードします
ttp://fast-uploader.com/file/7003850640575/
動画を撮っていて気がついたのですが
最初にこの現象を確認した時と現象の起き方がちょっと変わっている気がします
|
Re: SetWindowStyleMode ( No.33 ) |
- 名前:管理人 日時:2015/11/26 00:16
動画のアップありがとうございます
ウインドウがモニタ間を移動する度に下がっていきますね・・・・
私も試してみましたが、やはり現象は発生しませんでした
何度も申し訳ありませんが、再度ご質問させてください m(_ _;m
1.手順に「DISPLAY2にウインドウを移動した後、最大化する」がありますが、仮に最大化せずに
DISPLAY2 と DISPLAY1 の間を行ったりきたりするだけでは現象は発生しませんでしょうか?
2.動画を拝見する限りでは DISPLAY2 と DISPLAY1 の DPIスケーリングが異なるようですが、
DISPLAY1 と DISPLAY2 の DPIスケーリングを同じにした場合も同様の現象が発生しますでしょうか?
|
Re: SetWindowStyleMode ( No.34 ) |
- 名前:ねこさん 日時:2015/11/26 01:04
1.手順に「DISPLAY2にウインドウを移動した後、最大化する」がありますが、仮に最大化せずに
DISPLAY2 と DISPLAY1 の間を行ったりきたりするだけでは現象は発生しませんでしょうか?
はい。起動後DISPLAY2で最大化した後にのみ発生します
2.動画を拝見する限りでは DISPLAY2 と DISPLAY1 の DPIスケーリングが異なるようですが、
DISPLAY1 と DISPLAY2 の DPIスケーリングを同じにした場合も同様の現象が発生しますでしょうか?
あまり詳しくはないのですが、Windows10では個々のディスプレイに最適な異なる倍率のスケーリングが適用されるらしいです
8.1にも同様な機能がありましたが、全てのディスプレイを同じ倍率にする方式にも切り替えられました
が、10からその設定が潰されてしまったようです
前に上げましたWindows 10 DPI Fixというソフトを使用するとこの現象は起こらなくなります
|
Re: SetWindowStyleMode ( No.35 ) |
- 名前:管理人 日時:2015/11/28 01:44
|
Re: SetWindowStyleMode ( No.36 ) |
- 名前:ねこさん 日時:2015/11/28 13:07
私の環境でもちゃんとした挙動になっている事を確認しました
試してみたら、勘違いしていたようでDPIスケーリング個別に変更できました……
お騒がせしてすみません
お忙しい中、長々と対応ありがとうございました
|
Re: SetWindowStyleMode ( No.37 ) |
- 名前:ねこさん(解決) 日時:2015/11/28 13:10
すみません
解決つけ忘れです
|