[wxWidgets]Problem z wxEVT_PAINT

0

Witam,
Mam problem z przekazaniem danych obiektu do event'u, dane w event sa nieprawidłowe (tylko dla wersji release, dla debug działa ok), oto wycinek definicji klasy :

class Chat : public wxPanel {
    wxFont *chatFont;
    int i;
public:		
	void render(wxPaintEvent& evt);
	Chat(wxWindow *parent);	
	~Chat();

};


Chat::Chat(wxWindow *parent):
	wxPanel(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize) {

	i = 0xDEAD;
	panel->Connect(wxEVT_PAINT, wxPaintEventHandler(Chat::render));
}

void Chat::render(wxPaintEvent& evt) {		
	if (i!=0xDEAD) MessageBoxA(NULL, "zla wartosc", "test", MB_OK);
       < kod renderu >
}

w takiej wersji na debug działa bez zarzutów, dla release wywale messagebox, jak zmienie
panel->Connect(wxEVT_PAINT, wxPaintEventHandler(Chat::render));
na
panel->Connect(wxEVT_PAINT, wxPaintEventHandler(Chat::render), NULL, this);
To już nie wyświetla messageboxa ale wyswietla jedynie czarny ekran.

Co robię nie tak?

0

Druga wersja z Connect'em jest poprawna, jeśli wywołujesz zewnętrzny handler. A to, że masz czarny panel, wynika z faktu, że nie zrobiłeś (poprawnej) obsługi komunikatu wxEVT_PAINT.

0

udało mi sie jeszcze wczoraj to rozwiązać, chodziło o to że w wxEVT_PAINT miałem wxPaintDC dc(this) i to było ok dla pierwszej wersji, dla drugiej wystarczyło zmienić na wxPaintDC(this->panel)

1 użytkowników online, w tym zalogowanych: 0, gości: 1