BvcmCorrectLineCellCtr* m_cellUp;
m_cellUp = new BvcmCorrectLineCellCtr(m_upperPoint->GetSize(), m_manager,
m_appName, ID_TMPL_CORPAIR_UP, BvcmEDIT_MAX, this);
....delete m_cellUp;
m_cellUp = NULL;m_cellUp = new BvcmCorrectLineCellCtr(m_upperPoint->GetSize(), m_manager,
m_appName, ID_TMPL_CORPAIR_UP, BvcmEDIT_MAX, this);这样写对吗?
m_cellUp = new BvcmCorrectLineCellCtr(m_upperPoint->GetSize(), m_manager,
m_appName, ID_TMPL_CORPAIR_UP, BvcmEDIT_MAX, this);
....delete m_cellUp;
m_cellUp = NULL;m_cellUp = new BvcmCorrectLineCellCtr(m_upperPoint->GetSize(), m_manager,
m_appName, ID_TMPL_CORPAIR_UP, BvcmEDIT_MAX, this);这样写对吗?
{
BvcmCmdCorrectPage::OnInitDialog();
CRect rct;
m_cLayer.GetWindowRect(&rct);
ScreenToClient(&rct);
m_cFixLayer.MoveWindow(&rct); //##FCCMTL##00000040##FCCMTL##
BvsPalette palette;
palette.GetFromCad(m_manager);
BvsPen pen;
pen.GetFromCad(m_manager);
BvsLayer layer;
layer.GetFromCad(m_manager.Data());
const BvsCoordinatesTable& table = m_manager.Data().CoordinatesTable();
m_cLayer.Init(layer, palette);
m_cPen.Init(pen, palette);
m_cLevel.Init(table, palette); if (m_manager.IsKeisansho()) {
GetDlgItem(IDC_LAYER_TITLE)->EnableWindow(FALSE);
m_cLayer.EnableWindow(FALSE);
GetDlgItem(IDC_LEVEL_TITLE)->EnableWindow(FALSE);
m_cLevel.EnableWindow(FALSE);
} //##FCCMTL##00000041##FCCMTL##
ASSERT(NULL == m_cellUp);
ASSERT(NULL == m_cellLw);
if (!IsFCom()) {
m_cellUp = new BvcmCorrectLineCellCtr(m_upperPoint->GetSize(), m_manager,
m_appName, ID_TMPL_CORPAIR_UP, BvcmEDIT_MAX, this);
m_cellLw = new BvcmCorrectLineCellCtr(m_lowerPoint->GetSize(), m_manager,
m_appName, ID_TMPL_CORPAIR_LW, BvcmEDIT_MAX, this); ASSERT(NULL != m_cellUp);
ASSERT(NULL != m_cellLw); CWnd* pStc1 = GetDlgItem(IDC_CORPAIR_STC_CELL1);
CWnd* pStc2 = GetDlgItem(IDC_CORPAIR_STC_CELL2);
CRect rect1, rect2;
pStc1->GetWindowRect(rect1);
pStc2->GetWindowRect(rect2);
ScreenToClient(rect1);
ScreenToClient(rect2); if (!m_cellUp->Create(rect1, IDC_CORPAIR_STC_CELL1)) {
ASSERT(FALSE);
return FALSE;
}
if (!m_cellLw->Create(rect2, IDC_CORPAIR_STC_CELL2)) {
ASSERT(FALSE);
return FALSE;
}
m_cellUp->SetWindowPos(pStc1, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW | SWP_NOZORDER);
m_cellLw->SetWindowPos(pStc2, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW | SWP_NOZORDER); pStc1->DestroyWindow();
pStc2->DestroyWindow(); m_cellUp->SetVal(*m_upperPoint, m_nLevel);
m_cellLw->SetVal(*m_lowerPoint, m_nLevel);
} UpdateData(FALSE);
SwitchLayerCtrl(); if (m_manager.DM_ExistAdmin()) {
//##FCCMTL##00000042##FCCMTL##
//##FCCMTL##00000043##FCCMTL##
} else {
//##FCCMTL##00000044##FCCMTL##
//##FCCMTL##00000045##FCCMTL##
//##FCCMTL##00000046##FCCMTL##
//##FCCMTL##00000047##FCCMTL##
GetDlgItem(IDC_CORPAIR_SLOPE_DIVIDE )->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CORPAIR_SLOPE_POSFRAME)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CORPAIR_SLOPE_POSUPPER)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CORPAIR_SLOPE_POSLOWER)->ShowWindow(SW_HIDE);
}
OnSlopeAdd();
UpdateCadImage(0, 0, true); return TRUE;
}
delete m_cellUp;
m_cellUp = NULL;
}
if (m_cellLw != NULL) {
delete m_cellLw;
m_cellLw = NULL;
}OnInitDialog(); //@xyc041028
m_cellUp = NULL;
m_cellLw = NULL;
OnInitDialog(); //@xyc041028
换个名字是什么意思,因为我这里指向同一个列表,只是列表里的东西变了,要让他再生成一次。
假如:因为列表里是别人的类啊,没有接口所以有能直接修改啊
new顾名思义是申明变量时才使用,因而new 了之后就不能再new了:比如一个孩子出生了就不能让他再出生一次。
既然不能用new将指针重新定位,那么该怎么做?
1、大家都知道的方法:
Class A;
A* p = new A(...);
//..
A ATemp = ...;
p = &A;2.使用auto_ptr
auto_ptr< A > pi( new A( ... ) );
//重新定位
p_auto_int.reset( new A( ... ) );
auto_ptr.reset( new A( ... ) ); //呵呵,开始本来想用int 做例子的 :)
A* p = new A(...);
你这里有一个new ,不需要删除吗?
m_cellUp = NULL;
m_cellLw = NULL;
OnInitDialog(); //@xyc041028
new分配的,使用后都要用delete删除