Hej
Jag har en klass som ser ut såhär,
class CApp
{
private:
Event event;
vwf::CVGPtr<vwf::CButton> m_Button;
vwf::CVGPtr<vwf::CAction<CApp> > m_Action;
public:
void Start();
void Action(Event event, vwf::CVGPtr<vwf::CScreenObject> scrObj);
};
void CApp::Start()
{
m_Button=CButton::create("Button");
try
{
event.what=terminal::ENTER;
m_Action=CAction<CApp>::create(this,&CApp::Action,event);
m_Button->AddAction(dynamic_ptr_cast<CActionBase>(m_Action));
m_Frame->AddScreenObject(dynamic_ptr_cast<CScreenObject>(m_Button));
m_Frame->Show();
}
catch(out_of_range& oor)
{
cout << "Error: " << oor.what() << endl;
}
}
void CApp::Action(Event event, CVGPtr<CScreenObject> scrObj)
{
m_Button->SetText("Test");
m_Button->RemoveAction(dynamic_ptr_cast<CActionBase>(m_Action));
}
Vid koden "m_Frame->Show()" så visas fönstret och programmet stannar där tills jag avslutar det. När jag trycker på Enter i programmet (när fönstret är uppe) så ska funktionen "Action" anroppas och det fungerar, jag kan ändra texten på knappen, MEN när jag debuggar programmet så ser "m_Action" ut såhär,
{ptr = 0x805d250, count = 0x805d288}
det ser helt ok ut, den pekar ut sitt objekt och en räknare. Det ger samma resultat oavsätt om man är innan eller efter "m_Frame->Show" anroppet.
Men när jag kollar på "m_Action" i Action funktionen när jag har tryckt på enter så ser den ut såhär,
{ptr = 0x0, count = 0x0}
Pekar inte på något! Ska det inte vara samma variabel/instans som i "Start" funktionen? "m_Button" har samma värde på alla ställen.
Det finns mycket mer kod, men jag hoppas och tror att felet ligger i den kod som jag har postat, säg till om ni vill se mer :)
/Viktor