PostMessage(Handle, CM_EXIT, 0, 0);可靠吗?

quantum 2002-10-23 02:23:14
兄弟姐妹们, 我向一个Edit发送了一条消息它却没收到, 目的是让收到消息的控件失去焦点就相当于让其触发OnExit事件, 如何解决的?

测试程序如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SUIEdit, SUIButton;

const
WM_EditExitMsg = WM_User+100;

type
TForm1 = class(TForm)
suiButton1: TsuiButton;
suiEdit1: TsuiEdit;
suiEdit2: TsuiEdit;
Edit1: TEdit;
Button1: TButton;
procedure suiButton1Click(Sender: TObject);
procedure suiEdit1Exit(Sender: TObject);
private
{ Private declarations }
procedure BurstOnExit;
public
{ Public declarations }
end;

var
Form1: TForm1;
p:tpoint;
i:hwnd;

implementation

{$R *.DFM}

procedure TForm1.BurstOnExit;
var
Handle: THandle;
begin
GetCursorPos(P);
Handle:= WindowFromPoint(Mouse.CursorPos);
PostMessage(Handle, CM_EXIT, 0, 0);
end;

procedure TForm1.suiButton1Click(Sender: TObject);
begin
BurstOnExit;
end;

procedure TForm1.suiEdit1Exit(Sender: TObject);
begin
ShowMessage('Receive!');
Close;
end;

end.
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DelUser 2002-10-25
  • 打赏
  • 举报
回复
PostMessage(Edit1.Handle, CM_EXIT, 0, 0);
quantum 2002-10-24
  • 打赏
  • 举报
回复
大侠, 我用的是第三方控件, 你就当我的Edit在另一个窗体吧, Delphi标准的控件是会自动转换焦点的, 而第三方控件做得不完整, 所以我才想自己解决。
takdick 2002-10-24
  • 打赏
  • 举报
回复
呵呵,別叫我大俠,受之有愧呀,我還只是個菜鳥.
如果你的窗體只有一個edit的話,試試以下代碼:
procedure tform1.button1click(sender:tobject);
var
h:hwnd;
begin
h:=findwindowex(findwindow(nil,'your form"s caption'),0,'tedit',0);
sendmessage(h,cm_exit,0,0);
end;
takdick 2002-10-23
  • 打赏
  • 举报
回复
還不是一樣的道理嘛,按下什麼得到什麼的句柄,而不是edit的
你的brustonext實現過程有問題,windowfrompoint通常是配合timer事件執行的.
你要發送的edit是否在同一窗體呢?說清楚點呀.
quantum 2002-10-23
  • 打赏
  • 举报
回复
如果不是按下button1呢? 例如按Image1, Panel1。
takdick 2002-10-23
  • 打赏
  • 举报
回复
如果是在一窗體,直接postmessage(edit1.handle,cm_exit,0,0);
你按下button1後,mouse.cursorpos返回值是button1的位置,得到的句柄也是button1的,edit當然沒反應呀.
quantum 2002-10-23
  • 打赏
  • 举报
回复
按下Button1后发送消息。

5,388

社区成员

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

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