名前 題名 ▼ 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) のままでも,プライマリモニタ以外のモニタが, > # 右側と下側であれば正常に動作します. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link