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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0312
窓口ツールヒントコントロールをスクリプトから表示する7解決


窓口

リンク

2010/3/12(Fri) 08:43:30|NO.31154

win32のツールヒントコントロールを
スクリプトから表示することは可能ですか?

TTM_RELAYEVENTメッセージを使用すれば出来そうな気もしますが
TTM_RELAYEVENTメッセージの送り方すらうまくいっていない状態です。

一応TTM_RELAYEVENTを使用して試行錯誤したスクリプトを載せておきます。


#include "user32.as" #include "winmm.as" ; TOOLINFO.uFlags の定数 #define global TTF_ABSOLUTE $00000080 #define global TTF_CENTERTIP $00000002 #define global TTF_DI_SETITEM $00008000 #define global TTF_IDISHWND $00000001 #define global TTF_RTLREADING $00000004 #define global TTF_SUBCLASS $00000010 #define global TTF_TRACK $00000020 #define global TTF_TRANSPARENT $00000100 ; ウインドウメッセージ #define WM_MOUSEMOVE $00000200 ; ツールチップメッセージ #define TTM_ADDTOOL $00000404 #define TTM_RELAYEVENT $00000407 dim rect , 4 dim TOOLINFO, 11 winobj "tooltips_class32", "",0,0 hTooltip=objinfo_hwnd(stat) a=0 : input a hInput = objinfo_hwnd(stat) GetWindowRect hInput , varptr(rect) txt = "ツールチップ" TOOLINFO.0 = 40 // cbSize TOOLINFO.1 = 0 // uFlags TOOLINFO.2 = hInput // hwnd TOOLINFO.3 = 0 // uId TOOLINFO.4 = 0 // rect TOOLINFO.5 = 0 ; TOOLINFO.6 = rect.2 ; TOOLINFO.7 = rect.3 ; TOOLINFO.8 = 0 // hinst TOOLINFO.9 = varptr(txt)// lpszText ; ツールヒントコントロールを登録 sendmsg hTooltip , TTM_ADDTOOL , , varptr(TOOLINFO) oncmd gosub *msg_WM_MOUSEMOVE,WM_MOUSEMOVE stop *msg_WM_MOUSEMOVE GetMessageExtraInfo msgextrinfo = stat TimeGetTime time = stat ; MSG 構造体 #define ctype point(%1,%2) (%2<<16 | %1) msg = hwnd , WM_MOUSEMOVE , wparam , lparam , time , point(ginfo_mx , ginfo_my) ; ツールチップへTTM_RELAYEVENTを送る sendmsg hTooltip , TTM_RELAYEVENT , msgextrinfo , varptr(msg) return

どなたかよろしくお願いします。



この記事に返信する


inovia

リンク

2010/3/12(Fri) 10:46:17|NO.31155


TOOLINFO.1 = 0


TOOLINFO.1 = 0x10
にしてみては?



GENKI

リンク

2010/3/12(Fri) 19:56:19|NO.31159

よくわからないのですが、これではダメなのですか?

#include "llmod3.hsp" #include "misc.hsp" input a : btn_id = stat tooltip btn_id,"ツールチップ"



窓口

リンク

2010/3/12(Fri) 21:47:14|NO.31164

すみません、説明が足りなかったみたいです。

自分がしたいのは、
オブジェクトの上にマウスを置くことにより表示される、ヒントウインドウを
スクリプトから表示する事です。

例えば、キー入力が行われると、オブジェクト上に、ヒントウインドウが表示されるような動作を行うようにしたいのです。

無理ならば、自前でウインドウを作って、うまく動作するように試行錯誤することになると思います。



A

リンク

2010/3/13(Sat) 07:21:48|NO.31170

 

#uselib "user32" #func GetClientRect "GetClientRect" int,var pos 100,100 input a txt="ツールチップ" TOOLINFO=40,$10,objinfo(stat,2) TOOLINFO(9)=varptr(txt) GetClientRect TOOLINFO(2),TOOLINFO(4) winobj "tooltips_class32","" sendmsg objinfo(stat,2),$404,,varptr(TOOLINFO) stop



窓口

リンク

2010/3/13(Sat) 08:40:02|NO.31171

すみません、訂正させてください。

>>例えば、キー入力が行われると、オブジェクト上に、ヒントウインドウが表示されるような動作を行うようにしたいのです。

例として、もし、Ctrl + 1 等のキー入力が行われた場合、「オブジェクト上にマウスポインタが無くても」
ヒントウインドウが表示されるような動作を行うようにしたいのです。



woodfields

リンク

2010/3/14(Sun) 16:40:09|NO.31225

HtmlHelpをご利用になられたらどうでしょう。APIは以下のとおりです。
・HH_POPUP構造体をセットしてHH_DISPLAY_TEXT_POPUPコマンドでHtmlHelpを表示します。
・HtmlHelpをご閉じるにはWM_CLOSEをメッセージ送信します。閉じるタイミングは自分で考えてください。
・環境によっては、あらかじめ適当なHtmlHelpファイルをHH_INITIALIZEで開き、プログラム終了前にHH_UNINITIALIZEで開放する必要があるかもしれません。

#uselib "user32.dll" #func SendMessage "SendMessageA" int,int,int,int ; HWND hWnd 送信先ウィンドウのハンドル ; UINT Msg メッセージ ; WPARAM wParam メッセージの最初のパラメータ ; LPARAM lParam メッセージの 2 番目のパラメータ #const WM_CLOSE $00000010 ; ウィンドウを閉じる #uselib "hhctrl.ocx" #func HtmlHelp "HtmlHelpA" sptr,sptr,sptr,sptr ; HWND hwndCaller カレントスクリーンのウィンドウハンドルhwndでよいと思います ; LPCSTR pszFile 指定したコマンドがファイル名を必要としない場合は0 ; UINT uCommand ; DWORD dwData #const HH_INITIALIZE $001C #const HH_UNINITIALIZE $001D #const HH_DISPLAY_TEXT_POPUP $000E ; HH_POPUP構造体 ; (0) int cbStruct 4*13 ; (1) HINSTANCE hinst 0で良いと思います ; (2) HUINT idString 0またはリソースIDまたはテキストファイルのトピックID ; (3) HLPCTStr pszText idStringが0の時表示するテキストを指定します。 ; (4) HPOINT pt 表示するポップアップウィンドウの上辺の中心をどこに持っていくかを指定します。 ; (5) ↓ ; (6) HCOLORREF clrForeground ポップアップウィンドウのフォアグラウンドカラーのRGB値を指定します。システム値を使う場合は-1を指定します。 ; (7) HCOLORREF clrBackground 背景色のRGB値を指定します。-1を指定するとシステムカラーが使用されます。 ; (8) HRECT rcMargins 上下・左右のマージン値を指定します。-1でデフォルトの値が使われます。 ; (9) ↓ ; (10) ↓ ; (11) ↓ ; (12) HLPCTStr pszFont フォントを指定します。 #define ctype RGB(%1,%2,%3) ((%1)|(%2<<8)|(%3<<16)) #const HH_CLOSE_ALL $0012



窓口

リンク

2010/3/15(Mon) 04:30:16|NO.31247

こんな時間に失礼します。

回答してくださった皆様、有難うございます。

忙しかったので、返事が遅れてしまいましたが、
 TTM_POPUP
 TTM_TRACKACTIVATE
を使わせていただきます。

有難うございます無事解決しました。



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