Create创建控件成功后不显示。

glovel0425 glovel0425 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是我点击按钮创建控件的方法:

void CDlgContactOther::OnBnClickedBtnAddweb()
{
// TODO: 在此添加控件通知处理程序代码
m_nControlId++;
m_nControlCount++;
CRect rect;
int count = m_arrControls.GetSize();
if(m_nControlCount>5)
{
m_vsb_Info.ShowWindow(SW_SHOW);
m_vsb_Info.SetScrollRange(0,m_nControlCount-5);
m_vsb_Info.SetScrollPos(m_vsb_Info.GetScrollPos()+1);
for(int i=0;i<count;i++)
{
if(m_arrControls.ElementAt(i) == GetDlgItem(IDC_BTN_ADDWEB)||m_arrControls.ElementAt(i) == GetDlgItem(IDC_BTN_ADDADDR)||m_arrControls.ElementAt(i)==GetDlgItem(IDC_BTN_ADDTOOL))
continue;
m_arrControls.ElementAt(i)->GetWindowRect(&rect);
ScreenToClient(&rect);
m_arrControls.ElementAt(i)->SetWindowPos(NULL,rect.left,rect.top-32,rect.Width(),rect.Height(),SWP_NOZORDER|SWP_NOSIZE);
m_arrControls.ElementAt(i)->GetWindowRect(&rect);
ScreenToClient(&rect);
}
}
m_arrControls.ElementAt(count-1)->GetWindowRect(&rect);// 崩溃处
ScreenToClient(&rect);

CWDComboBox* cmb = new CWDComboBox();
cmb->Create(WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST,CRect(35,rect.top+32,35+99,rect.top+32+20),this,m_nControlId++);
cmb->SetBorderColor(RGB(200,255,255));
cmb->SetFont(&thePrefs.m_font1);
cmb->AddString("公司网站");
cmb->AddString("微博");
cmb->AddString("博客");
cmb->AddString("个人主页");
cmb->SetDroppedWidth(100);
cmb->MoveWindow(35,rect.top+32,99,rect.top+32);
cmb->SetCurSel(0);

CWDEdit* edt = new CWDEdit();
edt->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP,CRect(147,rect.top+32,147+277,rect.top+32+20),this,m_nControlId++);
edt-> ModifyStyleEx(0, WS_EX_CLIENTEDGE, SWP_DRAWFRAME);
edt->SetBorderColor(RGB(200,255,255));
edt->SetFont(&thePrefs.m_font1);

m_arrControls.Add(cmb);
m_arrControls.Add(edt);

m_arrCmbWeb.Add(cmb);
m_arrEdtWeb.Add(edt);
Invalidate(false);
}


点击按钮后,这个方法可以实现创建并能够显示控件。但是手动调用这个方法的话就不行。调试的结果是create创建成功,但是界面不显示,当我再按这个按钮的时候程序走到//崩溃处 崩溃。

求解这个是什么原因?
...全文
评论 15
收藏 已收藏
分享
返回顶部
glovel0425
界面 15,976 成员 115,866 内容