Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » ohoh... 500 Buttons erstellen dauert ewig

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
16.10.2003, 08:00 Uhr
Suchthaufen



Hallo,
besten Dank für die angebotene Hilfe, es sieht nun so aus, als hätt ich den Fehler gefunden. Irgendwie dauert das suchen der Bilder und Texte für den Button in der Datenbank so lange. Ich hab zwar noch keine Lösung für das Problem aber einstweilen kommentier ich das ganze mal aus, dann kann ich auch 1000 Buttons erstellen ohne dramatischen Zeitverlust.

Also auf ein Neues:
Beim Erstellen der Buttons mach ich folgendes.

C++:
BOOL CColorButton::OnNcCreate(LPCREATESTRUCT lpCreateStruct)
{
    LoadText();
    LoadBitmaps();
    if (!CButton::OnNcCreate(lpCreateStruct))
        return FALSE;

    // TODO:  Fügen Sie Ihren spezialisierten Erstellcode hier ein.

    return TRUE;
}


die Funktionen LoadText und LoadBitmaps sehen so aus:

C++:
void CColorButton::LoadBitmaps(void)
{
    if(this->colorButton_->isDataBase()==false) return;
// seit ich die if Abfrage eingefügt hab scheint es dramatisch schneller zu sein
    bitmaps_.RemoveAll();
    CArray<int, int> bmp;
    CTools::GetPictureIds(bmp,colorButton_->GetId());
    for (int i=0; i<bmp.GetCount();i++)
    {
        CDBBitmap* bm= new CDBBitmap(bmp.GetAt(i),colorButton_->GetId(), this->GetDC());
        bitmaps_.Add(bm);
    }
}
void CColorButton::LoadText(void)
{
    return;// Neu eingefügt dann wirds richtig schnell
    drawTexts_.RemoveAll();
    CArray<int, int> tex;
    CTools::GetTextIds(tex,colorButton_->GetId());
    for (int i=0; i<tex.GetCount();i++)
    {
        CDBDrawText* text= new CDBDrawText(tex.GetAt(i), this->GetDC(),colorButton_->GetId());
        drawTexts_.Add(text);
    }

}



Meine Vermutung wär nun, das die static Funktiona aus CTools so langsam ist.
Die sieht dann so aus:

C++:
void CTools::GetTextIds(CArray<int, int>&windows,int parent)
{
    CDaoDatabase db;
    CDaoRecordset rs;
    COleVariant dat;
    CString sqltx;
    int id;
    windows.RemoveAll();
    db.Open(GetDatabasePath());
    rs.m_pDatabase=&db;
    sqltx.Format("Select * from TextUnits where parentId = %d",parent);
    rs.Open(AFX_DAO_USE_DEFAULT_TYPE,sqltx);
    while (rs.IsEOF()!=TRUE)
    {
        dat=rs.GetFieldValue("ID");
        id=dat.intVal;
        windows.Add(id);

        rs.MoveNext();
    }
    rs.Close();
    db.Close();
}


GetPictureIDs ist praktisch identisch
Vielleicht kann mir einer dazu was sagen. Sind vielleicht Staticfunktionen so erheblich langsamer? Oder mach ich die Datenbank ned richtig auf? Oder hat wer einen Designfehler entdeckt der mir soviel Zeit kostet?
Besten Dank im Voraus.

Dieser Post wurde am 16.10.2003 um 08:12 Uhr von Suchthaufen editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
16.10.2003, 13:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi, an den Static-Funktionen sollte es nicht liegen!

Ich denke nur, du solltest deine Struktur umgestalten! Soweit ich sehe öffnest und schliesst du pro Button die Datenbank zig-Mal! Das bremst natürlich gewaltig! Sind ja alles Festplattenzugriffe, welche a***-langsam sind!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
16.10.2003, 15:01 Uhr
Suchthaufen



Das wirds sein. Hätt ich auch selber draufkommen müssen
Danke für die Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
16.10.2003, 18:15 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
@Suchthaufen
Deine Mails kamen gerade reingekrümelt . Ich schau's mal durch. Bis Montag??
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
16.10.2003, 18:58 Uhr
erpelqueen
Entlein


Mach doch alle vorher, und jenachdem machste die dann sichtbar und beschriftest sie.?Wenn nicht unterteil die kunden doch in verschiedene Klassen, nach alter oder so, so wie flosoft es mit den verschieden seiten gesagt hat,.
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
16.10.2003, 19:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


@erpelchen, das problem ist nicht das erstellen die Datenbankzugriffe, sondern die datenbankzugriffe! Man sieht das viele Leute längere Threads nicht richtig lesen bevor sie posten!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
16.10.2003, 21:04 Uhr
erpelqueen
Entlein


^^^^^muss ich das verstehen?

@erpelchen, das problem ist nicht das erstellen die Datenbankzugriffe, sondern die datenbankzugriffe!

???egal
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
16.10.2003, 21:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ups, sollte natürlich


Zitat:

das problem ist nicht das erstellen der Buttons, sondern die Datenbankzugriffe! Man sieht das viele Leute längere Threads nicht richtig lesen bevor sie posten


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
24.03.2004, 18:47 Uhr
~hrachka
Gast


Hallo,

ich hoffe bin an ´die richtige Stelle durch google geraten, Nämlich handelt es sich bei meinem Problem um BitmapButton.

Ich habe unter AutoCAD 2002 mithilfe ObjectARX einen Controlbar und vier Buttons erstellt. Für die Buttons habe ich 4x2 GIF Dateien, entsprechend für - pressed und released states -. Mir gelingt es bislang nicht die GIF Dateien zu verwenden. Ich habe versucht mit Loadbitmaps - schlug fehl.

Kann mir jemand helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
24.03.2004, 22:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, für sowas macht man nen neuen post auf, nicht einen uralten

ich würde mal sagen das das nicht so ohne weiteres geht, ich denke da musst du eine der image-libs nehmen, schau mal unter www.codeguru.com
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: