000
15.10.2003, 16:10 Uhr
Suchthaufen
|
Jetzt wirds aber eng. Das kann ja wohl nicht sein, daß die Erstellung von 500 Buttons so ungefähr 10 Sekunden frisst. Ich mach folgendes: Ich lese ein paar Kunden aus aus der Datenbank (genau 562 sinds) und möchte mir für jeden einen Button erstellen. Das ganze klappt auch nur eben die Zeit... mein CColorButton ist abgeleitet von CButton
C++: |
while(!recordSet_.IsEOF()) { CColorButton* button = new CColorButton(id_,parentId_,i,buttonRect_,RGB(192,192,192),"",parentWnd_->GetTopMostWindow()); button->Create(parentWnd_); i++; button->colorButton_->SetBkColor(RGB(192,192,192)); button->colorButton_->SetWindowRect(buttonRect_); button->AddText(CalcText(),button->GetDC(),0,font_); button->MoveWindow(buttonRect_); parentWnd_->buttons_.Add(button); parentWnd_->Invalidate(); recordSet_.MoveNext(); }
|
wenn ich aber nun das Create ausklammere (natürlich auch das MoveWindow) dann ist das Teil schnell wie erwartet. Warum ist das Create so langsam? Ich hab zwar Create über schrieben aber da mach ich nur:
C++: |
BOOL CColorButton::Create( CWnd* pParentWnd) { // TODO: Fügen Sie hier Ihren spezialisierten Code ein, und/oder rufen Sie die Basisklasse auf. DWORD style; if (adminMode_) style = BS_OWNERDRAW | BS_PUSHBUTTON |WS_CHILD | WS_VISIBLE| WS_SIZEBOX; else style =BS_OWNERDRAW | BS_PUSHBUTTON |WS_CHILD | WS_VISIBLE; return CButton::Create("", style, colorButton_->GetWindowRect(), pParentWnd, colorButton_->GetMessageId()); }
woran könnts den noch liegen?
|
|