[BCB5] Probleem met dynamisch toegevoegde controls

Pagina: 1
Acties:

  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
Ik heb een BCB5 applicatie waarin ik 'at runtime' dynamisch TFrame objecten toevoeg. Ik heb in zo'n frame een eigen gemaakt control zitten (een VU-meter).

Het probleem is dat na een tijdje de VU-meter niet meer getekend wordt, terwijl hij wel in z'n WM_PAINT handler komt.

Dit probleem komt echter alleen maar voor als ik de controls buiten de OnCreate handler van het form om doe. Als ik de TFrame's in OnCreate toevoeg blijven ze het tot in lengte van dagen gewoon goed doen.

In de volgende code geef ik de functie die (vanuit OnCreate) aangeroepen wordt om een TFrame object op het form toe te voegen.

de ArrangeChannels zorgt ervoor dat de verschillende TFrame objecten netjes geordend op het form te zien zijn.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void TfrmMain::AddAudioInput(int iInputID, int iMode)
{
    // Deze TChannel is dus m'n TFrame met VU-meter control
    TChannel               *pcInput = new TChannel(this), 
                           *pcTemp;
    TChannelList::iterator iInputs(clInputs.end());
    WAVEINCAPS             wicCaps;

    waveInGetDevCaps(iInputID, &wicCaps, sizeof(WAVEINCAPS));

    pcInput->lInputDescription->Caption = wicCaps.szPname;
    pcInput->SetMode(iMode);
    pcInput->SetInputID(iInputID);
    pcInput->Name.sprintf("pcInput%d", clInputs.size());

    clInputs.insert(clInputs.end(), pcInput);

    pcInput->Parent = this;
    ArrangeChannels();
}

  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
Aanvulling:

Om de VU-meter te tekenen gebruik ik een TBitmap object om de MoveTo/LineTo etc functies te gebruiken.
Daarna doe ik in de WM_PAINT handler:
code:
1
Canvas->Draw(0, 0, FBitmap);


Het updaten van de bitmap in FBitmap gebeurt elke 100ms mbv een timer. In de handler van de timer zorg ik dat de FBitmap up-to-date is aan de huidige level-info, en vervolgens doe ik een
code:
1
Invalidate();
waarna dus de WM_PAINT handler wordt aangeroepen, en FBitmap in het canvas van m'n control wordt getekent.

Doe ik hier misschien iets verkeerd?

  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
(effe omhoogschoppen)

Niemand een idee? :O

  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
Schop! ;)
edit:
Deze keer wel netjes na 24 uur :), xqses voor die vorige...