Witam. Tworzę własną kontrolkę w WinApi i stanąłem na liście. Otóż korzystam w niej z wektorów struktur. Problem polega na tym, że przy dodaniu struktury program się wysypuje. Fragment kodu wygląda mniej - więcej tak:
//deklaracja struktur
struct WHLIST_ELEMENT{
char* tekst;
char* komentarz;
int id_ikonki;
bool aktywny;
bool zaznaczony;
};
struct WHLIST_PRZYCISK{
struct WHLIST_ELEMENT *wsk;
HWND uchwyt;
};
struct WHLIST{
HWND ScrollBar;
HBITMAP bitmapa;
HDC hDC, hDCbmp, hDCobrazki;
HBITMAP obrazki;
INT cX, cY;
vector<WHLIST_ELEMENT> Element;
vector<WHLIST_PRZYCISK> Przycisk;
}WHLIST;
//fragment kodu odpowiadający dodawaniu kontrolek
int ilosc_przyciskow = Y / 22;
for(int n=0; n<ilosc_przyciskow; n++)
{
struct WHLIST_PRZYCISK przyklad;
przyklad.uchwyt = CreateWindowEx( 0, "wh_CHECKBOX", NULL, WS_CHILD | WS_VISIBLE | WH_AUTOMAT, 22, n*22, X - 22, 22, hwnd,( HMENU ) 1, GetModuleHandle(NULL), NULL );
przyklad.wsk = NULL;
SendMessage(przyklad.uchwyt, WH_SETFOCUS, WH_PRZELACZ, 0);
wsk->Przycisk.push_back(przyklad); // wysypuje sie ;(
}
wskaźnik wsk z pewnością nie jest NULL, gdyż sprawdzam to już na samym początku. Próbowałem różnych cudactw i dalej wywala. Czytałem, że przyczyną może być zbyt częste wywoływanie push_back() w tym samym czasie. W załączniku dodaję plik main.cpp oraz plik wh_grafika.h. Może uda wam się zauważyć coś, czego ja nie widzę.