トップページ > 記事閲覧
SetWindowStyleMode
名前:ねこさん 日時: 2015/10/22 20:37

SetWindowStyleMode()の10でデフォルトで小ウィンドウ表示させたいのですがどのようにすれば良いでしょうか? 最大化がデフォルトになってしまいます
メンテ

Page: 1 | 2 |

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

ご返答ありがとうございます > あまり詳しくはないのですが、Windows10では個々のディスプレイに最適な異なる倍率のスケーリングが適用されるらしいです > 8.1にも同様な機能がありましたが、全てのディスプレイを同じ倍率にする方式にも切り替えられました > が、10からその設定が潰されてしまったようです あれ?私の環境では普通に個々のディスプレイのDPIスケーリングを変更できました・・・ ともあれ、遂に私の環境でも現象を再現することができました 最大化する際、最大化ボタンや枠のダブルクリックではなく、枠をモニタの上部に移動して 最大化した場合のみ現象が発生するようです とりあえずその手順で発生するウインドウサイズの不具合を私の環境では発生しないように できたバージョンをアップしましたので、よろしければねこさんさんの環境でも現象が 発生しなくなるかお試しになってみてください 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)」をして下さい)
メンテ
Re: SetWindowStyleMode ( No.36 )
名前:ねこさん 日時:2015/11/28 13:07

私の環境でもちゃんとした挙動になっている事を確認しました 試してみたら、勘違いしていたようでDPIスケーリング個別に変更できました…… お騒がせしてすみません お忙しい中、長々と対応ありがとうございました
メンテ
Re: SetWindowStyleMode ( No.37 )
名前:ねこさん(解決) 日時:2015/11/28 13:10

すみません 解決つけ忘れです
メンテ

Page: 1 | 2 |

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

   クッキー保存