Hej! :) mam do Was kilka pytań.
PYTANIE 1:
Otóż mam tę nieszczęsną listę i inne kontrolki (w końcu działają tak jak sobie życzyłem!!!) i jak już wspomniałem w nawiasie wszystko działa jak trzeba, niestety z małym ale. Dla pewności otworzyłem menadżer zadań i sprawdziłem rubrykę "pamięć - prywatny zestaw roboczy" (win7 64bit) i niejako się zaskoczyłem już mówię czemu:
- przy otwarciu programu zajmuje 1496 KB.
- po dodaniu około 400 elementów listy (osobnych kontrolek stworzonych funkcją CreateWindowEx()) program zajmuje 1644 KB.
- po usunięciu wspomnianych elementów, zwolnieniu bitmap, wyczyszczeniu wszystkich klas, wskaźników, tekstów, syfu spod biurka i portfela program zajmuje więcej niż z elementami.
Jak to jest możliwe?
PYTANIE 2:
Szukając odpowiedzi próbowałem:
int main()
{
getch();
for(int n=0; n<400; ++n)
vData.push_back("Jakis tam tekst asdab dbajwdbajkdkjbakjdbakjbfkjabfkjbafakjbfkjaw fkha wkjf akh fkjaw fhaw bfkja fh awkjf awfkajw f");
getch();
vData.clear();
getch();
}
Przy tym kodzie pamięć prywatna nie zmalała.
int main()
{
getch();
for(int n=0; n<400; ++n)
vData.push_back("Jakis tam tekst asdab dbajwdbajkdkjbakjdbakjbfkjabfkjbafakjbfkjaw fkha wkjf akh fkjaw fhaw bfkja fh awkjf awfkajw f");
getch();
for(int n=0; n<400; ++n)
vData[n].clear();
vData.clear();
getch();
}
Przy tym kodzie pamięc prywatna się zwiększyła :O
Kompletnie nie rozumiem o co chodzi...
PYTANIE 2:
mam taki kod:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class myClass{
public:
void ClearContainer();
myClass();
virtual ~myClass();
private:
vector<string> myData;
};
myClass::myClass(){
myData.push_back("jakis tekst... co z nim bedzie biedaczyskiem");
}
void myClass::ClearContainer(){
myData.clear();
}
myClass *newClass;
int main()
{
newClass = new myClass();
///==================================
newClass->ClearContainer();
delete newClass;
}
a) Co się stanie ze stringiem wewnątrz kontenera po wywołaniu funkcji newClass->ClearContainer();? Będzie sobie istniał w pamięci i zginę w męczarniach próbując go odnaleźć?
b) Co się stanie z kontenerem? Będzie sobie istniał wraz ze stringami a ja stracę "uchwyt" do niego?
PYTANIE 3:
Stworzyłem sobie własny tooltip, który ma podążać za kursorem. Wszystko idzie wyśmienicie do czasu najechania na moja własną kontrolkę. Wtedy przy każdym ruchu myszki tooltip strasznie mryga.
Nie pomogło:
a) EXSTYLE - WS_EX_COMPOSITED
b) SetWindowPos - flaga NOZORDER
c) EXTYLE - WS_EX_TOPMOST
Jak mniemam wszystko się rozchodzi o to, że kontrolki odświeżają siebie nawzajem, gdy poruszę kursorem tooltip się porusza odkrywając część okna po sobą. Owe okno się odrysowuje i wtedy odrysowuje się nasz tooltip. tak ja to widzę. Tylko czemu to mryga nawet z podwójnym buforowaniem?
PYTANIE 4:
czy usuwając elementy listy (są to kontrolki/okna) funkcją DestroyWindow() z częstotliwością WM_KEYDOWN, gdy trzymamy delete mogą powstać jakieś błędy? Pytam się, bo gdy usuwam 50 lub mniej elementów wszystko jest cacy. Ale jak dłużej się te elementy usuwają pulpit mi zaczyna mrygać, pojawiają sie dziwne rzeczy na ekranie takie jak na screenie w załączniku.