goo blog サービス終了のお知らせ 
goo

「gettime」で時刻表示

カテゴリー: HSP Ver2.61 ・ ブログ関連 ・・・ 人気blogランキング

「gettime」
現在の年、月、日、曜日、時、分、秒、ミリ秒を取得します。
gettime p1,p2
p2に以下左の数値をいれると
以下右の数値がp1に代入されます。

0 年(Year)
1 月(Month)
2 曜日(DayOfWeek)
3 日(Day)
4 時(Hour)
5 分(Minute)
6 秒(Second)
7 ミリ秒(Milliseconds)
アラーム時計サンプル
    screen 0,250,20 : title "アラーム時計サンプル"
    font "",12
    color : boxf
    dim time,8
    sdim week,2,7
    sdim timedata,64
    week="日","月","火","水","木","金","土"

    objsize 40,20
    pos 210,0 : button "♪",*set
*main
    redraw 0
    gettime time.0,0
    gettime time.1,1
    gettime day,2
    gettime time.2,3
    gettime time.3,4
    gettime time.4,5
    gettime time.5,6
    gettime time.6,7
    color : boxf
    color 255,255,255
    timedata=""+time.0+"/"+time.1+"/"+time.2
    timedata+="("+week.day+") "
    timedata+=""+time.3+":"+time.4+":"+time.5+"."+time.6
    pos 5,5 :mes ""+timedata
    redraw 1
    if (time.3=a)&(time.4=b):a=-1:b=-1:dialog "時間ですよ"
    wait 10
goto *main

*set
    screen 2,170,40 : title "アラーム設定"
    cls 1 : font "",12
    color
    a=time.3 : b=time.4+1
    pos 50,15 : mes "時"
    pos 110,15 : mes "分"
    pos 10,10:input a,30,20
    pos 70,10:input b,30,20
    objsize 40,20 : pos 130,10
    button "OK",*ok
stop
*ok
    gsel 2,-1
    gsel 0
goto *main
実行結果
コメント ( 0 ) | Trackback ( 0 )

ステルスっぽいウィンドウ作成

カテゴリー: HSP Ver2.61 ・ ブログ関連 ・・・ 人気blogランキング

マウスが近づくと消えるウィンドウ作成
他のソフト作業中でもマウスが近づくと
ウィンドウが消えるシャイなウィンドウです。

ginfo 3でウィンドウ右下のスクリーンサイズを取得して
クライアント領域にマウスが来たときに
gsel 0,-1でウィンドウを隠しています。
方法としてはいまいちです。
「gettime」に関してはこちらを参照。
    screen 0,620,70 : title "時刻"
    color : boxf
    font "",64
    flag=0
*main
    ginfo 3:hide=prmx-winx,prmy-winy,prmx,prmy
    ginfo 0
    if (hide.0<prmx)&(hide.2>prmx)&(hide.1<prmy)&(hide.3>prmy){
        gsel 0,-1:flag=1
    }
    else{
        if flag=1 : flag=0 : gsel 0,1
    }

    redraw 0
        color:boxf
        color 255,255,255
        gettime time.0,0
        gettime time.1,1
        gettime time.2,3
        gettime time.3,4
        gettime time.4,5
        gettime time.5,6
        pos 5,5
        mes ""+time.0+"/"+time.1+"/"+time.2+" "+time.3+":"+time.4+":"+time.5
    redraw 1
    wait 10
goto *main
実行結果
クライアント領域にマウスが移動するとウィンドウが消えます。
それ以外は表示したままです。
コメント ( 0 ) | Trackback ( 0 )

半透明のウィンドウ作成

カテゴリー: HSP Ver2.61 ・ ブログ関連 ・・・ 人気blogランキング

半透明のウィンドウ作成
ウィンドウ全体を半透明にすることで、
隠れていた下を見る事ができます。
半透明にした所で利用用途はあまり思いつきませんが・・・
アクセサリー的なソフトくらいでしょうか。
作成方法
  1. 「GetWindowLongA」で現在の拡張ウィンドウスタイルGWL_EXSTYLE(-20)を取得します。
    パラメーターは①ウィンドウハンドル、②取得する値(今回は-20)の2つです。
  2. WS_EX_LAYERED(0x00080000)を1の値と足して「SetWindowLongA」を使用します。
    この状態でウィンドウは透明化できるようになりました。
    パラメーターは①ウィンドウハンドル、②変更する値(今回は-20)、③新しい値の3つです。
  3. 「SetLayeredWindowAttributes」命令で透明化します。
    パラメーターは①ウィンドウハンドル、②色を指定して半透明にしたい場合カラーキーの値、③アルファ値(0~255)0で完全に消えます。、④②の設定を使う場合1、③の設定を使う場合は2
透明ウィンドウサンプル
参照(「gettime」 、マウスが近づくと消えるウィンドウ
透明率指定の箇所の120を変更することで透明率が変わります
#include "llmod.as"
    screen 0,580,70:title "透明ウィンドウサンプル"
    font "",64
    mref bmscr,67
    prm=bmscr.13,-20
    dllproc "GetWindowLongA",prm,2,D_USER

    prm.0=bmscr.13
    prm.1=-20
    prm.2=dllret|0x00080000
    dllproc "SetWindowLongA",prm,3,D_USER

    //透明率指定
    prm=bmscr.13,0,120,2
    dllproc "SetLayeredWindowAttributes",prm,4,D_USER

    flag=0
*main
    ginfo 3:hide=prmx-winx,prmy-winy,prmx,prmy
    ginfo 0
    if (hide.0<prmx)&(hide.2>prmx)&(hide.1<prmy)&(hide.3>prmy){
        gsel 0,-1:flag=1
    }
    else{
        if flag=1 : flag=0 : gsel 0,1
    }

    redraw 0
        color:boxf
        color 255,255,255
        gettime time.0,0
        gettime time.1,1
        gettime time.2,3
        gettime time.3,4
        gettime time.4,5
        gettime time.5,6
        pos 5,5
        mes ""+time.0+"/"+time.1+"/"+time.2+" "+time.3+":"+time.4+":"+time.5
    redraw 1
    wait 10
goto *main
コメント ( 0 ) | Trackback ( 0 )

乱数について

一覧リスト:HSP Ver2.61 ブログ関連 ・・・ 人気blogランキング


乱数は、ゲーム作成等に使用されます。
そのほかの使用例として、 ファイルの暗号化 もあります。

乱数を発生させる方法
  1. 「randomize」命令を使用する
    randomize p1
    p1(乱数の初期パラメーター):0~(不定)を指定
    指定しない場合はWINDOWSタイマの値が使用されるために
    「rnd」命令使用毎に数値が変化します。
    する場合はp1の数値が同じなら「rnd」命令の結果は同じです。
  2. 「rnd」命令を使用する
    rnd p1,p2
    p1:乱数の結果が代入される変数
    p2:乱数の最大値(1~32768)
    例)rnd r,10
      rに0~9の数値が代入されます

乱数発生サンプル
初期パラメータを空白にするとWINDOWSタイマの値になります
※重要箇所は青文字にしています
    screen 0,300,300 : title "乱数テスト"

    sdim mb,65536
    ip1="" : ip2=""

    objsize winx,25
    color 192,192,192 : boxf
    color
    pos   5 , 28 : mes "初期パラメーター:"
    pos   5 , 53 : mes "乱数の最大値  :"
    pos   0 ,  0 : button "乱数発生",*ransuu
    pos 150 , 25 : input ip1,100,25
    pos 150 , 50 : input ip2,100,25
    pos   0 , 75 : mesbox mb,winx,winy-75,1
stop

*ransuu
    int ip2
    if ip2>32768 : ip2=32768
    if ip2<1     : ip2=1
    mb="" : notesel mb
    if ip1=""{
        //引数が無しの場合、「rnd」の乱数が変化します
        randomize
        noteadd "初期パラメーター:不定な値",-1
    }
    else{
        int ip1
        //引数が同じ場合、「rnd」の乱数は固定です
        randomize ip1
        noteadd "初期パラメーター:"+ip1,-1
    }

    noteadd "乱数の最大値  :"+ip2,-1
    rp=0
    repeat 100,1
        //0から「ip2」-1の数値が「r」に入ります
        rnd r,ip2
        rp+=r
        noteadd ""+cnt+":"+r,-1
    loop
    noteadd "合計:"+rp,0
    objprm 3,mb
    str ip1 : str ip2
stop

実行結果
コメント ( 0 ) | Trackback ( 0 )
« 前ページ 次ページ »