窗体最小化问题(急)解决就给分!

yst_killed 2003-09-15 12:54:18
已经有人指导用下列代码可以实现最小化
TForm2 *Form2=new TForm2(Application);
long dwStyle=::GetWindowLong(Form2->Handle,GWL_STYLE);
Form2->ParentWindow=::GetDesktopWindow();
::SetWindowLong(Form2->Handle,GWL_STYLE,dwStyle);
Form2->Show();


确实能实现最小化 !!!

可是出了其他的问题:我在打开的form2里用ShowMessage("呵呵")时。应该在form2的窗体上显示"呵呵"。可是结果不是这样的,form2不见了只有Message窗体上显示“呵呵”,这个message窗体后面是别的窗体!就不是form2?????????
请问怎么解决!!谢谢大家!!
最好给个例子!!
...全文
32 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yst_killed 2003-09-27
  • 打赏
  • 举报
回复
好方法
catling00 2003-09-15
  • 打赏
  • 举报
回复
ShowMessage本来就是另外弹出的对话框,他不是Form2的

你若想自动弹出一个“呵呵”的对话框,完全不用创建Form2,只要在Form1的指定条件下用ShowMessage("呵呵");执行时就会自动弹出“呵呵”对话框了;

若你一定要创建Form2用它来显示“呵呵”,那么你可以在Form2上加一个Label1把它的Caption属性设为“呵呵”就可以了
supwjhuLoveCjj 2003-09-15
  • 打赏
  • 举报
回复
季大侠 高人也。又学习一把
jishiping 2003-09-15
  • 打赏
  • 举报
回复
让Form2出现在任务栏上(象Winword.exe、以及MSN那样),正常的写法是重载TForm的
虚拟函数CreateParams。
class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
protected:
void __fastcall CreateParams(TCreateParams ¶ms);
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};

__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::CreateParams(TCreateParams ¶ms)
{
TForm::CreateParams(Params);
Params.WndParent = NULL; //关键是这句
}
kingcaiyao 2003-09-15
  • 打赏
  • 举报
回复
.h File
class TForm1:public TForm
{
private:
protected:
virtual void __fastcall WndProc(TMessage &Message);
public:
};
.cpp File
void __fastcall TForm1::Button1Click(TObject *Sender)
{
::SendMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);//最小化窗体
}

void __fastcall TForm1::WndProc(TMessage &Message)
{
if(Message.Msg==WM_SYSCOMMAND){
if(Message.WParam==SC_RESTORE){
ShowMessage("呵呵");//当窗体由最小化恢复到正常时显示”呵呵“
}
}
TForm::WndProc(Message);
}
ccrun.com 2003-09-15
  • 打赏
  • 举报
回复
说说你的具体要求,也好对症下药。
yst_killed 2003-09-15
  • 打赏
  • 举报
回复
我去试试
jishiping 2003-09-15
  • 打赏
  • 举报
回复
“打开form2后在用showmessage(“”)时,窗体form2就不见了!!只有message窗体”
------------------------------------------------------------------------------
Form2 不是不见了,而是跑到其它窗口后面去了。关闭ShowMessage的消息框,Form2就会
跑到前面了。使用API函数MessageBox就没有这个问题了。


“已经有人指导用下列代码可以实现最小化”
------------------------------------------------------------------------------
你说的不是什么最小化,而是让Form2出现在任务栏上(象Winword.exe、以及MSN那样)。
jishiping 2003-09-15
  • 打赏
  • 举报
回复
------------------------------------------------------------------------------
“打开form2后在用showmessage(“”)时,窗体form2就不见了!!只有message窗体”
------------------------------------------------------------------------------
Form2 不是不见了,而是跑到其它窗口后面去了。关闭ShowMessage的消息框,Form2就会
跑到前面了。使用API函数MessageBox就没有这个问题了。


------------------------------------------------------------------------------
“已经有人指导用下列代码可以实现最小化”
------------------------------------------------------------------------------
你说的不是什么最小化,而是让Form2出现在任务栏上(向Winword.exe、以及MSN那样)。
yst_killed 2003-09-15
  • 打赏
  • 举报
回复
我是想在form2上弹出Message窗体!!
可是我用
如下的方法
TForm2 *Form2=new TForm2(Application);
long dwStyle=::GetWindowLong(Form2->Handle,GWL_STYLE);
Form2->ParentWindow=::GetDesktopWindow();
::SetWindowLong(Form2->Handle,GWL_STYLE,dwStyle);
Form2->Show();
打开form2后在用showmessage(“”)时,窗体form2就不见了!!只有message窗体
tccsdn 2003-09-15
  • 打赏
  • 举报
回复
不知道你要达到什么样的效果,方法很多的,发个SC_RESTORE消息也可以最小化的
yst_killed 2003-09-15
  • 打赏
  • 举报
回复
怎么没人来
zihan 2003-09-15
  • 打赏
  • 举报
回复
你可以先显示Form2,然后在ShowMessage
ShowWIndow(Form2->Handle, SW_RESTORE)

13,825

社区成员

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

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