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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0220
copperウィンドウのアクティブ、入力ボックスの入力フォーカスについて8解決


copper

リンク

2010/2/20(Sat) 08:18:33|NO.30752

HSP3.1で、
picload "temp.jpg"

と実行すると、ウィンドウがアクティブにならないまま画像が表示されてくれますが、 HSP3.2では、ウィンドウがアクティブになってしまいます。 また、HSP3.2で、
	input あ
repeat -1
	ああ=あ
	wait 25
	if ああ!=あ : gosub *a
loop
*a
	if あ=1 : end
	objsel 1
return
という様なものを実行すると、入力ボックス内がすべて選択状態になっており、
連続で文字が入力できないようになってしまいます。

3.2で上2つの現象の回避方法があれば教えて頂けないでしょうか。



この記事に返信する


copper

リンク

2010/2/20(Sat) 08:37:38|NO.30753

上のスクリプト、間違っておりました。

screen 0 screen 1 gsel 0 input あ repeat -1 ああ=あ wait 10 if ああ!=あ : gosub *a loop *a gsel 1 mes あ if あ=1 : end gsel 0 objsel 0 return



shinkun

リンク

2010/2/20(Sat) 10:50:23|NO.30754

入力ボックスについて、応急処置みたいなものですが実装が簡単なので紹介しておきます。

objsel でフォーカスを移した後、それに対して右カーソルキーを押したという情報を送りつけてやれば選択状態を解除出来ます。人間が手作業でやる操作を自動化しただけのものです。


#const WM_KEYDOWN 0x0100 #const VK_RIGHT 0x27 screen 0 screen 1 gsel 0 input あ repeat -1 ああ=あ wait 10 if ああ!=あ : gosub *a loop *a gsel 1 mes あ if あ=1 : end gsel 0 objsel 0 sendmsg objinfo(0,2), WM_KEYDOWN, VK_RIGHT, 0 ; これを追加 return



copper

リンク

2010/2/20(Sat) 11:24:32|NO.30756

shinkun様
ありがとうございます。
64bitのWindows7にしてしまって、例のバグで3.2しか使えなくなって困っていた所でした。

>>応急処置みたいなものですが
ということはこれはバグみたいな扱いですかね。
いったいなぜこんな仕様になったのか知りたいです。

前の質問(picloadの件)ですが、他のアプリケーションの補助として使用したいので、
HSPの窓が画像を開くたびアクティブになってしまうと困るのです。
前もってアプリケーションのハンドル?を取得しておいて、
アプリケーションをアクティブにさせる?といったような処理が必要になるんでしょうか。



あり

リンク

2010/2/20(Sat) 11:57:01|NO.30758

>>HSPの窓が画像を開くたびアクティブになってしまうと困るのです。
状況が再現できていないので正しいのか判りませんが
こういう方法ではダメですか?

buffer 1 picload "temp.jpg" gsel 0, 0 gmode 0, 640, 480 gcopy 1



copper

リンク

2010/2/20(Sat) 12:15:20|NO.30759

あり様
ありがとうございます。
できました。

buffer 0 wait 100 picload "temp.jpg" x=ginfo_sx y=ginfo_sy screen 1,x,y gmode 1,x,y gcopy 0



copper

リンク

2010/2/20(Sat) 12:16:39|NO.30760

解決するのを忘れました。



shinkun

リンク

2010/2/20(Sat) 12:37:10|NO.30761

レスを書いている間に解決してしまったみたいですね…。
いくらか追記しておきます。

入力ボックスの件、もしかしてこういう事でも良かったのでしょうか?

screen 0 screen 1 gsel 0 input あ repeat -1 ああ=あ wait 10 if ああ!=あ : gosub *a loop *a gsel 1 mes あ if あ=1 : end gsel 0 ;objsel 0 ; フォーカスを強制的に当てない!! return
先の回答は「フォーカスを移すと文字列が強制選択されるのを解除する方法」は無いか尋ねられていると思って回答しているのですが、そうではなく、単に「入力ボックスに入力した文字列を別ウィンドウにリアルタイム表示」出来れば良かったのであれば、コチラの方がスマートかな…?

> >>応急処置みたいなものですが
> ということはこれはバグみたいな扱いですかね。
> いったいなぜこんな仕様になったのか知りたいです。
いや、この一文は「他にもっと良い方法があるとは思うが」という意味で書いたもので、この動作自体はそれなりに適切なものになっていると思います。このような仕様になった由縁は知る所ではないのですが、これはこれで便利だと個人的には思います。



copper

リンク

2010/2/20(Sat) 18:37:43|NO.30769

shinkun様。
ありがとうございます。
「フォーカスを移すと文字列が強制選択されるのを解除する方法」で正しいです。
わかりにくくて申し訳ありません。
技名をインクリメンタル検索するスクリプトを作っているんです。



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