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.
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();
} |