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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1117
MasaNakaキャレット(入力カーソル)の幅の変更方法について7解決


MasaNaka

リンク

2012/11/17(Sat) 11:16:09|NO.50708

メッセージボックス(Mesbox命令で作成)で、表示されるキャレット(入力カーソル)の幅を変更したく、どのようなプログラムを書けば良いのか調べていますが、キャレットの形状の変更方法についての情報が全く見つかりません。
メッセージボックスでは文字入力するところで | のような形をした入力カーソルが出ていて、この入力カーソルの幅を変更したいのです。

今の形状のカーソルだとキャレットがどこで点滅しているのかを弱視者などが見づらく、わたしの作成したソフト上だけでもキャレットが見やすいようにしたいと考えました。
コントロールパネルでキャレットの幅が変更できることは知っているのですが、わざわざコントロールパネルで変更してソフトを起動してもらうというのは利用者にとって大変なお話です。

キャレット(入力カーソルで、決してマウスカーソルではありません)の幅の変更方法を御存知の方がいらっしゃいましたら、どうか教えて下さい。
宜しくお願い致します。



この記事に返信する


@key

リンク

2012/11/17(Sat) 15:24:32|NO.50709

http://oshiete.goo.ne.jp/qa/6016092.html

http://tokovalue.jp/CaretWidth_U.htm
を参考にするといいでしょう

まず自分にはwinAPIをいじる技術や勇気は無いのでリンクを貼ります
あなたができるならHSPに応用して下さい
それか他の人がこれをHSPのソースにしてくれることを期待して下さい



@key

リンク

2012/11/17(Sat) 15:50:48|NO.50714

自分のリンクのどこにCreateCaretがあって調べる手間が省けたんでしょうか・・・
http://www.wwlnk.com/boheme/delphi/tips/tec0840.htm
すいません



fortunehill

リンク

2012/11/17(Sat) 16:05:38|NO.50717

/*あっ!ビットマップのご参考と言う事で。(3.31以前だとファイル位置が異なります)*/

#include "user32.as" ; winobj "edit","",0,$50211044,200,200 ss = "" :mesbox ss,200,200 LoadImage hinstance,dirinfo(1)+"/hsptv/efx.bmp",0,0,0,16 :hh = stat await CreateCaret objinfo(0,2),hh,30,30 ShowCaret objinfo(0,2) wait 100 CreateCaret objinfo(0,2), 0,30,30 ShowCaret objinfo(0,2)



MasaNaka

リンク

2012/11/17(Sat) 17:37:24|NO.50718

皆様ありがとうございます。
メッセージボックス(Mesbox命令で作成)のキャレットの幅および高さを変更することができました!サンプルを頂いて大変助かりました。
又、リンクも参考になりました。
本当にありがとうございました。

今は、自作のソフトを起動したままでスタートメニューから他のソフトを立ち上げて使用し、自作のソフトにタスクを戻すと、キャレットの幅などが元の(細長い | )に戻ってしまっている点に悩んでいます。
下のソースのようにループで監視してみましたが、今度はキャレットが点滅しなくなってしまいました。

repeat
if ginfo(2) = 0 : objsel 0

await 1
CreateCaret hMesbox,0,textSize/2,textSize
ShowCaret hMesbox.0
redraw 1 ; gsel 0,1
wait1
loop

どのようにするとカーソルの形状だけでなく点滅まで維持できるでしょうか。
御存知の方がいらっしゃいましたら、どうか教えて下さい。



@key

リンク

2012/11/17(Sat) 17:42:11|NO.50719

ginfoでアクティブになった瞬間に一回実行すればいいのでは



暇人

リンク

2012/11/17(Sat) 18:10:18|NO.50722

フォーカスが外れるとキャレットが破棄(HSP側が自動でやってる?)されるので作り直す

#include "user32.as" #const WM_COMMAND $111 #const EN_SETFOCUS 0x0100 screen 0,640,480 p1="" mesbox p1,640,480,1 hmesbox = objinfo(stat,2) oncmd gosub *COMMAND,WM_COMMAND wait 0 sendmsg hwnd,WM_COMMAND,EN_SETFOCUS<<16 | $4000,hmesbox //mesboxにキーボードフォーカスが移った通知を入れる(初回の表示用) stop *COMMAND if hmesbox=lParam { en=wParam>>16 if en=EN_SETFOCUS { //キーボードフォーカスがmesboxに来た CreateCaret hmesbox,0,8,16 ShowCaret hmesbox } } return



MasaNaka

リンク

2012/11/17(Sat) 19:27:04|NO.50724

メッセージボックスでカーソルの形状や点滅を維持する方法について、考え方のヒントやプログラムのサンプルなどで詳細にご教示下さいましてありがとうございました。
カーソルの形状や点滅が維持できるようになったようです。
今まで丁寧に教えて下さいました皆様、本当にありがとうございました。
皆様に感謝の気持ちでいっぱいです。

また困ったことなどがありましたら色々お尋ねさせて頂くと思いますが、その際もどうか宜しくお願い致します。



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