ボタンコントロールにtooltipをつける

[戻る]
suzugoya [E-Mail] [HomePage] 2003/10/28(火) 09:45:13
環境 Windows98  VC++6.0  API(MFCは使用していません)

いろいろと参考にさせて頂いております
ボタンコントロールにtooltipをつける方法が分かりません
どうしたらよいのでしょうか

SunPac 2003/10/28(火) 10:02:08
単純にCreateWindowEx()でつくれます。
クラス名はTOOLTIPS_CLASSかな。
もしツールバーのボタンにつけたいのならもっと簡単につけられます。
ツールバーのスタイルにTBSTYLE_TOOLTIPSを加えてWM_NOTIFYに対応するのみです。

suzugoya [E-Mail] [HomePage] 2003/10/29(水) 06:28:53
SunPac様 ありがとうございます
質問が中途半端でした
1.Tooltipは DialogBox上のPushButtonに貼りたいのです
2.WM_CREATEで CreateWindowEx()のクラス名に,"BUTTON" の代わりにTOOLTIPS_CLASSを
書くとボタンが消えてしまいます
3.TTN_NEEDTEXT も試してみましたが、マウスがコントロール上に来たことを通知できません

SunPac 2003/10/29(水) 10:07:50
説明不足でしたか。
こんな感じでどうでしょう?

TOOLINFO ti;

ZeroMemory(&ti, sizeof(TOOLINFO));

ti.cbsize = sizeof(TOOLINFO);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = hBtn;       // ボタンのハンドルGetDlgItem()等で求めて
ti.hinst = hInstance; // インスタンスのハンドル
ti.uID = ID_BTN;      // ボタンのID
ti.lpsztext = "ツールチップ文字列";
GetClientRect(hBtn, &ti.rect);
// hTipWndはツールチップのハンドル
SendMessage(hTipWnd, TTM_ADDTOOL, 0, (LPARAM)&ti);
SendMessage(hBtn, TB_SETTOOLTIPS, (WPARAM)hTipWnd, 0);

これでいかが?
あ、スペルミスがあったらごめんなさいね。

SunPac 2003/10/29(水) 10:10:53
補足
ちなみにhTipWndは
hTipWnd = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, TTS_ALWAYSTIP | TTS_BALLOON, 
CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hDlgWnd, 0, hInst, 
NULL);

こんな感じで。
会社で作ってるプログラムのソースをこっそりコピーしてます。
TTS_BALLOONはなくてもいいですけど、お勧めです。

suzugoya [E-Mail] [HomePage] 2003/10/29(水) 11:38:34
TTS_BALOON ---> 定義されていない識別子です
  のエラーがでましたので、除いて実行しました
tooltipがでました!
自力では絶対に出来ないことです
ありがとうございました

TTS_ についてはMSDN(2000年10月)を探しても説明が見つかりません
どこを探せばよいのでしょうか

瀬戸っぷ [E-Mail] 2003/10/29(水) 11:50:02
> TTS_BALOON ---> 定義されていない識別子です
>   のエラーがでましたので、除いて実行しました

最新のPaltformSDKでないと、定義されていませんね。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
からDLできるようです。
また、_WIN32_IEが0x0500以上である必要があります。
下記サイトによると…IE5.0以上がインストされている必要があるようです。
http://homepage3.nifty.com/aokura/tips/trouble.html

suzugoya [E-Mail] [HomePage] 2003/10/29(水) 15:47:17
[[解決]]
ADSL対象外の田舎で、個人でプログラム作成をしています
DownLoadは、ファイルが大きそうなので、少し考えてからにします

このラウンジでどれがけ助けられているか分かりません
SunPac 様 瀬戸っぷ様 有難うございました
また、疑問が出てきたときにお願いします

瀬戸っぷ [E-Mail] 2003/10/29(水) 16:13:37
> ADSL対象外の田舎で、個人でプログラム作成をしています
> DownLoadは、ファイルが大きそうなので、少し考えてからにします

CDに焼けるフルセットで323M近くありますから、
ナローバンドだとほぼ無理…ですね。
有料ですが、一応MicrosoftにCDを注文出来るようです。
(Order CDのリンクから)
フォームとか英語ですけど(^_^;)

suzugoya [E-Mail] [HomePage] 2003/10/29(水) 21:21:41
英語は苦手ですけど、背に腹は変えられず ですね
注文することを考えます

会社や学校でパソコンを使っている人がうらやましい!

dairygoods 2003/10/30(木) 10:26:10
> TTS_BALOON ---> 定義されていない識別子です
>   のエラーがでましたので、除いて実行しました

#define TTS_BALLOON             0x40

と自分で定義してしまっても問題ありませんよ。

suzugoya [E-Mail] [HomePage] 2003/10/30(木) 10:41:50
#define TTS_BALLOON             0x40
と自分で定義してしまっても問題ありませんよ。
ーーーーーーーーーーーーーーーーーーーーーーーー
分かりました
でも、0x40 はどこから出てくる数値でしょうか
もし、異なる数値だったとき、不具合が生じませんか

この問題とは関係ありませんが引用するときの > はどうすれば表示されるのでしょか

dairygoods 2003/10/30(木) 11:01:52
> でも、0x40 はどこから出てくる数値でしょうか

SDKのヘッダーファイルからです。

ヘッダーファイルをダウンロードしてincludeしても、
自分で手入力しても、コンパイル結果には全く影響しませんよね。


> もし、異なる数値だったとき、不具合が生じませんか

define値が変わることはありません。
(その他、APIの名前や引数なども)
もし変化したら、既存のアプリケーションが動作しなくなります。


> この問題とは関係ありませんが引用するときの > はどうすれば表示されるのでしょか

手入力してます(^^;

SunPac 2003/10/30(木) 12:28:32
私はIDSNでPlatformSDKからフルでダウンロードしましたよ。
ファイルが分割されているので不可能じゃないかと。
寝るときダウンロードして、朝起きたら終わってますし(笑)

suzugoya [E-Mail] [HomePage] 2003/10/31(金) 09:27:02
ダウンロードの時間を計算してみました(56kBauds)
平均 4 kByte/s として、230 MB / 4k = 57 k 秒 = 16 時間
昔、N88basicでレイトレーシングで一画面描くのに30時間かけたよりは短いけれど
そのときは電気代だけでした

皆さん それぞれに苦労されているんだ という事を実感します

古いスレッドには追加発言できません。