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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
1120
comboxなどのオブジェクトのフォーカスについて4解決


リンク

2016/11/20(Sun) 22:30:57|NO.77353

ゲーム系ではなく久々にツール系のプログラミングをしており、
これまであまり触らなかったボタンやコンボボックスなどを利用しています。

オブジェクトを選択しフォーカスを移して操作をした後、
ボックス以外の画面をクリックする事でフォーカスを切りたいのですが
その方法が判りません。

他のボタン等を押してもそちらにフォーカスが移るだけですし、
一度他のウインドウを選択してから元のウインドウをクリックすれば
フォーカス切れますがスマートではありません。
情報等ございましたらよろしくお願いいたします。



この記事に返信する


kanahiron

リンク

2016/11/20(Sun) 22:46:53|NO.77354

HSPの標準命令では出来ませんがwin32APIを呼び出してやれば簡単にできます


#uselib "user32.dll" #func SetFocus "SetFocus" int objsize 200,30 objmode 1,1 button gosub "a",*a button gosub "b",*a button gosub "フォーカスをウィンドウに戻すボタン",*b stop *a return *b SetFocus hwnd return



リンク

2016/11/20(Sun) 22:50:19|NO.77355


*foff objsel -1:FOCUS=stat if stat==-1:return objenable FOCUS,0 objenable FOCUS,1 return
一応自分なりの現状はこうですが
「オブジェクト外をクリックした」をどうにかして取得できないでしょうか。



リンク

2016/11/20(Sun) 22:51:35|NO.77356

おお、すばやく明快な回答ありがとうございました!解決です。



掘木

リンク

2016/11/20(Sun) 23:33:31|NO.77357

解決済みですが、ウィンドウ内のオブジェクトをクリックしたかは、
クリック位置の直下のオブジェクトを取得することで可能です。(ヒットテストとかね)

ただ、ボタンやコンボボックスなんかのフォーカスを持つオブジェクトは
往々にしてonclickによるジャンプを受け付けないので、onclickでフォーカス解放すると楽かも?



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