Re: SetWindowStyleMode ( No.1 ) |
- 名前:管理人 日時:2015/10/26 00:13
|
Re: SetWindowStyleMode ( No.2 ) |
- 名前:ねこさん 日時:2015/10/26 01:23
ありがとうございます
修正できている事を確認できました
もう一つ質問があるのですが
サブディスプレイにウィンドウを移動して最大化するとプライマリディスプレイに勝手に移動されサブディスプレイのサイズのウィンドウで表示されてしまいます
これもバグでしょうか?
|
Re: SetWindowStyleMode ( No.3 ) |
- 名前:管理人 日時:2015/10/27 01:27
|
Re: SetWindowStyleMode ( No.4 ) |
- 名前:ねこさん 日時:2015/10/27 15:40
試しました
結果を言うとまだ挙動がおかしいです
私の環境では
サブ→□■←プライマリ
というふうにサイズの違う二つのディスプレイを使っているのですが
以下のような結果になります
■で最大化→戻す→■で最大化 正常
□で最大化→戻す→□で最大化 正常
■で最大化→戻す→□で最大化 質問時の状態
□で最大化→戻す→■で最大化 質問時と逆
□で最大化→戻す→■で最大化→戻す→■で最大化 ■の右端の方で□のサイズでウィンドウ表示
■で最大化→戻す→□で最大化→戻す→□で最大化 ウィンドウが消える(たぶん↑と同じ)
|
Re: SetWindowStyleMode ( No.5 ) |
- 名前:管理人 日時:2015/10/30 01:25
お試しいただきありがとうございます
ただ、件の問題は殆どそのままのようですね・・・
私の環境では問題なく動作してしまっているので、お手数で申し訳ありませんがこちらの
『最大化時のウインドウの位置や動作情報を Log.txt に出力する処理』を追加したバージョンをお使いいただいて
https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用
https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用
https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用
https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
その上でねこさんさんが試してくださった
@ ■で最大化→戻す→□で最大化 質問時の状態
A □で最大化→戻す→■で最大化 質問時と逆
こちらの二つを再度お試しいただき、その際の Log.txt に出力されたデバッグ情報を教えていただけないでしょうか? m(_ _;m
( Log.txt はDXライブラリを実行した際のカレントディレクトリに作成されます )
因みに「デバッグ出力:WM_SIZE」という文字列が含まれている行が今回追加したデバッグ出力です
3893:デバッグ出力:WM_SIZE Position 1
3898:デバッグ出力:WM_SIZE WindowMaximizedRect( -3, -3, 1923, 989 ) PrevWindowMaximizeRect( 0, 0, 0, 0 )
3902:デバッグ出力:WM_SIZE Position 3
6793:デバッグ出力:WM_SIZE Position 1
6798:デバッグ出力:WM_SIZE WindowMaximizedRect( -3, -3, 1923, 989 ) PrevWindowMaximizeRect( -3, -3, 1923, 989 )
11277:デバッグ出力:WM_SIZE Position 1
11282:デバッグ出力:WM_SIZE WindowMaximizedRect( 1917, -3, 3203, 1027 ) PrevWindowMaximizeRect( -3, -3, 1923, 989 )
11285:デバッグ出力:WM_SIZE Position 2
11289:デバッグ出力:WM_SIZE Position 3
16993:デバッグ出力:WM_SIZE Position 1
16998:デバッグ出力:WM_SIZE WindowMaximizedRect( 1917, -3, 3203, 1027 ) PrevWindowMaximizeRect( 1917, -3, 3203, 1027 )
あと、私の環境で問題が発生しなかったのはねこさんさんと使用しているOSが異なることによるものである
可能性もありますので、よろしければお使いのWindowOSのバージョンを教えてください m(_ _)m
|
Re: SetWindowStyleMode ( No.6 ) |
- 名前:ねこさん 日時:2015/10/30 01:52
OSはWindows10 x64を使用しています
以下にログを書きます
■で最大化→戻す→□で最大化の時のログ
1862:デバッグ出力:WM_SIZE Position 1
1871:デバッグ出力:WM_SIZE WindowMaximizedRect( -9, -9, 1929, 1039 ) PrevWindowMaximizeRect( 0, 0, 0, 0 )
1880:デバッグ出力:WM_SIZE Position 3
6240:デバッグ出力:WM_SIZE Position 1
6258:デバッグ出力:WM_SIZE WindowMaximizedRect( -1289, 47, 9, 1039 ) PrevWindowMaximizeRect( -9, -9, 1929, 1039 )
□で最大化→戻す→■で最大化のログ
2874:デバッグ出力:WM_SIZE Position 1
2897:デバッグ出力:WM_SIZE WindowMaximizedRect( -1289, 47, 9, 1039 ) PrevWindowMaximizeRect( 0, 0, 0, 0 )
2916:デバッグ出力:WM_SIZE Position 3
6026:デバッグ出力:WM_SIZE Position 1
6044:デバッグ出力:WM_SIZE WindowMaximizedRect( -9, -9, 1929, 1039 ) PrevWindowMaximizeRect( -1289, 47, 9, 1039 )
|
Re: SetWindowStyleMode ( No.7 ) |
- 名前:管理人 日時:2015/11/02 02:33
|
Re: SetWindowStyleMode ( No.8 ) |
- 名前:ねこさん 日時:2015/11/02 20:52
試しました
最大化については思った通りの挙動であることを確認できましたがまだいくつかの不具合を見つけました
一つは何回か最大化→戻すを繰り返すとゲーム画面の範囲外で黒く塗りつぶされている所が以下の画像のように荒れます(タイトルバーの上が黒くなっていますがこれは正常です)
ttp://wktk.vip2ch.com/vipper0069.png
ttp://wktk.vip2ch.com/vipper0070.png
もう一つは細かいですが、ノートPCなどでDPIの拡大をしている環境だと
最大化の状態からタイトルバーを掴んで通常ウィンドウに戻した後、マウスのボタンを離さずに移動した時の挙動がおかしいです
もう一つ、SetWindowSizeChangeEnableFlag(TRUE, FALSE);の環境で縁を掴んでウィンドウサイズを変更するととても重くなります
今までは特に負荷はかかっていませんでした
|
Re: SetWindowStyleMode ( No.9 ) |
- 名前:管理人 日時:2015/11/04 03:53
お試しいただきありがとうございます
> 一つは何回か最大化→戻すを繰り返すとゲーム画面の範囲外で黒く塗りつぶされている所が以下の画像のように荒れます(タイトルバーの上が黒くなっていますがこれは正常です)
すみません、Direct3D 11 が使えない環境( Direct3D 9 を使う環境 )でご指摘の現象が発生してしまうようになっていました
修正版をアップしましたので、何度も申し訳ありませんがよろしければお試しください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用
https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用
https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用
https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
> もう一つは細かいですが、ノートPCなどでDPIの拡大をしている環境だと
> 最大化の状態からタイトルバーを掴んで通常ウィンドウに戻した後、マウスのボタンを離さずに移動した時の挙動がおかしいです
Windows10 の環境で DPI の設定を 175% にした状態で最大化状態からタイトルバーを掴んで通常ウインドウに戻すということを
してみましたが、特に問題がありそうな点はありませんでした
具体的にはどのようにおかしいのでしょうか?
あと、こちらも Windows10 での現象でしょうか?
> もう一つ、SetWindowSizeChangeEnableFlag(TRUE, FALSE);の環境で縁を掴んでウィンドウサイズを変更するととても重くなります
> 今までは特に負荷はかかっていませんでした
手元の環境では特に重くなる現象は確認できませんでした
こちらのようなシンプルなプログラムでも重くなってしまうのでしょうか?
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int x, xadd ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
SetWindowSizeChangeEnableFlag( TRUE, FALSE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
SetDrawScreen( DX_SCREEN_BACK ) ;
x = 0 ;
xadd = 8 ;
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
x += xadd ;
if( x < 0 || x >= 640 ) xadd = -xadd ;
DrawBox( x, 0, x + 32, 32, GetColor( 255,255,255 ), TRUE ) ;
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
あと、「今まで」とはNo.7の最大化の方式を変更する前まで、ということでしょうか?
それとも本件の前までねこさんさんが使用されていたバージョンまで、ということでしょうか?
質問ばかりで申し訳ありません・・・
|
Re: SetWindowStyleMode ( No.10 ) |
- 名前:ねこさん 日時:2015/11/04 17:33
>すみません、Direct3D 11 が使えない環境( Direct3D 9 を使う環境 )でご指摘の現象が発生してしまうようになっていました
>修正版をアップしましたので、何度も申し訳ありませんがよろしければお試しください m(_ _;m
Direct3D 11と9の二つで試しましたがまた別の感じの現象が起こりました
ttp://wktk.vip2ch.com/vipper0082.png
> Windows10 の環境で DPI の設定を 175% にした状態で最大化状態からタイトルバーを掴んで通常ウインドウに戻すということを
> してみましたが、特に問題がありそうな点はありませんでした
> 具体的にはどのようにおかしいのでしょうか?
> あと、こちらも Windows10 での現象でしょうか?
はい。Windows10での現象です
色々試した結果、解像度の大きいディスプレイで最大化→戻す→小さなディスプレイで最大化の後になるようです
具体的に言うとマウスを動かしてもウィンドウの移動がちょっとずつしか動かないようになります
一度左ボタンを離してしまえばちゃんと動くようになります
ただ、あの後「Windows 10 DPI Fix」というソフトを導入して8.1のスケーリング処理に差し替えたらちゃんと動作するようになったので
Windows10固有の問題かもしれません
> 手元の環境では特に重くなる現象は確認できませんでした
> こちらのようなシンプルなプログラムでも重くなってしまうのでしょうか?
重いというと少し語弊がありました
リサイズ時の枠の描画がカクカクするといった感じです
前のバージョンのDXライブラリを保存していないので比較はできませんが
貼っていただいたプログラムでも発生しました
こちらはWindows8.1の環境でもテストしましたが同じく発生しました
ただ私が作っていたプログラムに比べるとカクカク度合いは少ないので
行っている処理によって変わるのだと思われます
> あと、「今まで」とはNo.7の最大化の方式を変更する前まで、ということでしょうか?
> それとも本件の前までねこさんさんが使用されていたバージョンまで、ということでしょうか?
言葉が足らずすみません
今確認できるのはNo.1の修正版でコンパイルしたもののみですが
カクカクが気になったのは最大化方式を変更したバージョンをコンパイルした直後なので
おそらくNo.7の最大化の方式を変更する前までだと思います
|
Re: SetWindowStyleMode ( No.11 ) |
- 名前:管理人 日時:2015/11/08 03:49
ご返信が遅くなり申し訳ありません
> Direct3D 11と9の二つで試しましたがまた別の感じの現象が起こりました
> ttp://wktk.vip2ch.com/vipper0082.png
No.8でアップしていただいた http://wktk.vip2ch.com/vipper0070.png と同じ現象に
見えるのですが、No.9 の変更では何も変化がなかったということでしょうか?
あと、もしよろしければこちらの現象が発生した際の Log.txt の内容をこちらの
掲示板に丸ごと貼り付けていただけないでしょうか?
あと、現在他に二つ動作の問題が発生していますが、とりあえずまずはこちらの問題
( ゲーム画面範囲外にも表示されてしまう問題 )の解決を目指したいと思いますので、
他の問題はこちらが解決するまで保留とさせてください m(_ _;m
|
Re: SetWindowStyleMode ( No.12 ) |
- 名前:ねこさん 日時:2015/11/09 01:05
お忙しい中対応ありがとうございます
画面外の領域が荒れる件ですが
このような操作をしたらこうなる、と荒れるパターンが固定化されていたのが
No9でその荒れ方が変わりました
また管理人さんはDirect3D 11 が使えない環境とおっしゃっていましたが、オンボードではありましたが
11で動作させてもなったので違う要因なのかなと推測しました
ウィンドウを最大化させた時に画面の表示座標を真ん中に変えていると思うのですが
最大化させる直前に表示していた画像が原点に残ったまま今の画面の後ろに描画されてしまっているようです
以下ログです
0:ChangeWindowMode実行
5:ウインドウモードフラグが立てられました
28:ChangeWindowMode実行
39:DXライブラリの初期化処理開始
48: システムの情報を出力します
57: DXライブラリ Ver3.15d
67: 論理プロセッサの数 : 8
76: OS Windows10 ( Build 10240 )
194: 現時点のCPU動作速度:大体2.48GHz
203: MMX命令を使用します
212: SSE命令が使用可能です
220: SSE2命令が使用可能です
232: CPUベンダ:GenuineIntel
275: CPU名:Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
284: COMの初期化... 成功しました
308: メモリ総量:8110.94MB 空きメモリ領域:5467.07MB
317: タイマーの精度を検査します
327: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
335: パフォーマンスカウンターを使用します タイマー精度 : 2435.775000 KHz
358: ソフトの二重起動検査... 二重起動はされていませんでした
383: ウインドウクラスを登録します... 登録に成功しました
400: ウインドウモード起動用のウインドウを作成します
409: ディスプレイ情報のセットアップ開始
417: モニターの数:2 ディスプレイデバイスの数:4
426: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 59Hz
435: No.1 モニター名:\\.\DISPLAY2 1280x1024 32bit 60Hz
469: ディスプレイ情報のセットアップ完了
479: ウインドウの作成に成功しました
489: ウインドウを表示します
506: IMEを無効にしました
515: ウインドウスタイルをウインドウモード用に変更します... 完了
556: DirectInput関係初期化処理
565: XInput DLL の読み込み中... 成功
595: DirectInput7 の取得中... 成功
667: 引き続き初期化処理... 初期化成功
712: ジョイパッドの初期化...
731: ジョイパッドの初期化は正常に終了しました
741: マウスデバイスの初期化... 初期化成功
760: キーボードデバイスの初期化... 初期化成功
780: DirectInput 関連の初期化は正常に終了しました
795: DirectSound の初期化を行います
804: DirectSound インターフェースの取得を行います.... 成功
824: 引き続きインターフェースの初期化処理... 成功
885: DirectSound デバイスを列挙します
895: Module Name : Description : プライマリ サウンド ドライバー
905: Module Name : {0.0.0.00000000}.{f16c6520-ca56-431e-aa61-36cfdb3a16ec} Description : スピーカー (Realtek High Definition Audio)
919: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
935: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB
949: 利用可能サンプリング精度
962: Primary 16bit = OK 8bit = OK
975: Secondary 16bit = OK 8bit = OK
985: 利用可能チャンネル
1001: Primary MONO = OK STEREO = OK
1010: Secondary MONO = OK STEREO = OK
1020: DirectSound の初期化は正常に終了しました
1029: d3d11.dll の読み込み.... 成功
1052: dxgi.dll の読み込み.... 成功
1071: API CreateDXGIFactory のアドレスを取得します.... 成功
1089: IDXGIFactory を作成します.... 成功
1115: API D3D11CreateDevice のアドレスを取得します.... 成功
1137: IDXGIAdapter を取得します.... 成功
1156: Direct3D 11 FeatureLevel 11_0 以上を対象とします
1166: ID3D11Device オブジェクトを取得します.... 成功
1203: IDXGIDevice1 を取得します.... 成功
1223: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました
1233: [ウインドウモード] IDXGISwapChain を作成します.... 成功
1263: IDXGIOutput を取得します.... 成功
1281: スワップチェインのバッファの ID3D11Texture2D を取得します.... 成功
1299: スワップチェインのバッファの ID3D11ShaderResourceView を作成します.... 成功
1320: スワップチェインのバッファの ID3D11RenderTargetView を作成します.... 成功
1341: Graphics Device:Intel(R) HD Graphics 4600
1351: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1362: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です
1372: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です
1382: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です
1399: カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1417: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です
1430: DXT2テクスチャフォーマットは使えません
1443: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です
1457: DXT4テクスチャフォーマットは使えません
1471: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です
1485: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
1498: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
1513: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1529: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
1547: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
1564: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1574: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1587: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1600: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1614: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1626: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1640: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1653: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1670: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1683: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1
1695: 同時にレンダリングできるバッファの数:8
1708: 最大テクスチャサイズ 幅:16384 高さ:16384
1718: 深度バッファを作成します.... 成功
1738: シェーダーコード関係の初期化.... 成功
1825: 各種シェーダー用定数バッファの作成.... 成功
1876: 各種 ID3D11InputLayout の作成.... 成功
1905: 標準描画用の頂点バッファの作成.... 成功
1997: 画像の単純転送処理の初期化... 成功
2055: フォントの初期化を行います
2074: フォントの初期化は正常に終了しました
2102: 文字コードバッファの初期化を行います... 完了しました
2165:DXライブラリの初期化処理終了
4548:スワップチェインのバッファの ID3D11Texture2D を取得します.... 成功
4577:スワップチェインのバッファの ID3D11ShaderResourceView を作成します.... 成功
4602:スワップチェインのバッファの ID3D11RenderTargetView を作成します.... 成功
5517:スワップチェインのバッファの ID3D11Texture2D を取得します.... 成功
5558:スワップチェインのバッファの ID3D11ShaderResourceView を作成します.... 成功
5584:スワップチェインのバッファの ID3D11RenderTargetView を作成します.... 成功
6757:ウインドウを閉じようとしています
7966:フォントの初期化を行います
7984:フォントの初期化は正常に終了しました
8030:d3d11.dll の解放 1
8040:dxgi.dll の解放 1
8050:Direct3D11 のオブジェクト数を出力
8059:Direct3D11 のオブジェクト合計数 : 0
8070:DirectInput 関連の終了処理... 完了
8099:DirectSound の終了処理は正常に終了しました
8109:ウインドウを閉じようとしています
8128:ウインドウが破棄されようとしています
8138:ソフトを終了する準備が整いました
8216:
8228:Alloc memory dump
8237: Total size:0(0.000kb) Alloc num:0
8248:
|
Re: SetWindowStyleMode ( No.13 ) |
- 名前:管理人 日時:2015/11/10 00:45
|
Re: SetWindowStyleMode ( No.14 ) |
- 名前:ねこさん 日時:2015/11/10 08:20
Direct3D 11で問題がなく動作する事を確認しました
とりあえずとおっしゃっていたのでまだ手を付けていないだけだと思うのですが
9や9Exではまだバグが発生しています
ttp://wktk.vip2ch.com/vipper0082.png
はDirect3D 11 時のSSです
|
Re: SetWindowStyleMode ( No.15 ) |
- 名前:管理人 日時:2015/11/11 01:26
|
Re: SetWindowStyleMode ( No.16 ) |
- 名前:ねこさん 日時:2015/11/11 01:47
試しましたところ、9や9EXにおいてもちゃんと動作する事が確認できました
いくつもいくつも申し訳ないのですが
今複数のバージョンのDirext3Dに切り替えていたところ、Direct3D 11で最大化時の処理遅れ?(ウィンドウが最大化した直後、零点何秒くらい画面がスケーリングされないまま残る)が気になりました
他と比べなければバグというほどではないのですが
9や9EXでは最大化とともに画面もスケーリングされてスムーズに画面推移するので
もしかしたら意図していない動作になっているのかもしれないので一応書いておきます
|
Re: SetWindowStyleMode ( No.17 ) |
- 名前:管理人 日時:2015/11/12 00:49
お試しいただきありがとうございます、正常に動作したようで何よりです
> Direct3D 11で最大化時の処理遅れ?(ウィンドウが最大化した直後、零点何秒くらい画面がスケーリングされないまま残る)が気になりました
私の手元では Direct3D 11 も最大化時の処理の遅れは確認できませんでしたが、
Direct3D 9 と Direct3D 11 ではかなり処理が異なるので、Direct3D 11 は Direct3D 9 に比べて
ウインドウのサイズが変更された際の処理が重いのが原因かもしれません
なので動作に支障がなければ仕様とさせてください
|