- ベストアンサー
VB6.0のEnabledをfalseにしてもクリックイベントが走ってしまう・・・
はじめまして。 今VBでオセロゲームを作成しているのですが、コンピュータが考えているときにボタンのEnabledをfalseにしてクリックイベントを走らせないようにしています。 デバックなどをするとうまくいくのですが実際プログラムを実行するとどうしてもEnableをTrueにした後にクリックイベントが走ってしまいます。クリックイベントがたまっているようにも見えるのですが何か解決法はあるのでしょうか。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
クリックイベントがあがる前にメッセージを横取りして破棄すれば よいでしょう。(SetWindowLong)
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
回答No.2
こんにちは。maruru01です。 コンピュータの処理中のコードに、DoEventsは入っていますか? あと、別の方法としては、フラグを使用して、 Private Sub コマンド1_Click() If flg Then '処理 End If End Sub という感じで、フラグが立っている(True)間はClickイベント内の処理をスキップするという方法です。
質問者
補足
回答ありがとうございます。 フラグを使ったやり方は少し考えていたのですが、APIを使ったやり方がどうしても引っかかっています。その辺でアドバイスいれるとありがたいです。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.1
Trueに戻す直前に、DoEventsをいれるとか。
質問者
補足
回答ありがとうございます。 風のうわさでスタックを破棄するという方法を聞いたのですが何かAPI関係で解決方法はないでしょうか。 DoEventsはあまり好ましくない処理らしいので・・・。 よろしくお願いします。
お礼
回答ありがとうございます。 今のところDoEventsを挿入することで 目的は達成されていますのでそちらの方法でいくことに します。ありがとうございました。