关于MessageBox的自动取消问题

hmily1688 2005-12-28 05:52:07
我用MessageBox(self.Handle,'对方邀请你视频对话,你同意吗?','提示',MB_OKCancel);在对方的屏幕上弹出了这一窗体,如果我又取消了如何把这个MessageBox给取消掉,发送哪个消息、
...全文
341 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
StealDream 2005-12-29
  • 打赏
  • 举报
回复
郁闷,发个消息过切ShowModal不就行了,晓得你在ShowModal之后还要马不停蹄的做其他事
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
不过Application.MessageBox弹出后还是无法处理其它消息,只能采用类似于MSN或QQ的哪种邀请方式了。郁闷
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
我还以为这Dialog没有Handle了,不过这东西也算是窗体,呵呵,现在结帐吧。N长时间不来CSDN了。看到有的回答很伤心。
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
明天早上再过来给分
ccrun.com 2005-12-28
  • 打赏
  • 举报
回复
窗口当然有Handle了。呵呵。
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
我的Message(Self.Handle,'test','aaa',MB_OKCANCEL); 用上面的代码能把这个MessaegBox给关掉。
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
搞定了,用如下代码,原来这玩艺是有Handle的,
var
tmpHandle:THandle;
begin
tmphandle:=Findwindow(nil,pchar('aaa'));
SendMessage(tmphandle,wm_close,0,0);
end;
谢谢CCRUN,不过也感谢星级饭桶贴的代码,虽然不能运行吧
mengjj 2005-12-28
  • 打赏
  • 举报
回复
还不如自己写个dialog
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
To jinjazz(近身剪(充电中...)) 红星是很眨眼,不要晃得我眼花,看清问题内容再答题
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
To ccrun(老妖)(www.ccrun.com) ,经常上你的网站看关于BCB的资料,特表感谢先,这是对话框不知有没有Handle.
hmily1688 2005-12-28
  • 打赏
  • 举报
回复
楼上的你不明白我的意思,我的窗体用到了回调函数在弹出这个对话框的同时还要进行一些其它的处理,如果用ShowModal则不能进行其它的处理了,只有等处理完这个窗体才能进行其它的操作。
StealDream 2005-12-28
  • 打赏
  • 举报
回复
楼主一定也要给我分哦
StealDream 2005-12-28
  • 打赏
  • 举报
回复
干嘛非得要用 MessageBox 来显示对话框喃
自己定制一个窗口然后ShowModal 啊,这样可通过变量方便的操作,而且界面可以做得更漂亮,超人的方法多麻烦呀
todouwang 2005-12-28
  • 打赏
  • 举报
回复
执行cancel.click
jinjazz 2005-12-28
  • 打赏
  • 举报
回复
{ const
mrNone = 0;
mrOk = idOk;
mrCancel = idCancel;
mrAbort = idAbort;
mrRetry = idRetry;
mrIgnore = idIgnore;
mrYes = idYes;
mrNo = idNo;
mrAll = mrNo + 1;
mrNoToAll = mrAll + 1;
mrYesToAll = mrNoToAll + 1;}

if MessageBox(self.Handle,'对方邀请你视频对话,你同意吗?','提示',MB_OKCancel)=mrOk then
begin
end;
xzhifei 2005-12-28
  • 打赏
  • 举报
回复
转贴一个自动关闭的:

function EnumFunc(hwnd: THandle; lpParam: Integer): Boolean; stdcall;
var
Buffer: array [0..MAX_TITLE - 1] of Char;
begin
Result := True;
FillChar(Buffer, SizeOf(Buffer), 0);
if GetWindowText(hwnd, Buffer, SizeOf(Buffer)) > 0 then
if PData(lpParam)^.Title = Buffer then
begin
PData(lpParam)^.hwnd := hwnd;
Result := False;
end;
end;

procedure TimerFunc(hwnd: THandle; uMsg, idEvent: UINT; dwTime: Cardinal); stdcall;

function GetTitleHandle(Title: string): THandle;
var
Data: TData;
begin
FillChar(Data, SizeOf(Data), 0);
Move(Title[1], Data.Title, Length(Title));
EnumWindows(@EnumFunc, Integer(@Data));
Result := Data.hwnd;
end;

var
Child: THandle;
begin
Child := GetTitleHandle(M_CAPTION);
if Child <> 0 then
PostMessage(Child, WM_CLOSE, 0, 0);
end;
function SplashMsgBox(const Handle: THandle; const Text: string; const aiTimeout: Integer): Integer;
begin
SetTimer(Handle, 2, aiTimeout, @TimerFunc);
Result := MessageBox(Handle, PChar(Text), PChar(M_CAPTION),
MB_OKCANCEL or MB_ICONQUESTION); { MB_OKCANCEL do not localize !! }
KillTimer(Handle, 2);
end;
ccrun.com 2005-12-28
  • 打赏
  • 举报
回复
FindWindow找到该对话框的句柄,然后发送WM_CLOSE消息。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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