settimerとkilltimer

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: settimerとkilltimer

by 初心者 » 2006年11月09日(木) 19:06

konisiさん、Mario2さん、のぶあやさん、ゆちポンさん。
動作しました。ありがとうございました。
私、ヘルプのトピックで単語?(文法)を見ながら書いていますが、
どう考えれば理解できるのでしょうかね。
頭が固い???(泣)

by konisi » 2006年11月07日(火) 19:01

あぁ、Time++と言う表記はAB4.2系から可能になったものだったと思います。
AB3系やAB4.1系では使えなかったかと。

by MML » 2006年11月07日(火) 17:35

>確か、"Time++"と言う記述はAB5から可能だったような気がします。
AB4でもOKですよ???

by のぶあや » 2006年11月06日(月) 22:42

>>SetTimer(hMainWnd,1,1000,AddressOf(Timer))  =
>> MainWnd.sbp(46) - [警告] "SetTimer"の第4パラメータが、VoidPtrからDWordに強制変換されています。
>これは"警告"なので一応大丈夫です。
補足ですが、DWord型にキャストすることで[警告]が消せます。

コード: 全て選択

SetTimer(hMainWnd,1,1000,AddressOf(Timer) As DWord)
これはDWord型(32bit整数値)の引数に関数ポインタ(32bit)を代入しているということで、コンパイラが「型が違うのでバグではないか?」とユーザーに警告しているのです。

今回の場合は両方とも32bit整数値で表されているので問題ないのですが、Word型(16bit整数値)にDWord型(32bit整数値)を代入したり、Long型(符号付32bit整数値)に符号無32bit整数値を代入したりする場合は、正常に代入されない場合があります(処理としては正常に行われる)。

前者(Word=DWord)の例え 後者の例え

by Mario2 » 2006年11月06日(月) 20:36

konisiさんではないですが、

>SetTimer(hMainWnd,1,1000,AddressOf(Timer))  =
> MainWnd.sbp(46) - [警告] "SetTimer"の第4パラメータが、VoidPtrからDWordに強制変換されています。
これは"警告"なので一応大丈夫です。

> Time++  =
> MainWnd.sbp(50) - 文法が間違っています

これは
Time=Time+1
とすれば大丈夫かと。
確か、"Time++"と言う記述はAB5から可能だったような気がします。
多分初心者さんはAB4を使っているため、"文法が間違っています"ってエラーが出るんだと思います。

by 初心者 » 2006年11月06日(月) 20:25

konisi様、レスをありがとうございます。
でも、うまく動作しません。

SetTimer(hMainWnd,1,1000,AddressOf(Timer))  =
MainWnd.sbp(46) - [警告] "SetTimer"の第4パラメータが、VoidPtrからDWordに強制変換されています。

Time++  =
MainWnd.sbp(50) - 文法が間違っています

上記でした。
全くの初心者でして勉強中です。
宜しくお願いします。

by konisi » 2006年11月05日(日) 19:59

コード: 全て選択

'-----------------------------------------------------------------------------
'  イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd

' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。

Dim Time As Long
Dim StopFlag As Long

'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数

Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。

	' イベントプロシージャの呼び出しを行います。
	MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function


'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。

Sub MainWnd_Destroy()
	timer_DestroyObjects()'プロジェクト名をtimerにしたためこの名前になった。適切なものに変更しておくこと。
	PostQuitMessage(0)
End Sub

Sub MainWnd_CommandButton1_Click()
	If StopFlag=1 then Exit Sub
	StopFlag=1
	Time=0
	SetWindowText(GetDlgItem(hMainWnd,EditBox1),Str$(Time))
	SetTimer(hMainWnd,1,1000,AddressOf(Timer))
End Sub

Sub Timer()
	Time++
	SetWindowText(GetDlgItem(hMainWnd,EditBox1),Str$(Time))
End Sub

Sub MainWnd_CommandButton2_Click()
	KillTimer(hMainWnd,1)
	StopFlag=0
End Sub
こんな感じですか?

settimerとkilltimer

by 初心者 » 2006年11月05日(日) 18:34

開始ボタンでタイマーを00000秒から開始。
終了ボタンでタイマーを止める。
その時間をエデッタボックスに表示。

settimerとkilltimer命令で出来そうなんですが、書き方がよくわかりません。
教えてください。

ページトップ