如何设置窗体的隐藏和显示

linkboy2004 2007-03-18 10:09:29
我用了hide和show,但是如果只有一个窗体(也就是主窗体)的情况下不行
用Application->ShowMainForm=false;
然后Application->ShowMainForm=true;好像也不行


难道只有用主副窗体的方式??
...全文
355 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangar9179 2007-03-22
  • 打赏
  • 举报
回复
显示
showWindow(handle,SW_SHOW)
隐藏
showWindow(handle,SW_HIDE)
futulove 2007-03-20
  • 打赏
  • 举报
回复
WINMAIN改成
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
ShowWindow(Application->Handle,SW_HIDE);
Application->ShowMainForm=false;
Application->Run();
程序里显示
ShowWindow(Application->Handle,SW_SHOW);
Application->ShowMainForm=true;
Form1->Visible=true;
隐藏
ShowWindow(Application->Handle,SW_HIDE);
Application->ShowMainForm=false;
Form1->Visible=false;
信念 2007-03-20
  • 打赏
  • 举报
回复
Application->Initialize();
Sleep(3000);
Application->CreateForm(__classid(TForm1), &Form1);
这样似乎也可以。。。
信念 2007-03-20
  • 打赏
  • 举报
回复
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Sleep(3000);//这样可以不???
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
ccgk2005 2007-03-20
  • 打赏
  • 举报
回复
推荐使用API
/***************************************************************************\
函数名称:SetWindowPos()
函数功能:为窗口指定一个新位置和状态,也可改变窗口在内部窗口列表中的位置。
声明形式:BOOL SetWindowPos
{
HDWP hwnd,
HDWP hwndInsertAfter,
int x,
int y,
int cx,
int cy,
UNIT uFlags
};
输入参数:hwnd,要重新定位的窗口;
hwndInsertAfter,在窗口列表中,窗口hwnd会排列在这个窗口的后面,参数可用以下常量:
HWND_BOTTOM,将窗口置于窗口列表底部;
HWND_TOP,将窗口置于Z序列顶部,Z序列是窗口针对分级结构中一个给定级别显示的顺序;
HWND_TOPMOST,将窗口置于列表顶部,位于任何最顶级窗口的前面;
HWND_NOTTOPMOST,将窗口置于列表顶部,位于任何最顶级窗口的后面。
x、y,新窗口的坐标(用父窗口的客户区坐标表示);
cx、cy,指定新窗口的宽度和高度;
uFlags,指定窗口的尺寸和边框类型,参数可用以下常量:
SWP_DRAWFRAME,围绕窗口画一条边框;
SWP_HIDEWINDOW,隐藏窗口;
SWP_NOTACTIVATE,不激活窗口;
SWP_NOMOVE,保持当前位置(x、y被忽略);
SWP_NOREDRAW,窗口不自动重画;
SWP_SIZE,保持当前大小(cx、cy被忽略);
SWP_NOZORDER,保持在窗口列表的当前位置(hwndInsertAfter被忽略);
SWP_SHOWWINDOW,显示窗口;
SWP_NOOWNERZORDER,不改变Z序列的所有者(hwndInsertAfter被忽略);
SWP_NOSENDCHANGING,窗口不发出WM_WINDOWPOSCHANGING消息。
输出参数:BOOL型,true表示调用成功,false表示调用失败。
备 注:
\***************************************************************************/
XBox360 2007-03-20
  • 打赏
  • 举报
回复
project1.cpp里
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm = false;
Application->Run();

}
catch 。。。。。。。。。。。。。

}

然后Unit1.cpp
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ShowWindow(Handle,SW_SHOW);
}
linkboy2004 2007-03-18
  • 打赏
  • 举报
回复
不行。我测试过。
zwh202342 2007-03-18
  • 打赏
  • 举报
回复
也可以不用timer控件
sleep(10000);//休息十秒
linkboy2004 2007-03-18
  • 打赏
  • 举报
回复
我现在的确就是这么做的...放了个timer到acitve里面。。。希望有更好的办法
controstr 2007-03-18
  • 打赏
  • 举报
回复
用一个Timer控件,每格10秒就修改一下窗体的显示与隐藏属性
可以设一个bool属性
linkboy2004 2007-03-18
  • 打赏
  • 举报
回复
说错了.hide放在oncreate里面不行.onactive里面会出错.但我希望程序打开后一直是hide的.过10秒后show,然后再hide
linkboy2004 2007-03-18
  • 打赏
  • 举报
回复
我在oncreate用了hide和show,但是如果只有一个窗体(也就是主窗体)的情况下不行
zwh202342 2007-03-18
  • 打赏
  • 举报
回复
Form1->Hide();
Form1->show();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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