Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/02/10 (金)

フルスクリーンにしたい!

| 14:27 | フルスクリーンにしたい! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - フルスクリーンにしたい! - 雪乃☆雫のなでしこ日和 フルスクリーンにしたい! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 ちょっとまたカメラに戻って、問題の、スタイル指定ですが・・・

 だんだんメッセージ送信だらけなのが、個人的にイヤになったのと、英語はイヤと言っても結局のところ定数は使った方が、後でケンサクするのに便利でしょってわけで、っくり書き換えていたら、なんだか分かんないケド、「枠固定」も、最大化ボタンや最小化ボタンの有効変更も、ふつーに通ったんだよね。

 気のせいだったのか?!・・っと思ったけれど、元のコードではやっぱり動かないんだよね。

 謎。なんだか、わけ分からん(?_?)

 しかも結局、フルスクリーンは出来なかったんですよ。

 カメラ接続前なら、「枠なし」もできたんだけど、カメラ接続後に「枠固定」から「枠なし」に変更すると、やっぱり切断されてしまうっぽい。

 むむむ~。


 それなら、ウィンドウのクライアント幅と高さをデスクトップWとHにして、位置を枠やタイトルバーの分マイナスに設定すれば、一見それっぽくなるだろう・・・と考えたんだけど、コレも出来なかった><

 ウィンドウの最大サイズには上限があるらしく、何を設定しても1370*753以上にはならないんだよね。(解像度が1366*768の場合)

 幅はいいけど、高さが足りない><

 でもまー、とりあえずコレでっ!!(えっ;)

 だって、APIを使えばなんとか出来そうな気もするけど、旧版のなでしこでは、んな苦労しなくても、ふつーに「枠なし」に変更ができるんだもん!


 それよりもっと重要なのが、キャプチャーウィンドウのサイズ変更です。

 これは、窓ハンドルサイズ設定でカンタンに出来るだろうとおもったら、出来なかった。

 これまた、切断(?)されてしまう。

 APIで作ったヤツっていうのは、何かっちゅうと、うまくできないんだねヽ(;´Д`)ノ

 さて、こで、発見してきたのが、SetWindowPosとゆうAPI。

 APIで作ったヤツは、APIで何とかするしかないってこったろう・・・

 「配列順序のハンドル」も、「ウィンドウ位置のオプション」も、なんだかよくわかんないけど、取りあえず無視する!

 そうすると、単にX,Y,W,Hを指定するだけ。

 ちなみに、窓ハンドルサイズ設定のX1,y1,x2,y2より、こっちのほうが、ワタシ的には感覚的に分かりやすくて助かる。

#-----------------------------------------------------------
#https://msdn.microsoft.com/ja-jp/library/cc411206.aspx
●SetWindowPos(hWnd,hWndInsertAfter,X,Y,cx,cy,uFlags) =DLL("user32.dll",
"BOOL SetWindowPos(
HWND hWnd,             // ウィンドウのハンドル
HWND hWndInsertAfter,  // 配置順序のハンドル…?
int X,                 // 横方向の位置
int Y,                 // 縦方向の位置
int cx,                // 幅
int cy,                // 高さ
UINT uFlags            // ウィンドウ位置のオプション
)")

●窓ハンドル位置サイズ設定(ハンドルにX,Y,W,Hを)
  SetWindowPos(ハンドル,0,X,Y,W,H,0)
#-----------------------------------------------------------

 これで・・・

#-----------------------------------------------------------
母艦のクライアント幅はデスクトップW母艦のクライアント高さはデスクトップH。
CWハンドルに0,0,母艦のクライアント幅,母艦のクライアント高さを窓ハンドル位置サイズ設定。
CWハンドルをオンにスケーリングフラグ設定。


!WM_CAP_SET_SCALEとは整数=$400+53                # 画像をキャプチャーウィンドウに合わせて拡縮(オンオフ)
●スケーリングフラグ設定(ハンドルをfに)
  メッセージ送信(ハンドル,WM_CAP_SET_SCALE,f,0)      # f=オンオフ
#-----------------------------------------------------------

 できた~♪♪♪

 でも・・・

 分かってたけど、640*480の映像を1366*768のデスクトップに合わせてるので、横長にみょーんと引き延ばされてしまうのです;

 非HD時代のテレビの再放送みたいに、レターボックスにするか、幅をデスクトップ幅に合わせて、上下を切って表示(できるのかな?)する感じ?

ゲスト



トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170210