Create创建控件成功后不显示。
以下是我点击按钮创建控件的方法:
点击按钮后,这个方法可以实现创建并能够显示控件。但是手动调用这个方法的话就不行。调试的结果是create创建成功,但是界面不显示,当我再按这个按钮的时候程序走到//崩溃处 崩溃。
求解这个是什么原因?
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创建成功,但是界面不显示,当我再按这个按钮的时候程序走到//崩溃处 崩溃。
求解这个是什么原因?
...全文
相关推荐
Delphi 中自做动态显示的控件
Delphi 中自做动态显示的控件 Delphi 中自做动态显示的控件
VisualC++中创建MapX控件
首先选择File菜单中的New命令,弹出New对话框。选择MFCAppWizard(exe),并在ProjectName中输入MapxSample作为工程名称。然后单击OK按钮,进入应用程序向导的第一步。通过应用程序向导创建一多文档(或单文档)界面应用程序。 在创建MapX控件之前,必须将MapX.h和MapX.cpp文件加入到工程中。从Project菜单中选择Add To P
CListCtrl控件中的第一列添加图片
在CListCtrl控件中的第一列添加图片
VC列表list上增加edit控件和combo控件实现
VC列表list上增加edit控件和combo控件实现。博客地址:http://blog.csdn.net/bingdianlanxin,有问题欢迎留言!
MFC模态与非模态对话框的创建
MFC模态与非模态对话框的创建有截图详细步骤


界面
