喫茶XRAYトップページ

[スレッド全体
]

[9731] マルチモニタ対応とは返信 削除
2016/4/11 (月) 10:31:42 Mr.XRAY
スクリーンキャプチャのアプリをマルチモニタ対応にしました.
で,どうやったらマルチモニタ対応になるのか ?
今日は,喫茶XRAY のお客様だけに,その秘密をお教えいたします.

例えば,キャプチャのテストサンプル

[18-01_デスクトップ画面の任意の矩形領域を選択]
http://mrxray.on.coocan.jp/Delphi/plSamples/368_ScreenCaptureTest.htm#18-01

というのがあります.これも今回マルチモニタ対応にしました.
このコードの中の,ホットキーを押した時の処理の中に

        BitBlt(LDesktopImagForm.Image1.Canvas.Handle,
               0,
               0,
               LDesktopImagForm.Width,
               LDesktopImagForm.Height,
               LScreenDC,
               LDesktopRect.Left,
               LDesktopRect.Top,
               SRCCOPY or CAPTUREBLT);

というのがあります.
このコードは,マルチモニタ対応ですが,以前は,

        BitBlt(LDesktopImagForm.Image1.Canvas.Handle,
               0,
               0,
               LDesktopImagForm.Width,
               LDesktopImagForm.Height,
               LScreenDC,
               0,
               0,
               SRCCOPY or CAPTUREBLT);

となっていました.つまり,キャプチャ開始の左上の座標が (0, 0) でした.
それを,普通に (左端のX座標値, 上端のY座標値) のようにしただけなのです.
そんなこと,最初から分かっているだろう ?
と思うかも知れません.そうなんです.
同じページの上の方のコードはそうなっているんです.

プログラムというのは,実際にやってみないと分からないものです.
これを,Mr.XRAY はドジでアホでおっちょっこちょうと思うか,
つまらん !! と思うか,
よく気づいたと褒めてくれるかは,貴方の性格次第です.ホホホッ.

# 折角なので,ローカル変数などの先頭に L を付けたりの編集はしています.
# 左上の座標が (0, 0) のままでも,プライマリモニタ以外のモニタが,
# 右側と下側であれば正常に動作します.


[9733] Re:マルチモニタ対応とは返信 削除
2016/4/11 (月) 10:41:04 Mr.XRAY
> これを,Mr.XRAY はドジでアホでおっちょっこちょうと思うか,
> つまらん !! と思うか,


笑いたい方はおおいに笑ってくださいませ.
でもね,貴方だって,同じような失敗をするかも知れませんよ (^^)
その時は,是非報告してください.
思いっきり笑ってあげますから.ホホホッ.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82