首页 > Windows开发 > 详细

Delphi 气泡式弹出消息提示框

时间:2021-06-14 23:32:25      阅读:37      评论:0      收藏:0      [点我收藏+]
//h:窗体中控件的句柄(用在某个控件上提示消息)(要调用的控件句柄)

//text:要提示的文本

//cap:提示框上的标题

//IconType:提示框上显示的图标(共三个值。1、2、3分别为提示、警告、错误s)

//t:消息停留的时间(以毫秒计算)

//left: 消息框偏离控件的左距离,设为0则表示没有

//top: 消息框偏离控件的顶距离,设为0则表示没有
procedure TFrmMain.QiPaoShowMessage(h:HWND;text,cap:string;IconType:integer=1;t:integer=1000;left:Integer=0;top:Integer=0);
var
 r : TRect;                       //是一个记录(Record),保存了矩形的(左上角右下角两个点)4个坐标或2个点的值。
 hTooltip: Cardinal;    //Cardinal是无符号32位整数 ,取值0到4294967295范围。
 ti: TToolInfo;
begin
  hToolTip := CreateWindow(Tooltips_Class32,nil,$40,0,0,0,0,0,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_IDISHWND or TTF_TRACK;
    ti.hInst := hInstance;
    ti.lpszText :=pchar(text);
    SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(@ti));
    if (IconType > 3) or (IconType < 0) then IconType:=0;
    SendMessage(hToolTip,WM_USER + 32,IconType,Integer(pchar(cap)));
    GetWindowRect(H,R);             //获取指定控件的坐标,R.Right 、R.Left、R.Bottom、R.Top
    r.Left:=r.Left-left;
    r.Top:=r.Top-top;

 // 定义气泡位置
    SendMessage(hToolTip,TTM_TRACKPOSITION, 0, MAKELONG((r.Right - r.Left) div 2 + r.Left, (r.Bottom - r.Top) div 2 + r.Top));            SendMessage(hToolTip, TTM_TRACKACTIVATE, Integer(True), Integer(@ti));
    Sleep(t);
    DestroyWindow(hToolTip);
 end;
end;

Delphi 弹出气泡式消息提示框(未验证)

//h:窗体中控件的句柄(用在某个控件上提示消息)(要调用的控件句柄)
//text:要提示的文本
//cap:提示框上的标题
//IconType:提示框上显示的图标(共三个值。1、2、3分别为提示、警告、错误s)
//t:消息停留的时间(以毫秒计算)
//left: 消息框偏离控件的左距离,设为0则表示没有
//top: 消息框偏离控件的顶距离,设为0则表示没有procedure TFrmMain.QiPaoShowMessage(h:HWND;text,cap:string;IconType:integer=1;t:integer=1000;left:Integer=0;top:Integer=0);var r : TRect;                       //是一个记录(Record),保存了矩形的(左上角右下角两个点)4个坐标或2个点的值。 hTooltip: Cardinal;    //Cardinal是无符号32位整数 ,取值0到4294967295范围。 ti: TToolInfo;begin  hToolTip := CreateWindow(‘Tooltips_Class32‘,nil,$40,0,0,0,0,0,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_IDISHWND or TTF_TRACK;    ti.hInst := hInstance;    ti.lpszText :=pchar(text);    SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(@ti));    if (IconType > 3) or (IconType < 0) then IconType:=0;    SendMessage(hToolTip,WM_USER + 32,IconType,Integer(pchar(cap)));    GetWindowRect(H,R);             //获取指定控件的坐标,R.Right 、R.Left、R.Bottom、R.Top    r.Left:=r.Left-left;    r.Top:=r.Top-top;
 // 定义气泡位置    SendMessage(hToolTip,TTM_TRACKPOSITION, 0, MAKELONG((r.Right - r.Left) div 2 + r.Left, (r.Bottom - r.Top) div 2 + r.Top));            SendMessage(hToolTip, TTM_TRACKACTIVATE, Integer(True), Integer(@ti));    Sleep(t);    DestroyWindow(hToolTip); end;end;

Delphi 气泡式弹出消息提示框

原文:https://www.cnblogs.com/clickpoint/p/14883568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!