3 #include "errorexception.h" 4 #include "wimp_error.h" 10 #pragma GCC diagnostic ignored "-Wswitch" 15 CTask::CTask(
const std::string& rksTaskName) :
18 if (CTask::sm_pctCurrent != NULL)
23 CTask::sm_pctCurrent =
this;
24 m_thMyTask = ::wimp_init(rksTaskName.c_str());
31 CTask::sm_pctCurrent = NULL;
39 eWimpEvent weEventCode = ::wimp_poll();
40 PollEvent(weEventCode, twbWimpPollBlock);
51 case weOpenWindowRequest:
52 kpwWindow = FindWindow(kwbPollBlock.wobOpenRequest.whWindow);
53 if (kpwWindow != NULL)
56 pwWindow->
Open(kwbPollBlock.wobOpenRequest);
59 case weCloseWindowRequest:
60 kpwWindow = FindWindow(kwbPollBlock.wobCloseRequest.whWindow);
61 if (kpwWindow != NULL)
68 kpwWindow = FindWindow(kwbPollBlock.mcbMouseClick.whWindow);
69 if (kpwWindow != NULL)
72 pwWindow->
Clicked(kwbPollBlock.mcbMouseClick);
76 if (m_kpmCurrentMenu != NULL)
79 wimp_getpointerinfo(&mcbPointer);
80 eMenuHandled mhValue = m_kpmCurrentMenu->Clicked(kwbPollBlock.msbMenuSelection.iaSelectedItems);
81 if (mhValue == mhHandledClose || mcbPointer.bcButtons.adjust == 0)
86 if (mhValue == mhHandledKeepOpenRecreate)
88 m_kpmCurrentMenu->PopulateMenu();
91 wimp_createmenu(&(m_kpmCurrentMenu->GetMenu()->mMenu), m_lCurrentMenuLocation.cX, m_lCurrentMenuLocation.cY);
96 switch (kwbPollBlock.umbUserMessage.wmaAction)
103 case weUserMessageRecorded:
104 switch (kwbPollBlock.umbUserMessage.wmaAction)
106 case wmaMessagePrequit:
107 if (PreQuit() ==
false)
109 AcknowledgeMessage(kwbPollBlock.umbUserMessage);
122 rumbMessageBlock.iYourRef = rumbMessageBlock.iMyRef;
123 ::wimp_sendmessage(weUserMessageAcknowledged, &rumbMessageBlock);
129 rumbMessageBlock.wmaAction = kwmaActionCode;
130 rumbMessageBlock.iYourRef = rumbMessageBlock.iMyRef;
131 ::wimp_sendmessage(weUserMessageAcknowledged, &rumbMessageBlock);
137 m_lkpwWindows.push_back(kpcwWindow);
143 m_lkpwWindows.remove(kpcwWindow);
149 for (std::list<const CWindow*>::iterator it = m_lkpwWindows.begin(); it != m_lkpwWindows.end(); ++it)
151 if (kwhWindow == (*it)->Handle())
163 m_kpmCurrentMenu = kpmMenu;
164 m_lCurrentMenuLocation.cX = rlLocation.cX;
165 m_lCurrentMenuLocation.cY = rlLocation.cY;
166 wimp_createmenu(&(kpmMenu->
GetMenu()->
mMenu), rlLocation.cX, rlLocation.cY);
170 CTask* CTask::sm_pctCurrent = NULL;
void AcknowledgeMessage(tUserMessageBlock &rumbMessageBlock)
const CWindow * FindWindow(const tWindowHandle kwhWindow)
void DeregisterWindow(const CWindow *kpwWindow)
virtual bool PollEvent(eWimpEvent weEventCode, tWimpBlock &rwbWimpBlock)
void OpenMenu(CMenu *kpmMenu, tLocation &rlLocation)
void RegisterWindow(const CWindow *kpwWindow)
virtual bool Clicked(const tMouseClickBlock &rkmcbClickBlock)
virtual void Open(const tWindowOpenBlock &rkwobOpenBlock)