Sub 識別名_Timer(TimerID As DWord)
End Sub
と言うのを「識別名ファイル.abp」以外のファイルに記入すると動作しないのですが、これは仕様なのでしょうか?
(MainWnd.sbpに通常は記入しますが、新しくWindowTimer.abpにSub 識別名_Timer~と記入してSetTimerで呼び出しても動作しない)
処理が多いので別のファイルに記入して見やすくしたいのですが・・・
SetTimerで
Re: SetTimerで
こんばんは、てふろんです。
恐らく仕様でしょう。
MainWnd.sbp しか見ないのはたしかに不便ではありますが、
callback.wbp はプロジェクトエディタで管理されていると思うので、
ファイル全てを字句検索して callback.wbp の更新をするとなると、
場合によってはコンパイル速度にかなり影響がでそうな気がします。
(コンパイラとは別なので字句解析が二度手間になる可能性が...)
MainWnd.sbp が肥大化するのが問題なのでしたら、WM_TIMER に限らず、
イベントプロシージャからそのまま別のプロシージャを呼び出すよう、
コードを書きかえる事で問題は解決するかなぁとも思います。
これだけでも MainWnd.sbp はすっきりすると思います。
恐らく仕様でしょう。
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
-
- 記事: 205
- 登録日時: 2005年5月31日(火) 13:31
- お住まい: 大阪市
Re: SetTimerで
>
>
> これだけでも MainWnd.sbp はすっきりすると思います。
そうですね、そうしてみます。
てふろんさん、ありがとうございます。
コード: 全て選択
> ' 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 はすっきりすると思います。
そうですね、そうしてみます。
てふろんさん、ありがとうございます。
-
- 記事: 72
- 登録日時: 2005年6月04日(土) 10:09
Re: SetTimerで
とりあえず.abpを.sbpに変えて(これは本質的ではないですが..)、> (MainWnd.sbpに通常は記入しますが、新しくWindowTimer.abpにSub 識別名_Timer~と記入してSetTimerで呼び出しても動作しない)
プロジェクトビュー→[File]タブの[Source Files]を右クリック→[ファイルを挿入]で先ほどの.sbpファイルを指定すればOKだと思います。
-
- 記事: 205
- 登録日時: 2005年5月31日(火) 13:31
- お住まい: 大阪市
Re: SetTimerで
Tomorrowさん、回答ありがとうございます。
しかし、動作しませんでした。(AB 4.10.00)
やっぱりMainWnd.sbp経由で書くしかないのですかね・・・
しかし、動作しませんでした。(AB 4.10.00)
やっぱりMainWnd.sbp経由で書くしかないのですかね・・・
-
- 記事: 72
- 登録日時: 2005年6月04日(土) 10:09
Re: SetTimerで
よく調べずに答えてしまってすみません。こちらでも動作しなかったです。> Tomorrowさん、回答ありがとうございます。
> しかし、動作しませんでした。(AB 4.10.00)
>
> やっぱりMainWnd.sbp経由で書くしかないのですかね・・・
やはり***_Timer()などのイベント処理関数は***.sbpファイルに書くしかないみたいです。(てふろん さんが答えているように***.sbpから関数を削除するとCallback.wbpからの呼び出し部分も削除されるため)