我在CPropertyPage的页面上加入一个list control控件和一个radio控件
对于list control控件,在CPropertyPage的OnInitDialog内初始化list control控件如下:
    int iWidth = 50;
    m_ListFile.InsertColumn(0, "Content", LVCFMT_LEFT, 12*iWidth, -1);
    m_ListFile.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
然后在属性页面的radio控件对应编写如下代码:
void CPage1::OnRadio1() //CPage1是属性页面的类
{
int iItem = m_ListFile.GetItemCount();
LV_ITEM lvi;
lvi.mask = LVIF_TEXT|LVIF_PARAM;
lvi.iItem = iItem; CString strFileName="AAAA:";
lvi.pszText = strFileName.GetBuffer(0);
m_ListFile.InsertItem(&lvi);
m_ListFile.SetItemText(iItem, 0, strFileName.GetBuffer(0));
strFileName = "BBBB";
lvi.pszText = strFileName.GetBuffer(0);
m_ListFile.InsertItem(&lvi);
m_ListFile.SetItemText(iItem, 0, strFileName.GetBuffer(0));
}
同样的代码在CDialog类的页面,以及tab control的分页面中,如果多次点击radio1控件,会从表的顶端每次生成
“BBBB
  AAAA:”两句话,但在使用CPropertyPage的属性页面上多次点击该radio控件后,出现的结果却不规律,有时候点击一次会出现两个BBBB,在list中显示位置也不是仅从顶端出现,让我很疑惑。
请问是因为我初始化有问题呢,还是CPropertyPage本身的机制有什么特别的地方。
ps:对于list control的初始化,我也用虚函数试过,效果是一样的。

解决方案 »

  1.   

    老大也说你了, 你资源泄露了----也没看到UpdateData(FASLE);初始化代码没看出有什么问题, 一般都放在OnInitDialog()里
      

  2.   

    谢谢ls几位的回复先!
    可是我把两段代码改成下面这样的结构:
    strFileName = "BBBB";
    lvi.pszText = strFileName.GetBuffer(0);
    m_ShowList.InsertItem(&lvi);
    m_ShowList.SetItemText(iItem, 0, strFileName.GetBuffer(0));
    strFileName.ReleaseBuffer();
    m_ShowList.UpdateData(FALSE);
    操作结果没有发生变化,还是出现同样的问题。
    而一样的代码在CDialog类的页面和使用tab control都没有出现这个问题,这是为啥呢?
    期待进一步指教,多谢!