this->Hide();
Form2->Show();
现在在任务栏上,右键点击会出现
如何才能,实现选择“关闭”后,执行窗体最小化的事件。(现在点击‘关闭’,应用程序会结束)
12 个解决方案
#1
void __fastcall TForm2::FormCloseQuery(TObject *Sender, bool &CanClose)
{
CanClose = false;
Application->Minimize();
}
但这时用Close()就退不出程序了,得搞个按钮或菜单来执行Application->Terminate();
#2
点击关闭,仍然要退出应用程序....
#3
说明下,我的环境是BCB6,谢谢。
#4
恩,应该写Form1的OnCloseQuery才对
#5
然后再Form2的OnCloseQuery中写
Application->Terminate();
就能退出程序了
Application->Terminate();
就能退出程序了
#6
截获窗体的WM_SYSCOMMAND消息,判断Msg.WParam == SC_CLOSE时执行最小化操作,并且直接返回。
设一个全局的bool标志,当需要关闭时,将此标志设为true,并且在截获消息中判断一下。
设一个全局的bool标志,当需要关闭时,将此标志设为true,并且在截获消息中判断一下。
#7
妖哥的意思是:
如果要form2的任务栏右键“关闭”事件实现隐藏该窗体(不结束应用程序),要这样写?
void __fastcall TForm2::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(Msg.hwnd==Application->Handle)
{
if(Msg.message==WM_SYSCOMMAND && Msg.wParam==SC_CLOSE)
{
Hide();
Handled=true;
}
}
}
#8
这样一来,form2的任务栏右键“关闭”能实现该窗体隐藏,并不结束应用程序;但程序启动的时候(不点击form1中的button之前),form1的任务栏右键“关闭”却不起作用了。
#9
你应该把ApplicationEvents组件放到主窗体也就是Form1上,然后相应的,把OnMessage事件的处理函数也写到Form1的单元中。
#10
按照上面做了后,form2的的任务栏右键“关闭”却不起作用了。
#11
我现在用Win7,没有办法测试你说的情况。那你在两个Form里都加入ApplicatinEvents试试。
#12
恩,我就是在2个窗体都加了ApplicatinEvents,才正常了。多谢大家了
#1
void __fastcall TForm2::FormCloseQuery(TObject *Sender, bool &CanClose)
{
CanClose = false;
Application->Minimize();
}
但这时用Close()就退不出程序了,得搞个按钮或菜单来执行Application->Terminate();
#2
点击关闭,仍然要退出应用程序....
#3
说明下,我的环境是BCB6,谢谢。
#4
恩,应该写Form1的OnCloseQuery才对
#5
然后再Form2的OnCloseQuery中写
Application->Terminate();
就能退出程序了
Application->Terminate();
就能退出程序了
#6
截获窗体的WM_SYSCOMMAND消息,判断Msg.WParam == SC_CLOSE时执行最小化操作,并且直接返回。
设一个全局的bool标志,当需要关闭时,将此标志设为true,并且在截获消息中判断一下。
设一个全局的bool标志,当需要关闭时,将此标志设为true,并且在截获消息中判断一下。
#7
妖哥的意思是:
如果要form2的任务栏右键“关闭”事件实现隐藏该窗体(不结束应用程序),要这样写?
void __fastcall TForm2::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(Msg.hwnd==Application->Handle)
{
if(Msg.message==WM_SYSCOMMAND && Msg.wParam==SC_CLOSE)
{
Hide();
Handled=true;
}
}
}
#8
这样一来,form2的任务栏右键“关闭”能实现该窗体隐藏,并不结束应用程序;但程序启动的时候(不点击form1中的button之前),form1的任务栏右键“关闭”却不起作用了。
#9
你应该把ApplicationEvents组件放到主窗体也就是Form1上,然后相应的,把OnMessage事件的处理函数也写到Form1的单元中。
#10
按照上面做了后,form2的的任务栏右键“关闭”却不起作用了。
#11
我现在用Win7,没有办法测试你说的情况。那你在两个Form里都加入ApplicatinEvents试试。
#12
恩,我就是在2个窗体都加了ApplicatinEvents,才正常了。多谢大家了