環境 Windows98 VC++6.0 API(MFCは使用していません)
いろいろと参考にさせて頂いております
ボタンコントロールにtooltipをつける方法が分かりません
どうしたらよいのでしょうか
単純にCreateWindowEx()でつくれます。
クラス名はTOOLTIPS_CLASSかな。
もしツールバーのボタンにつけたいのならもっと簡単につけられます。
ツールバーのスタイルにTBSTYLE_TOOLTIPSを加えてWM_NOTIFYに対応するのみです。
SunPac様 ありがとうございます
質問が中途半端でした
1.Tooltipは DialogBox上のPushButtonに貼りたいのです
2.WM_CREATEで CreateWindowEx()のクラス名に,BUTTON の代わりにTOOLTIPS_CLASSを
書くとボタンが消えてしまいます
3.TTN_NEEDTEXT も試してみましたが、マウスがコントロール上に来たことを通知できません
説明不足でしたか。
こんな感じでどうでしょう?
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);
これでいかが?
あ、スペルミスがあったらごめんなさいね。
補足
ちなみに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はなくてもいいですけど、お勧めです。
TTS_BALOON ---> 定義されていない識別子です
のエラーがでましたので、除いて実行しました
tooltipがでました!
自力では絶対に出来ないことです
ありがとうございました
TTS_ についてはMSDN(2000年10月)を探しても説明が見つかりません
どこを探せばよいのでしょうか
> TTS_BALOON ---> 定義されていない識別子です
> のエラーがでましたので、除いて実行しました
最新のPaltformSDKでないと、定義されていませんね。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
からDLできるようです。
また、_WIN32_IEが0x0500以上である必要があります。
下記サイトによると…IE5.0以上がインストされている必要があるようです。
http://homepage3.nifty.com/aokura/tips/trouble.html
ADSL対象外の田舎で、個人でプログラム作成をしています
DownLoadは、ファイルが大きそうなので、少し考えてからにします
このラウンジでどれがけ助けられているか分かりません
SunPac 様 瀬戸っぷ様 有難うございました
また、疑問が出てきたときにお願いします
> ADSL対象外の田舎で、個人でプログラム作成をしています
> DownLoadは、ファイルが大きそうなので、少し考えてからにします
CDに焼けるフルセットで323M近くありますから、
ナローバンドだとほぼ無理…ですね。
有料ですが、一応MicrosoftにCDを注文出来るようです。
(Order CDのリンクから)
フォームとか英語ですけど(^_^;)
英語は苦手ですけど、背に腹は変えられず ですね
注文することを考えます
会社や学校でパソコンを使っている人がうらやましい!
> TTS_BALOON ---> 定義されていない識別子です
> のエラーがでましたので、除いて実行しました
#define TTS_BALLOON 0x40
と自分で定義してしまっても問題ありませんよ。
#define TTS_BALLOON 0x40
と自分で定義してしまっても問題ありませんよ。
ーーーーーーーーーーーーーーーーーーーーーーーー
分かりました
でも、0x40 はどこから出てくる数値でしょうか
もし、異なる数値だったとき、不具合が生じませんか
この問題とは関係ありませんが引用するときの > はどうすれば表示されるのでしょか
> でも、0x40 はどこから出てくる数値でしょうか
SDKのヘッダーファイルからです。
ヘッダーファイルをダウンロードしてincludeしても、
自分で手入力しても、コンパイル結果には全く影響しませんよね。
> もし、異なる数値だったとき、不具合が生じませんか
define値が変わることはありません。
(その他、APIの名前や引数なども)
もし変化したら、既存のアプリケーションが動作しなくなります。
> この問題とは関係ありませんが引用するときの > はどうすれば表示されるのでしょか
手入力してます(^^;
私はIDSNでPlatformSDKからフルでダウンロードしましたよ。
ファイルが分割されているので不可能じゃないかと。
寝るときダウンロードして、朝起きたら終わってますし(笑)
ダウンロードの時間を計算してみました(56kBauds)
平均 4 kByte/s として、230 MB / 4k = 57 k 秒 = 16 時間
昔、N88basicでレイトレーシングで一画面描くのに30時間かけたよりは短いけれど
そのときは電気代だけでした
皆さん それぞれに苦労されているんだ という事を実感します