プロが教えるわが家の防犯対策術!

はじめまして。
今VBでオセロゲームを作成しているのですが、コンピュータが考えているときにボタンのEnabledをfalseにしてクリックイベントを走らせないようにしています。
デバックなどをするとうまくいくのですが実際プログラムを実行するとどうしてもEnableをTrueにした後にクリックイベントが走ってしまいます。クリックイベントがたまっているようにも見えるのですが何か解決法はあるのでしょうか。よろしくお願いします。

A 回答 (3件)

クリックイベントがあがる前にメッセージを横取りして破棄すれば


よいでしょう。(SetWindowLong)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今のところDoEventsを挿入することで
目的は達成されていますのでそちらの方法でいくことに
します。ありがとうございました。

お礼日時:2003/10/09 16:37

こんにちは。

maruru01です。

コンピュータの処理中のコードに、DoEventsは入っていますか?
あと、別の方法としては、フラグを使用して、


Private Sub コマンド1_Click()

  If flg Then
    '処理
  End If

End Sub


という感じで、フラグが立っている(True)間はClickイベント内の処理をスキップするという方法です。

この回答への補足

回答ありがとうございます。
フラグを使ったやり方は少し考えていたのですが、APIを使ったやり方がどうしても引っかかっています。その辺でアドバイスいれるとありがたいです。

補足日時:2003/10/09 14:53
    • good
    • 0

Trueに戻す直前に、DoEventsをいれるとか。

この回答への補足

回答ありがとうございます。
風のうわさでスタックを破棄するという方法を聞いたのですが何かAPI関係で解決方法はないでしょうか。
DoEventsはあまり好ましくない処理らしいので・・・。
よろしくお願いします。

補足日時:2003/10/09 14:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!