[wxWidgets]Problem z wxEVT_PAINT

Odpowiedz Nowy wątek
2009-09-04 23:21
aduch__
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?

Pozostało 580 znaków

2009-09-05 09:37
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.

Pozostało 580 znaków

2009-09-05 18:56
aduch87_
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)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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