各位大神,
我自定义了一个ctrllist控件,写在了单文档的CView类OnInitialUpdate中,但是显示出来确实一个一个控件慢慢的出来,不知道怎么搞得?请帮忙
void CQCOMMultiDnloadFHLoaderView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
/************************************************************************/
InitListCtrl();
FullListCtrl();
//[]
strcpy(m_swVerPath, m_cfgData.swVerPath);
for (int i=0; i<maxLoopNum; ++i) {
m_nEnable[i] = m_cfgData.bEnable[i];
m_nComPort[i] = m_cfgData.nComPort[i];
m_pCheckEnable[i]->SetCheck(m_nEnable[i]);
CString str;
for (int j=3; j<=256; ++j) {
str.Format(_T("COM%d"), j);
m_pComboboxPort[i]->AddString(str);
}
CQCOMMultiDnloadFHLoaderView::set_DropDownHight(*m_pComboboxPort[i], 20);
m_pComboboxPort[i]->SetCurSel(m_nComPort[i]-3); // first COM3
m_pComboboxPort[i]->EnableWindow(m_nEnable[i]);
m_pEditTime[i]->SetWindowText("00m:00s");
//SendMessage(WM_US_INFOLOOP, lp, (LPARAM)"Ready");
SendMessage(WM_US_STATUS, i, m_nEnable[i] ? READY:DISENABLE);
m_pButtonStart[i]->EnableWindow(m_nEnable[i]);
}
UpdateData(FALSE);
}
void CQCOMMultiDnloadFHLoaderView::InitListCtrl()
{
CRect rcListCtrl;
CWnd* pRect = GetDlgItem(IDC_STATIC_RECT);
if (NULL == pRect) {
return;
}
pRect->GetWindowRect(&rcListCtrl);
ScreenToClient(&rcListCtrl);
m_cf = new CFont;
m_cf->CreateFont(17,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,(LPCTSTR)("Verdana"));
m_pListCtrl = new CListCtrlCustom();
m_pListCtrl->Create(WS_VISIBLE|WS_BORDER, rcListCtrl, this, IDC_LISTCTRL_RECT);
DWORD dwExStyle = LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT;//|LVS_EX_FULLROWSELECT;
m_pListCtrl->SetExtendedStyle(dwExStyle);
m_pListCtrl->RegOnSettingRect(OnSettingRect);
m_pListCtrl->SetRowHeight(25);
m_pListCtrl->ShowWindow(SW_SHOW);
m_pListCtrl->SetFont(m_cf);
int col = -1;
m_pListCtrl->InsertColumn(++col, _T("Loop"), LVCFMT_CENTER, 82);
m_pListCtrl->InsertColumn(++col, _T("Port"), LVCFMT_CENTER, 85);
m_pListCtrl->InsertColumn(++col, _T("Time"), LVCFMT_CENTER, 75);
m_pListCtrl->InsertColumn(++col, _T("Info"), LVCFMT_CENTER, 267);
m_pListCtrl->InsertColumn(++col, _T("Status"), LVCFMT_CENTER, 80);
m_pListCtrl->InsertColumn(++col, _T("Run"), LVCFMT_CENTER, 60);
m_pListCtrl->InsertColumn(++col, _T("Reset"), LVCFMT_CENTER, 60);
m_pListCtrl->InsertColumn(++col, _T("Statistics"), LVCFMT_CENTER, 85);
}
void CQCOMMultiDnloadFHLoaderView::FullListCtrl()
{
int i;
CString cc;
CWnd* parWnd = 1 ? this:(CWnd*)m_pListCtrl;
for (i=0; i<maxLoopNum; ++i) {
// Loop
cc.Format(_T("Loop[%d]"), i+1);
m_pCheckEnable[i] = new CButton();
m_pCheckEnable[i]->Create((LPCTSTR)(cc), WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,
CRect(0, 0,80, 20), parWnd, m_nCtrlIDEnable[i]);
// Port
m_pComboboxPort[i] = new CComboBox();
m_pComboboxPort[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|CBS_DROPDOWNLIST|WS_VSCROLL,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDPort[i]);
// Time
m_pEditTime[i] = new CEdit();
m_pEditTime[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDTime[i]);
// Info
m_pEditInfo[i] = new CEdit();
m_pEditInfo[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDInfo[i]);
//Status
//m_pStaticStatus[i] = new CXColorStatic(); // mark
#if 0
//m_pStaticStatus[i] = new CXColorStatic(); // mark
m_pStaticStatus[i]->Create(_T("Status"), WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_CENTER,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDStatus[i]);
#else
switch (i) {
case 0: m_pStaticStatus[i] = &m_ctrlStatic1; break;
case 1: m_pStaticStatus[i] = &m_ctrlStatic2; break;
case 2: m_pStaticStatus[i] = &m_ctrlStatic3; break;
case 3: m_pStaticStatus[i] = &m_ctrlStatic4; break;
case 4: m_pStaticStatus[i] = &m_ctrlStatic5; break;
case 5: m_pStaticStatus[i] = &m_ctrlStatic6; break;
case 6: m_pStaticStatus[i] = &m_ctrlStatic7; break;
case 7: m_pStaticStatus[i] = &m_ctrlStatic8; break;
}
#endif
// Run
m_pButtonStart[i] = new CButton();
m_pButtonStart[i]->Create(_T("Start"), WS_CHILD|WS_VISIBLE|WS_TABSTOP,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDStart[i]);
// Reset
m_pButtonReset[i] = new CButton();
m_pButtonReset[i]->Create(_T("Reset"), WS_CHILD|WS_VISIBLE|WS_TABSTOP,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDReset[i]);
//Statistics
m_pEditStatistics[i] = new CEdit();
m_pEditStatistics[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDStatistics[i]);
}
//设置字体格式
for (i=0; i<maxLoopNum; ++i) {
int col = -1;
int rowCnt = m_pListCtrl->GetItemCount(); // rowCnt == i
m_pListCtrl->InsertItem(rowCnt, _T(""));
m_pCheckEnable[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pCheckEnable[i]);
m_pComboboxPort[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pComboboxPort[i]);
m_pEditTime[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pEditTime[i]);
m_pEditInfo[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pEditInfo[i]);
//m_pStaticStatus[i]->SetFont(m_cf);
m_pStaticStatus[i]->SetBold(TRUE, TRUE);
m_pStaticStatus[i]->SetFont(_T("Calibri"), 14, TRUE);
m_pListCtrl->SetItemEx(i, ++col, m_pStaticStatus[i]);
m_pButtonStart[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pButtonStart[i]);
m_pButtonReset[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pButtonReset[i]);
m_pEditStatistics[i]->SetFont(m_cf);
m_pListCtrl->SetItemEx(i, ++col, m_pEditStatistics[i]);
}
//+
this->UpdateWindow();
}