HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0504
らんぶたマウスについてくる四角2解決


らんぶた

リンク

2015/5/4(Mon) 16:18:10|NO.68980

マウスについてくるこれをHSPでウィンドウ外でも再現したいのですが
http://s1.gazo.cc/up/131803.gif

もっとも処理が軽く簡単に表示出来る方法はありますでしょうか?
マウスの座標を取得して透過bgscrに比例させる方法も考えたのですが重いような気がしました。



この記事に返信する


スペース(HSP歴3年)

リンク

2015/5/4(Mon) 17:30:48|NO.68981

選択して何をしたいのかを書くと答えてくれる人が増えると思いますよ。
ちなみにこんな方法もあります。かなり前に作ったやつをつぎはぎしただけなので無駄に長いと思いますが。


#uselib "gdi32.dll" #cfunc CreateDC "CreateDCA" sptr,sptr,sptr,int #func DeleteDC "DeleteDC" int #func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int #define NULL 0 #define SRCCOPY 0x00CC0020 #define CAPTUREBLT 0x40000000 ; ウィンドウ非表示 screen 0, 150, 50 : gsel 0, -1 wait 50 ; デスクトップ画面のサイズでバッファ画面を作成 sx = ginfo_dispx : sy = ginfo_dispy buffer 2, sx, sy ; デスクトップ画面のデバイスコンテキスト取得 hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL) ; デスクトップ画面の画像をコピー BitBlt hdc, 0, 0, sx, sy, hdcScreen, 0, 0, SRCCOPY | CAPTUREBLT ; デバイスコンテキスト削除 DeleteDC hdcScreen bgscr 0, sx, sy,0,0,0 color 10,10,10:boxf gmode 3,sx,sy,150:pos 0,0:gcopy 2,0,0,sx,sy repeat mx=mousex my=mousey getkey esc,27:if esc=1:end getkey 左クリック,1 getkey Enter,13 redraw 0 if 左クリックbac=0&左クリック=1:開始x=mx:開始y=my if 左クリック=1&開始x<mx&開始y<my:{//左上から右下 boxf gmode 3,sx,sy,150:pos 0,0:gcopy 2,0,0,sx,sy gmode 3,sx,sy,255:pos 開始x,開始y:gcopy 2,開始x,開始y,mx-開始x,my-開始y 範囲選択フラグ=1 範囲左上x=開始x 範囲左上y=開始y 範囲右下x=mx-開始x 範囲右下y=my-開始y 範囲選択フラグ=1 } if 左クリック=1&開始x<mx&開始y>my:{//左下から右上 boxf gmode 3,sx,sy,150:pos 0,0:gcopy 2,0,0,sx,sy gmode 3,sx,sy,255:pos 開始x,my:gcopy 2,開始x,開始y+(my-開始y),mx-開始x,開始y-my 範囲選択フラグ=1 範囲左上x=開始x 範囲左上y=開始y+(my-開始y) 範囲右下x=mx-開始x 範囲右下y=開始y-my 範囲選択フラグ=1 } if 左クリック=1&開始x>mx&開始y<my:{//右上から左下 boxf gmode 3,sx,sy,150:pos 0,0:gcopy 2,0,0,sx,sy gmode 3,sx,sy,255:pos mx,開始y:gcopy 2,開始x+(mx-開始x),開始y,開始x-mx,my-開始y 範囲選択フラグ=1 範囲左上x=開始x+(mx-開始x) 範囲左上y=開始y 範囲右下x=開始x-mx 範囲右下y=my-開始y 範囲選択フラグ=1 } if 左クリック=1&開始x>mx&開始y>my:{//右下から左上 boxf gmode 3,sx,sy,150:pos 0,0:gcopy 2,0,0,sx,sy gmode 3,sx,sy,255:pos mx,my:gcopy 2,mx,my,開始x-mx,開始y-my 範囲選択フラグ=1 範囲左上x=mx 範囲左上y=my 範囲右下x=開始x-mx 範囲右下y=開始y-my 範囲選択フラグ=1 } if 範囲選択フラグbac=0&範囲選択フラグ=1:mouse -1 if Enter=1&範囲選択フラグ=1&アップタイミング=0:break if 範囲選択フラグ=1&アップタイミング=1&左クリック=0&左クリックbac=1:break if 範囲選択フラグ=1&左クリック=0&左クリックbac=1:mouse if 左クリックbac=0&左クリック=1:範囲選択フラグ=0 redraw 1 左クリックbac=左クリック 範囲選択フラグbac=範囲選択フラグ await loop



らんぶた

リンク

2015/5/4(Mon) 20:46:52|NO.68983

>>スペース(HSP歴3年)
おお、これです!
ありがとうございます!!



ONION software Copyright 1997-2023(c) All rights reserved.