Witam.
Posiadam własne klasy kontrolek i chcę teraz tworzyć je i kolejno zapisywać do vectora. Niestety program wysypuje mi się.
Tutaj jest kod odpowiedzialny za tworzenie kontrolki:
///Klasa* = CreateVCheckBox(&Klasa, DrawFunc, AddDrawFunc, "tekst", hFont, STYLE, x, y, width, height, id, hParent, (void*)anydata, hInstance);
bool CreateVList::ElementAdd(CreateVCheckBox *Before, void *dane, int newID){
char charID[10];
itoa(newID, charID, 10);
if(!Before)
{
Lista.push_back(NULL);
vector<CreateVCheckBox *>::iterator it = Lista.begin();
*it = new CreateVCheckBox(&*it, ElementDrawFunc, ElementAddDrawFunc, charID, ElementFont, 0 , 0, 70, f_SetElementNewWidth(), 20, 101, hwnd_List, NULL, hInstance);
Lista.push_back(NULL);
++it;
*it = new CreateVCheckBox(&*it, ElementDrawFunc, ElementAddDrawFunc, charID, ElementFont, 0 , 0, 100, f_SetElementNewWidth(), 20, 102, hwnd_List, NULL, hInstance);
}
else
{
}
return true;
}
Według tego, co udało mi się ustalić, kontrolka tworzy się i ją widać, niestety program wysypuje się wraz z najechaniem kursora na kontrolkę.
Proces tworzenia kontrolki (konstruktor klasy)
http://pastebin.com/QKX9VtSJ
Dodam, że każdy element procedury okna kontrolki ma wyjątki, w razie gdyby wskaźnik na klasę był NULL (więc nie powinno się wysypywać).
Jeśli to pomoże:
- wskaźnik na wskaźnik na klasę przekazywany do kontruktora musi wskazywać na tę klasę.
- jeżeli podczas wykonywania programu to sie zmieni program się wysypie :c
Jakby ktoś miał any idea wstawiam jeszcze kod listy oraz kod "elementu" (checkboxa).
kod listy:
http://pastebin.com/Js3pDLZD
kod checkboxa:
http://pastebin.com/N7gE4P2A
EDIT:
Jak w konstruktorze listy zamiast wywołania funkcji ElementAdd() umieszczę ten kod wszystko działa idealnie:
vector<CreateVCheckBox *>::iterator it = Lista.begin();
*it = new CreateVCheckBox(&*it, ElementDrawFunc, ElementAddDrawFunc, "asd", ElementFont, 0 , 0, 70, f_SetElementNewWidth(), 20, 101, hwnd_List, NULL, hInstance);
++it;
*it = new CreateVCheckBox(&*it, ElementDrawFunc, ElementAddDrawFunc, "asd", ElementFont, 0 , 0, 90, f_SetElementNewWidth(), 20, 102, hwnd_List, NULL, hInstance);