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) のままでも,プライマリモニタ以外のモニタが,
# 右側と下側であれば正常に動作します.
|
|