wxWindows: chytani udalosti rodicem??
Vaclav Slavik
v.slavik na volny.cz
Čtvrtek Leden 24 22:39:05 CET 2002
Zdravim,
> Myslel jsem si, ze to udelam pomoci Connect nasledovne:
>
> wxButton *butoun = new wxButton( this, 100, "Text", atd.);
> butoun->Connect( 100, -1, wxEVT_LEFT_UP, &MyPanel::FunkceNejakaTo);
>
> To ovsem ponekud nefunguje, i kdyz v prikladech dynamicka vazba byla.
Hmmm, "nefunguje" opravdu neni prilis informativni... Ale Connect() jsem
nikdy nepouzival, takze s tim neporadim.
> Pak mne napadlo udelat si MyButton jako naslednika wxButtonu, ktery by
> mel funkci OnLeftMouseClick, ktera by tu udalost predavala nejak
> rodicovi a sama nic nedelala. Jenze to se mi pro zmenu nepodarilo prijit
> na to, jakym zpusobem to napsat.
?? Treba takhle:
class Parent : public wxWindow /* or whatever */ {
...
public:
void HandleLeftClick(wxMouseEvent &event);
};
class MyButton : public wxButton {
void SetParent(Parent *p) { m_myParent = p; }
void OnLeftClick(wxMouseEvent &event)
{ m_myParent->HandleLeftClick(event); }
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE(MyButton, wxButton)
EVT_LEFT_DOWN(MyButton::OnLeftClick)
END_EVENT_TABLE()
Mimochodem, predelat udalost leveho kliknuti asi neni uplne nejlepsi napad,
protoze buttony uz na leve tlacitko reaguji standardne (poslanim EVT_BUTTON
zpravy). Muze se stat, ze na nektere platforme se ani EVT_LEFT_DOWN
nevygeneruje, proste protoze nativni toolkit neumozni prepsani handleru
(nevim, jaka je situace ve wxGTK resp. GTK+ -- zkuste to a pokud ten
(pseudo)kod nahore nefunguje (OnLeftClick se nezavola), tak je to proste
smula).
> PS: jak se da udelat okno, u ktereho by nebylo mozno zmenit velikost ?
> Hledal jsem neco jako wxNO_RESIZE ale bez uspechu...
Proste konstruktoru wxFrame NEdate style wxRESIZE_BOX ani wxRESIZE_BORDER.
Jinak doporucuji prihlasit se do konference wx-users na lists.wxwindows.org,
tam mate podstatne lepsi sanci dostat odpoved (prihlaseni se viz
http://lists.wxwindows.org).
mejte se,
Vaclav Slavik <vaclav na wxwindows.org>
Další informace o konferenci Linux