hur.cn - 华软网

 热门搜索

UpdateData();死机

  作者:未知    来源:网络    更新时间:2011/4/15
加了UpdateData();后,在DEBUG下看不出所有问题,但在RELEASE下就死循环了。注释掉该语句又是好的。什么原因?我用的VC6
---华软 网友回答---
用getwindowtext 或 setwindowtext 吧。
---华软网友回复---
你在那里调用UpdateData()的?
---华软网友回复---
是否是在线程里用UpdateData()。。线程中不能用UpdateData(),得向主线程发送消息
---华软网友回复---
代码吧,这样看不出问题
---华软网友回复---
在子线程用的吧??要不是的话可能是装的版本有问题
---华软网友回复---
代码无真相
---华软网友回复---
楼主贴代码吧。
---华软网友回复---
下面是代码。到最后一行就死了,然则DEBUG下是好的。就是RELEASE就死。

void CPageSection::ShowSelected()
{
char tmp[64];

if (SelType==0 &&
pParentDialog && ((CPjinSectionDlg *)pParentDialog)->m_Type==PJ_DISPOSE )
{
if (!m_SelFace) return;
int count =  m_SelFace.GetCount();
for(int i = count-1; i>=0; i--)
m_SelFace.DeleteString(i);

int num = lstFace.count();
ENTITY_LIST tlist;
tlist.clear();
tlist.init();
lstFace.init();
ENTITY *ent = lstFace.next();
while (ent)
{
if (is_GEOM(ent)) tlist.add(ent);
ent = lstFace.next();
}

lstFace.clear();
lstFace.init();
for (i=0;i<tlist.count();i++)
{
lstFace.add(tlist[i]);
}
 

for (i=0; i<lstFace.count(); i++)
{
GEOM_ENTITY *geom0 = (GEOM *)lstFace[i];
sprintf(tmp,"组 %d",i+1);
m_SelFace.AddString(tmp);
}

UpdateData();
GotoDlgCtrl(GetDlgItem(IDC_LIST_FACE));

return;
}
switch ( SelType )
{
case 0:
{
if (!m_SelFace) return;
int count =  m_SelFace.GetCount();
for(int i = count-1; i>=0; i--)
m_SelFace.DeleteString(i);

int num = lstFace.count();
ENTITY_LIST tlist;
tlist.clear();
tlist.init();
lstFace.init();
ENTITY *ent = lstFace.next();
while (ent)
{
if (is_FACE(ent)) tlist.add(ent);
ent = lstFace.next();
}

lstFace.clear();
lstFace.init();
for (i=0;i<tlist.count();i++)
{
lstFace.add(tlist[i]);
}
 
WPjinTreeView *tv = GetCurrentPjinTreeView();
if (!tv) return;

for (i=0; i<lstFace.count(); i++)
{
PJ_INSTANCE *pFace = tv->Tview_FaceToPJINSTANCE((FACE *)lstFace[i]);
if (pFace) m_SelFace.AddString(pFace->name());
}

UpdateData();


---华软网友回复---
这代码写的够烂
---华软网友回复---
引用 9 楼 mlqxj35674 的回复:
这代码写的够烂


++
---华软网友回复---
注释掉UpdateData();是好的。WHY?

---华软网友回复---
UpdateData()等效于UpdateData(true),从控件取变量采取
一般放在控件函数的最起头
你在最后面放这个干嘛?

---华软网友回复---
引用 12 楼 zxhx 的回复:
UpdateData()等效于UpdateData(true),从控件取变量采取
一般放在控件函数的最起头
你在最后面放这个干嘛?
对,默许的TRUE是从控件获得变量;如果你想让数据回显,就得:UpdateData(false);
---华软网友回复---
UpdateData只可在CWnd的之类中可用。
在其余自定义的非CWnd子类中用,会产生异常。

UpdateData(TRUE)是把控件界面值更新到对应的 控件变量。
---华软网友回复---
UpdateData只可在CWnd的子类中可用
粘代码用C++的格式
---华软网友回复---
  class="deleted_message"> 该回复于2011-04-18 08:36:33被版主删除        
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。