HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0310
kenonjctの無効/有効について2解決


ken

リンク

2009/3/10(Tue) 12:11:55|NO.23789

以下のプログラムでマウス又はキーボードで開始ボタンを押した時このボタンを無効にするの
ですが、マウスで開始ボタンをクリックした時のみEscキーが効かないのですがなぜですか?
ちなみに無効にしなければどちらでも反応します。


#uselib "user32.dll" #func _EnableWindow "EnableWindow" int,int #define objhide(%1,%2) _EnableWindow objinfo_hwnd(%1),%2 ;%1=objID %2:0=hide 1=visible button "開始(F1)",*start :start_btn=stat button "中止(Esc)",*cancel onkey *keychk stop *start objhide start_btn,0 title "start" stop *cancel title "stop" objhide start_btn,1 stop *keychk if wparam=112 :goto *start ;F1 if wparam=27 :goto *cancel ;ESC stop



この記事に返信する


faergare

リンク

2009/3/10(Tue) 13:30:21|NO.23790

開始ボタンを押した(離した直後)に開始ボタンが無効になり、
ボタンが持つ入力フォーカスが失われ、
ウィンドウはアクティブだが、どこにも入力フォーカスがない状態になるため。

このことは、マウスで開始を押し、ESCが効かないだけではなく、
マウスで開始ボタンを押し、そのままマウスをドラッグしてフォーカスが
開始ボタンにある状態でF1を押してもESCが効かなくなることで確認できる。

objselで別のオブジェクトにフォーカスを設定するか、
SetFocusでウィンドウにフォーカスを当てるかすることで解決。



ken

リンク

2009/3/11(Wed) 12:11:54|NO.23814

SetFocus hwnd
を入れることで解決しました。

明快な回答ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.