关于MDI子窗口的关闭问题_C++ Builder论坛 _基础类
作者:佚名 来源:论坛 更新时间:2002-2-12 等级:★★★
关于MDI子窗口的关闭问题 华软论坛 2002-02-12 22:18:52 在 C++ Builder / 基础类 提问
我在FORM1的BUTTON里写如下代码:
TForm2 *Point=new TForm2(this);
Point->Width=380;
Point->Height=275;
Point->Show();
然后在子窗口FORM2的BUTTON事件里写:
Form1->Point->Close();
delete Point;
但发现在FORM2里根本调用不了Point指针,也就是说关闭不了子窗口。
我也试过写
SendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0);
但都只是把子窗口最小化,请问要怎样才能关闭子窗口,而不是最小化?
问题点数:20、回复次数:12
2 楼 回复于 2002-02-12 22:26:08 得分 0
delete From1->Point;
你直接delete Point;
肯定是不行的啊!
3 楼 回复于 2002-02-12 22:33:25 得分 0
不行呀,在FORM2里我已经把FORM1的头文件包含进来了
我打Form1-> ,根本都不见Point蹦出来,没办法,于是我就直接写:
delete Form1->Point;
错误信息是:Unit2.cpp(20): E2316 'Point' is not a member of 'TForm1'
4 楼 回复于 2002-02-12 22:44:30 得分 5
哦,对对,你的Point是个局部变量啊,你应该什么为全局变量啊。
Point只在Button的Click事件中有效。你的这种方法造成了资源泄漏哦。你把
TForm2 *Point;这一行放在Form1的Class定义中。就可以了。
5 楼 回复于 2002-02-12 22:45:22 得分 0
什么=设置,拼音加加总是打错了。
6 楼 回复于 2002-02-12 22:54:21 得分 0
如果把 TForm2 *Point 放在头文件里 ,就会有如下错误:
[C++ Error] Unit1.h(21): E2303 Type name expected
[C++ Error] Unit1.h(21): E2139 Declaration missing ;
7 楼 回复于 2002-02-12 22:55:35 得分 0
不知为什么不能这样声明全局变量
8 楼 回复于 2002-02-13 00:01:51 得分 15
我不懂电脑呀,不过还是看出了几点东西,已经调试通过。
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TForm2 *ppp;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ppp=new TForm2(NULL);
ppp->Width = 380;
ppp->Height=275;
ppp->Show();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
extern TForm2 *ppp;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
ppp->Close();
delete ppp;
}
//---------------------------------------------------------------------------
9 楼 回复于 2002-02-13 00:11:40 得分 0
对了,还要把TFrom2设为动态加载的。
10 楼 回复于 2002-02-13 00:22:35 得分 0
看来我是文盲了
11 楼 回复于 2002-02-24 15:24:18 得分 0
好象”三十年孤独“的程序不能调式通过呀!
12 楼 回复于 2002-03-30 12:01:38 得分 0
Action = caFree;
====================================================
====================================================
订阅免费电子杂志〈名人传记〉<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
每期发送电子图书,广读博览融汇贯通。阅读电子书时,请注意保护视力。╭○═○╮╭◎═◎╮╭●═●╮同步发行《名人传记简装版》简装版只包含附件联接地址,大小控制在80k以内。同时发送《热点》期刊
1 邮件订阅方式
向下面的邮件地址发一封信,邮件正文(不是标题)填写subscribe zhuanji
1.主页订阅
主页地址一
http://list.cn99.com/cgi-bin/getlsts?listname=zhuanji
主页地址二 http://yjxsuccess.blog.hexun.com/