• ベストアンサー

VB6.0のEnabledをfalseにしてもクリックイベントが走ってしまう・・・

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

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

クリックイベントがあがる前にメッセージを横取りして破棄すれば よいでしょう。(SetWindowLong)

mincowski
質問者

お礼

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

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 コンピュータの処理中のコードに、DoEventsは入っていますか? あと、別の方法としては、フラグを使用して、 Private Sub コマンド1_Click()   If flg Then     '処理   End If End Sub という感じで、フラグが立っている(True)間はClickイベント内の処理をスキップするという方法です。

mincowski
質問者

補足

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

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

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

mincowski
質問者

補足

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

関連するQ&A

専門家に質問してみよう