如何关闭所有的窗体
xjhwc 2011-08-23 07:29:35 程序是个触摸屏软件,需要增加一个功能:如果界面停留在某个窗体上,使用的人走了,过10分钟鼠标没有如何操作后,启动XP的屏幕保护。下一个使用的人一点屏幕,把所有打开的窗体关闭,程序回到主窗体上。主窗体->form1->form2->form3->form4->form5,窗体都是用new创建,用ShowModal()显示,界面停留在form5上,10分钟后XP屏幕保护启动,同时删除form5,form4,form3,form2,form1,留下主窗体。
//---------------------------------------------------------------------------
void __fastcall Tmain_s_Form::ProcessMessage(TMsg &message,bool &handled)
{
//还原到主窗体上来
if(message.message==WM_SYSCOMMAND && message.wParam==SC_SCREENSAVE)//已经可以判断到XP屏保启动
{
TStringList *form_name=new TStringList;
for(int i=0;i<=Screen->FormCount-1;i++)
{
form_name->Add(Screen->Forms[i]->Name);//装入6个窗体的CAPTION,每个窗体的CAPTION都不会相同
}
HWND hwnd;
for (int j=0;j<=form_name->Count-1;j++)
{
hwnd=FindWindow(NULL,form_name->Strings[j].c_str());//从后往前搜索窗体CAPTION
SendMessage(hwnd,WM_SYSCOMMAND,SC_CLOSE,0);//发送消息,让窗体关闭
}
}
}
//---------------------------------------------------------------------------
现在问题:XP屏保启动后,只删除了FORM5,剩下的都没有删除,什么原因造成的?或者后什么其他好的办法实现这个功能。