實現類似托盤氣球的例子的一些問題 |
尚未結案
|
guohun
一般會員 發表:6 回覆:1 積分:1 註冊:2004-07-27 發送簡訊給我 |
各位大大,我弄這段程序實現一個類似托盤氣球的效果,雖然運行通過,可是卻不能顯示結果,請幫忙看看我的程序,給與指點,謝謝!! 我用的是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 發送簡訊給我 |
|
guohun
一般會員 發表:6 回覆:1 積分:1 註冊:2004-07-27 發送簡訊給我 |
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
不好意思,插個花:
小弟在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 順便再說一句,該 > =================================
<>人生在勤,不索何獲>
<>業精於勤荒於嬉,行成於思毀於隨>
<>臨淵羡魚不如退而結網>
------
人生在勤,不索何获? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |