SetTimerで

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

SetTimerで

#1 投稿記事 by Mario2 »

Sub 識別名_Timer(TimerID As DWord)

End Sub
と言うのを「識別名ファイル.abp」以外のファイルに記入すると動作しないのですが、これは仕様なのでしょうか?
(MainWnd.sbpに通常は記入しますが、新しくWindowTimer.abpにSub 識別名_Timer~と記入してSetTimerで呼び出しても動作しない)

処理が多いので別のファイルに記入して見やすくしたいのですが・・・
てふろん

Re: SetTimerで

#2 投稿記事 by てふろん »

こんばんは、てふろんです。

恐らく仕様でしょう。

MainWnd.sbp しか見ないのはたしかに不便ではありますが、
callback.wbp はプロジェクトエディタで管理されていると思うので、
ファイル全てを字句検索して callback.wbp の更新をするとなると、
場合によってはコンパイル速度にかなり影響がでそうな気がします。

(コンパイラとは別なので字句解析が二度手間になる可能性が...)

MainWnd.sbp が肥大化するのが問題なのでしたら、WM_TIMER に限らず、
イベントプロシージャからそのまま別のプロシージャを呼び出すよう、
コードを書きかえる事で問題は解決するかなぁとも思います。

コード: 全て選択


' MainWnd.sbp
Sub MainWnd_Create( ByRef CreateStruct As CREATESTRUCT )
OnCreate(CreateStruct)
End Sub

Sub MainWnd_Timer( TimerID As DWord )
OnTimer( TimerID )
End Sub

' 別ファイル1
Sub OnCreate( ByRef CreateStruct As CREATESTRUCT )
End Sub

' 別ファイル2
Sub OnTimer( TimerID As DWord )
End Sub
これだけでも MainWnd.sbp はすっきりすると思います。
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: SetTimerで

#3 投稿記事 by Mario2 »

>

コード: 全て選択


> ' MainWnd.sbp
> Sub MainWnd_Create( ByRef CreateStruct As CREATESTRUCT )
> OnCreate(CreateStruct)
> End Sub
> 
> Sub MainWnd_Timer( TimerID As DWord )
> OnTimer( TimerID )
> End Sub
> 
> ' 別ファイル1
> Sub OnCreate( ByRef CreateStruct As CREATESTRUCT )
> End Sub
> 
> ' 別ファイル2
> Sub OnTimer( TimerID As DWord )
> End Sub
> 
>
> これだけでも MainWnd.sbp はすっきりすると思います。

そうですね、そうしてみます。
てふろんさん、ありがとうございます。
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: SetTimerで

#4 投稿記事 by Tomorrow »

> (MainWnd.sbpに通常は記入しますが、新しくWindowTimer.abpにSub 識別名_Timer~と記入してSetTimerで呼び出しても動作しない)
とりあえず.abpを.sbpに変えて(これは本質的ではないですが..)、
プロジェクトビュー→[File]タブの[Source Files]を右クリック→[ファイルを挿入]で先ほどの.sbpファイルを指定すればOKだと思います。
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: SetTimerで

#5 投稿記事 by Mario2 »

Tomorrowさん、回答ありがとうございます。
しかし、動作しませんでした。(AB 4.10.00)

やっぱりMainWnd.sbp経由で書くしかないのですかね・・・
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: SetTimerで

#6 投稿記事 by Tomorrow »

> Tomorrowさん、回答ありがとうございます。
> しかし、動作しませんでした。(AB 4.10.00)
>
> やっぱりMainWnd.sbp経由で書くしかないのですかね・・・
よく調べずに答えてしまってすみません。こちらでも動作しなかったです。
やはり***_Timer()などのイベント処理関数は***.sbpファイルに書くしかないみたいです。(てふろん さんが答えているように***.sbpから関数を削除するとCallback.wbpからの呼び出し部分も削除されるため)
返信する