線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1546
推到 Plurk!
推到 Facebook!

實現類似托盤氣球的例子的一些問題

尚未結案
guohun
一般會員


發表:6
回覆:1
積分:1
註冊:2004-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-01 15:42:52 IP:218.104.xxx.xxx 未訂閱
各位大大,我弄這段程序實現一個類似托盤氣球的效果,雖然運行通過,可是卻不能顯示結果,請幫忙看看我的程序,給與指點,謝謝!! 我用的是XP和delphi6 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,commctrl, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const TTS_BALLOON = $40; TTM_SETTITLE = (WM_USER 32); var Form1: TForm1; hTooltip: Cardinal; ti: TToolInfo; buffer : array[0..255] of char; implementation {$R *.dfm} procedure CreateToolTips(hWnd: Cardinal); begin hToolTip := CreateWindowEx(0, 'Tooltips_Class32', nil, TTS_ALWAYSTIP or TTS_BALLOON, Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), hWnd, 0, hInstance, nil); if hToolTip <> 0 then begin SetWindowPos(hToolTip, HWND_TOPMOST, 0,0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); ti.cbSize := SizeOf(TToolInfo); ti.uFlags := TTF_SUBCLASS or TTF_TRANSPARENT; ti.hInst := hInstance; end; end; procedure AddToolTip(hwnd: dword; lpti: PToolInfo; IconType: Integer; Text, Title: PChar; BackColor,TextColor:TColor); //BackColor,TextColor分别是背景颜色和文本颜色,如果是0则取默认值. var Rect: TRect; begin if (hwnd <> 0) AND (GetClientRect(hwnd, Rect)) then begin lpti.hwnd := hwnd; lpti.Rect := Rect; lpti.lpszText := Text; SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(lpti)); FillChar(buffer, sizeof(buffer), #0); lstrcpy(buffer, Title); if (IconType > 3) or (IconType < 0) then IconType := 0; if BackColor<>0 then SendMessage(hToolTip, TTM_SETTIPBKCOLOR, BackColor, 0); if TextColor<>0 then SendMessage(hToolTip, TTM_SETTIPTEXTCOLOR, TextColor, 0); SendMessage(hToolTip, TTM_SETTITLE, IconType, Integer(@buffer)); end; end; procedure TForm1.Button1Click(Sender: TObject); begin CreateToolTips(Button1.Handle); AddToolTip(Button1.Handle, @ti, 1, '提示内容', '提示标题',0,0); end; end.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-02 08:02:11 IP:202.39.xxx.xxx 未訂閱
程式碼沒有問題 在按了 Button1 之後,等待約 1 秒鐘的時間 那個 Ballon 的效果就會出來了.    -- 向 KTop 的弟兄們致敬! 
guohun
一般會員


發表:6
回覆:1
積分:1
註冊:2004-07-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-02 08:41:57 IP:218.104.xxx.xxx 未訂閱
to hangar 可是我在我的機子上運行這段程序,怎麽也不會出現阿,搞得我的頭都大了,到底是怎麽會事?請幫我找一下,是不是系統那裏設置有問題?亟盼!!
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-02 11:52:09 IP:211.162.xxx.xxx 未訂閱
不好意思,插個花: 小弟在Delphi6(Update2)和XP(SP2)中的測試能通過,在Delphi7(Update1)和Win2K(SP4)也可以通過。不妨把這個可執行程式放到別人的XP環境去看看。從code中可以看出,我們在use中使用了Commctrl,不然不認識後面的TToolInfo,而現在又沒有實現預期的效果,我們不妨來看CommCtrl.pas:可以看出這是Borland將Microsoft的Win32 common controls interface unit轉換而來的。我們再跟蹤下來,可以在該pas中找到TOOLTIPS CONTROL,仔細看看,發現並沒有使用必須在XP下才能執行的單元文件。所以小弟鬥膽推測應該是您的系統問題或是VCL問題,更新各項補丁再試試。如果還不行,請仔細對比原來的code 順便再說一句,該 > ================================= <>人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網
------
人生在勤,不索何获?
系統時間:2024-11-22 11:58:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!