我用MessageBox(self.Handle,'对方邀请你视频对话,你同意吗?','提示',MB_OKCancel);在对方的屏幕上弹出了这一窗体,如果我又取消了如何把这个MessageBox给取消掉,发送哪个消息、

解决方案 »

  1.   

    FindWindow找到该对话框的句柄,然后发送WM_CLOSE消息。
      

  2.   

    转贴一个自动关闭的: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;
      

  3.   

    { 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;
      

  4.   

    干嘛非得要用 MessageBox 来显示对话框喃
    自己定制一个窗口然后ShowModal 啊,这样可通过变量方便的操作,而且界面可以做得更漂亮,超人的方法多麻烦呀
      

  5.   

    楼上的你不明白我的意思,我的窗体用到了回调函数在弹出这个对话框的同时还要进行一些其它的处理,如果用ShowModal则不能进行其它的处理了,只有等处理完这个窗体才能进行其它的操作。
      

  6.   

    To   ccrun(老妖)(www.ccrun.com) ,经常上你的网站看关于BCB的资料,特表感谢先,这是对话框不知有没有Handle.
      

  7.   

    To  jinjazz(近身剪(充电中...)) 红星是很眨眼,不要晃得我眼花,看清问题内容再答题
      

  8.   

    搞定了,用如下代码,原来这玩艺是有Handle的,
    var
      tmpHandle:THandle;
    begin
       tmphandle:=Findwindow(nil,pchar('aaa'));
       SendMessage(tmphandle,wm_close,0,0);
    end;
    谢谢CCRUN,不过也感谢星级饭桶贴的代码,虽然不能运行吧
      

  9.   

    我的Message(Self.Handle,'test','aaa',MB_OKCANCEL); 用上面的代码能把这个MessaegBox给关掉。
      

  10.   

    我还以为这Dialog没有Handle了,不过这东西也算是窗体,呵呵,现在结帐吧。N长时间不来CSDN了。看到有的回答很伤心。
      

  11.   

    不过Application.MessageBox弹出后还是无法处理其它消息,只能采用类似于MSN或QQ的哪种邀请方式了。郁闷
      

  12.   

    郁闷,发个消息过切ShowModal不就行了,晓得你在ShowModal之后还要马不停蹄的做其他事