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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0604
ポチDTPコントロールの表示を変更する方法が分かりません3解決


ポチ

リンク

2011/6/4(Sat) 18:26:16|NO.39538

現在、時間指定で音楽を再生するタイマーを作っています(WindowsXP及びWindows7)。
設定できる時間の初期値を現在時刻から5分後にしたいのですが、
DTPコントロールの表示を変更する方法が分かりません。
教えて頂きたいのですが・・・。



dim SYSTEMTIME, 4 pos 90,79 objsize 60,25 winobj "sysdatetimepick32", "", , $50000000 , 120: hDtp.0 = objinfo(stat, 2) pos 37,80 color 0 mes "date" pos 235,82 mes "time" pos 280,80 dim SYSTEMTIME, 4 winobj "sysdatetimepick32", "", , $50000000 | $9, 90 hDtp.2 = objinfo(stat, 2) pos 380,77 objmode 0 objsize 60,30 button "OK",*kakunin stop *kakunin color 255,255,255 boxf 40,124,200,150 repeat 3 sendmsg hDtp.cnt, $1001, , varptr(SYSTEMTIME) if cnt=0{ year5= wpeek(SYSTEMTIME,0) month5= wpeek(SYSTEMTIME,2) day5=wpeek(SYSTEMTIME,6) } if cnt=2{ hour5= wpeek(SYSTEMTIME, 8) minute5=wpeek(SYSTEMTIME, 10) } loop color 0 pos 40,124 mes ""+year5+"/"+month5+"/"+day5+" - " +hour5+":"+minute5 stop


;現在から5分後の時間を取得 #module #deffunc monthendday var prm1,int prm2,int prm3 ; prm1 : 取得用変数, prm2 : 年(yyyy形式), prm3 : 月(mm) nyear = prm2 : if (nyear<=0)|(nyear>3000) : nyear =gettime(0) nMonth = prm3 : if (nMonth<=0)|(nMonth>12) : nMonth =gettime(1) ;▼月末日 md=31,28,31,30,31,30,31,31,30,31,30,31 ;▼うるう年計算 if (((nyear\4=0)&(nyear\100!0))|(nyear\400=0)) { md(1) = 29 } prm1=md(nMonth-1) return 0 #global last=0 year0=int(year0) month0=int(month0) day0=int(day0) hour0=int(hour0) minute0=int(minute0) year0=gettime(0) month0=gettime(1) day0=gettime(3) hour0=gettime(4) minute0=gettime(5) n=year0 m=100*month0+day0 l=100*hour0+minute0 pos 10,10 mes "5分後の時間を表示" pos 10,40 objmode 0 input n,40,30,500:obj1=stat pos 60,40 input m,40,30,500:obj2=stat pos 110,40 input l,40,30,500:obj3=stat pos 200,40 button gosub "OK",*get stop *get year0=n month0=int(m/100) day0=m-100*month0 monthendday lastday,year0,month0 if day0=lastday:last=1 hour0=int(l/100) minute0=l-100*hour0 if minute0<55{ year55=year0 month55=month0 day55=day0 hour55=hour0 minute55=minute0+5 goto *value } if hour0!23{ if minute0>54{ year55=year0 month55=month0 day55=day0 hour55=hour0+1 minute55=minute0-55 goto *value }} if hour0=23{ if minute0>54{ if last!1{ year55=year0 month55=month0 day55=day0+1 hour55=0 minute55=minute0-55 goto *value }} if last=1{ if month0!12{ year55=year0 month55=month0+1 day55=1 hour55=0 minute55=minute0-55 goto *value }} if month0=12{ year55=year0+1 month55=1 day55=1 hour55=0 minute55=minute0-55 goto *value }} *value objmode 0 n=year55 m=100*month55+day55 l=100*hour55+minute55 objprm obj1,""+n objprm obj2,""+m objprm obj3,""+l return



この記事に返信する


さくら

リンク

2011/6/4(Sat) 21:01:45|NO.39541

少しだけ取得や設定のヒントを提示します。
自分のスクリプトに当てはめて見て下さい。


hwndDate = hDtp.0 // winobjで作成した(MC type)のハンドル hwndTime = hDtp.2 // winobjで作成した(DTP type)のハンドル ;***** (例)取得の場合 ***** ;prm1(0)〜prm1(6)までを文字列として編集 ;yyyy年mm月dd日XX曜日 hh:mm:ss 形式として取得 ; #define DTM_GETSYSTEMTIME $00001001 dim st,8 sendmsg hwndDate,DTM_GETSYSTEMTIME,0,varptr(st) week="日","月","火","水","木","金","土" ;文字列として編集した形式で取得値を返す ;年,月,日,曜日 prm1(0) = str(wpeek(st,0))+"年" prm1(1) = strf("%02d",peek (st,2))+"月" prm1(2) = strf("%02d",peek (st,6))+"日" prm1(3) = " "+week(peek (st,4))+"曜日" sendmsg hwndTime,DTM_GETSYSTEMTIME,0,varptr(st) ;時,分,秒 prm1(4) = " "+strf("%02d",peek (st,8))+":" prm1(5) = strf("%02d",peek (st,10))+":" prm1(6) = strf("%02d",peek (st,12)) ;***** (例)設定の場合 ***** ;年 ,月 ,日 ,時 ,分 ,秒の形式で5分後のデータを渡す ;nYear,nMonth,nDay,nHH,nMM,nSS ; #define DTM_SETSYSTEMTIME $00001002 dim st,8 ;SystemTime構造体 wpoke st,0, nYear ;年 poke st,2, nMonth ;月 poke st,6, nDay ;日 poke st,8, nHH ;時 poke st,10,nMM ;分 poke st,12,nSS ;秒 sendmsg hwndDate,DTM_SETSYSTEMTIME,0,varptr(st) sendmsg hwndTime,DTM_SETSYSTEMTIME,0,varptr(st)



さくら

リンク

2011/6/4(Sat) 21:47:32|NO.39543

コメント部分を少し間違えました。

(誤)
> hwndDate = hDtp.0 // winobjで作成した(MC type)のハンドル
> hwndTime = hDtp.2 // winobjで作成した(DTP type)のハンドル

(正)
hwndDate = hDtp.0 // winobjで作成した(DTP type)のカレンダ部分のハンドル
hwndTime = hDtp.2 // winobjで作成した(DTP type)の時刻部分のハンドル
※hwndDateを直接書き換えて、hDtp.0としても良い
hwndTimeを直接書き換えて、hDtp.2としても良い

>;年 ,月 ,日 ,時 ,分 ,秒の形式で5分後のデータを渡す

指定した西暦日付と任意の時刻 (5分後であればその時刻)

#追記
モジュールにすると便利だと思います。



ポチ

リンク

2011/6/4(Sat) 23:55:52|NO.39545

出来ました。ありがとうございます!!




;5分後の時刻を表示 #module #deffunc monthendday var prm1,int prm2,int prm3 ; prm1 : 取得用変数, prm2 : 年(yyyy形式), prm3 : 月(mm) nyear = prm2 : if (nyear<=0)|(nyear>3000) : nyear =gettime(0) nMonth = prm3 : if (nMonth<=0)|(nMonth>12) : nMonth =gettime(1) ;▼月末日 md=31,28,31,30,31,30,31,31,30,31,30,31 ;▼うるう年計算 if (((nyear\4=0)&(nyear\100!0))|(nyear\400=0)) { md(1) = 29 } prm1=md(nMonth-1) return 0 #global last=0 year0=gettime(0) month0=gettime(1) day0=gettime(3) hour0=gettime(4) minute0=gettime(5) monthendday lastday,year0,month0 if day0=lastday:last=1 if minute0<55{ year55=year0 month55=month0 day55=day0 hour55=hour0 minute55=minute0+5 goto *value } if hour0!23{ if minute0>54{ year55=year0 month55=month0 day55=day0 hour55=hour0+1 minute55=minute0-55 goto *value }} if hour0=23{ if minute0>54{ if last!1{ year55=year0 month55=month0 day55=day0+1 hour55=0 minute55=minute0-55 goto *value }} if last=1{ if month0!12{ year55=year0 month55=month0+1 day55=1 hour55=0 minute55=minute0-55 goto *value }} if month0=12{ year55=year0+1 month55=1 day55=1 hour55=0 minute55=minute0-55 goto *value }} *value dim SYSTEMTIME, 4 pos 90,79 objsize 60,25 #define DTM_SETSYSTEMTIME $00001002 dim st,8 ;SystemTime構造体 wpoke st,0, year55 ;年 poke st,2, month55 ;月 poke st,6, day55 ;日 poke st,8, hour55 ;時 poke st,10,minute55 ;分 poke st,12,0 ;秒 winobj "sysdatetimepick32", "", , $50000000 , 120: hDtp.0 = objinfo(stat, 2) pos 37,80 color 0 mes "date" pos 235,82 mes "time" pos 280,80 dim SYSTEMTIME, 4 winobj "sysdatetimepick32", "", , $50000000 | $9, 90 hDtp.2 = objinfo(stat, 2) sendmsg hDtp.0,DTM_SETSYSTEMTIME,0,varptr(st) sendmsg hDtp.2,DTM_SETSYSTEMTIME,0,varptr(st) pos 380,77 objmode 0 objsize 60,30 button "OK",*kakunin stop *kakunin color 255,255,255 boxf 40,124,200,150 repeat 3 sendmsg hDtp.cnt, $1001, , varptr(SYSTEMTIME) if cnt=0{ year5= wpeek(SYSTEMTIME,0) month5= wpeek(SYSTEMTIME,2) day5=wpeek(SYSTEMTIME,6) } if cnt=2{ hour5= wpeek(SYSTEMTIME, 8) minute5=wpeek(SYSTEMTIME, 10) } loop color 0 pos 40,124 mes ""+year5+"/"+month5+"/"+day5+" - " +hour5+":"+minute5 stop



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