怎样用代码关掉关掉跳出的消息窗体(如Messgebox打开的)?

collecte 2003-09-11 02:39:43
因为需要给客户端提示,又希望不至于让若干天无人操作的电脑上充满了消息窗体。
尤其是有些询问的窗体,应该有时效才行。
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdf_hubei 2003-09-11
  • 打赏
  • 举报
回复
自己定义消息窗口,设定弹出时间,自己关闭释放
王集鹄 2003-09-11
  • 打赏
  • 举报
回复
function StrLeft(const mStr: string; mDelimiter: string): string;
begin
Result := Copy(mStr, 1, Pos(mDelimiter, mStr) - 1);
end; { StrLeft }

function StrRight(const mStr: string; mDelimiter: string): string;
begin
if Pos(mDelimiter, mStr) > 0 then
Result := Copy(mStr, Pos(mDelimiter, mStr) + Length(mDelimiter), MaxInt)
else Result := '';
end; { StrRight }

procedure TForm1.Timer1Timer(Sender: TObject);
var
vHandle: THandle;
vBuffer: array[0..255] of Char;
I: Integer;
begin
vHandle :=FindWindow('TMessageForm', nil);
TTimer(Sender).Enabled := vHandle <> 0;
if vHandle = 0 then Exit;
GetWindowText(vHandle, vBuffer, 256);
I := StrToIntDef(StrRight(vBuffer, ','), 11) - 1;
if I < 0 then SendMessage(vHandle, WM_SYSCOMMAND, SC_CLOSE, 0);

SetWindowText(vHandle, PChar(StrLeft(string(vBuffer) + ',', ',') + ',' +
IntToStr(I)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := False;
Timer1.Enabled := True;
ShowMessage('Hello!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := False;
Timer1.Enabled := True;
MessageDlg('Are you ok?', mtWarning, [mbYes, mbNo], 0);
end;
lxpbuaa 2003-09-11
  • 打赏
  • 举报
回复
玩过联众的游戏么,如果你大量使用这样的消息窗口,可以自定义一个而不是直接使用MessageBox。然后在其内部使用一个定时器(可以用TTimer或者API函数),在默认时间结束时自动关闭它。

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧