ボタンコントロールにtooltipをつける – プログラミング – Home

ボタンコントロールにtooltipをつ...
 
通知
すべてクリア

[解決済] ボタンコントロールにtooltipをつける


suzugoya
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

環境 Windows98 VC++6.0 API(MFCは使用していません)

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


引用未解決
トピックタグ
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

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


返信引用
suzugoya
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

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


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

説明不足でしたか。
こんな感じでどうでしょう?

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
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

補足
ちなみに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
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

TTS_BALOON ---> 定義されていない識別子です
のエラーがでましたので、除いて実行しました
tooltipがでました!
自力では絶対に出来ないことです
ありがとうございました

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


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

> 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
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

ADSL対象外の田舎で、個人でプログラム作成をしています
DownLoadは、ファイルが大きそうなので、少し考えてからにします

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


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

> ADSL対象外の田舎で、個人でプログラム作成をしています
> DownLoadは、ファイルが大きそうなので、少し考えてからにします

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


返信引用
suzugoya
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

英語は苦手ですけど、背に腹は変えられず ですね
注文することを考えます

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> TTS_BALOON ---> 定義されていない識別子です
> のエラーがでましたので、除いて実行しました

#define TTS_BALLOON 0x40

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


返信引用
suzugoya
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

#define TTS_BALLOON 0x40
と自分で定義してしまっても問題ありませんよ。
ーーーーーーーーーーーーーーーーーーーーーーーー
分かりました
でも、0x40 はどこから出てくる数値でしょうか
もし、異なる数値だったとき、不具合が生じませんか

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> でも、0x40 はどこから出てくる数値でしょうか

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

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

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

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

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

手入力してます(^^;


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

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


返信引用
suzugoya
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
Topic starter  

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました