加入以下代码模态窗体点击窗体关闭按钮无法关闭窗体!

Mr Dang 2015-06-28 10:58:42

procedure TForm2.btn1Click(Sender: TObject);
var
Msg:TMsg;
begin
while GetMessage(Msg,0,0,0) do
begin
if Msg.message=WM_USER+1000 then
begin
if Msg.lParam=0 then
begin
ModalResult:=mrOk;
end else
begin
ModalResult:=mrCancel;
end;
Exit;
end else
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
end;


Form2是模态窗体,如果点击了按钮btn1,然后再点击窗体的关闭按钮,无法关闭窗体。
而如果是正常创建的非模态窗体,加入以上代码,并点击btn1按钮后,点击关闭窗体的关闭按钮,可以正常关闭窗体。

百思不得其解,求解?
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr Dang 2015-06-28
  • 打赏
  • 举报
回复
不知道还有其他好方法没?
Mr Dang 2015-06-28
  • 打赏
  • 举报
回复
自己解决,检测鼠标按键点击窗体右上角的关闭发送的消息, 模拟发条WM_QUIT消息 退出While 接分了 。

procedure WmSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;


procedure TForm2.WmSysCommand(var Msg:TMessage);
begin
    inherited;
    if Msg.WParam = SC_CLOSE then
    begin
        PostMessage(Self.Handle,WM_QUIT,0,0);
    end;
end;
Mr Dang 2015-06-28
  • 打赏
  • 举报
回复
自己顶,模态窗体关闭难道不Postmessage WM_QUIT 这条消息?导致while GetMessage(Msg,0,0,0) do 这里没办法退出循环。

5,386

社区成员

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

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