先说一下要求,一个应用程序运行期间创建一个主窗体,然后创建一个无模式窗体,无模式窗体在windows任务栏占有一个独立的标签,要求主窗体和无模式窗体可以独立接受用户输入。
要求说完了,说说测试过程。
创建一个应用程序,建立一个窗体form1,再建立一个窗体form2,然后form1上加入2个button,1个button通过show方法启动form2,form2使用一些方法可以在任务栏显示标签,在另外一个button里showmessage一个模式消息框。
测试过程很简单,但是有个问题很麻烦,就是不显示消息框时,form1和form2都能接收用户点击消息,都能操作,但是显示了消息框以后,按道理消息框是模式对话框,form1不能接收用户输入,form2应该还能接收用户输入,但是实际情况是form1、form2都不能接收用户输入了,有没有什么办法让form2还能接收用户输入。另在vc和c#上都测试过,MFC的窗口就没问题,但是C#效果和delphi一样。
多窗口无模式
要求说完了,说说测试过程。
创建一个应用程序,建立一个窗体form1,再建立一个窗体form2,然后form1上加入2个button,1个button通过show方法启动form2,form2使用一些方法可以在任务栏显示标签,在另外一个button里showmessage一个模式消息框。
测试过程很简单,但是有个问题很麻烦,就是不显示消息框时,form1和form2都能接收用户点击消息,都能操作,但是显示了消息框以后,按道理消息框是模式对话框,form1不能接收用户输入,form2应该还能接收用户输入,但是实际情况是form1、form2都不能接收用户输入了,有没有什么办法让form2还能接收用户输入。另在vc和c#上都测试过,MFC的窗口就没问题,但是C#效果和delphi一样。
多窗口无模式
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.Show;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage('sdfs');
end;unit2就是基本窗口,没有额外代码
难道vcl的ShowModal和MFC的Domodal实现不一样,要重载自己写ShowModal?
你的VC代码怎么写的,应该不是父子关系吧
MFC里无模式窗口就试了一种,没有父对象的窗口类,效果很自然就行
改成
Form2 := TForm2.Create(Application);
不过这样要求程序中所有的模式对话框都要继承自这个重载过ShowModal方法的类才行