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 if (weEventCode == weErrorOccurred)
42 wimp_error(pebLastError->errmess, WIMPERROR_CANCELBOX);
45 PollEvent(weEventCode, twbWimpPollBlock);
56 case weOpenWindowRequest:
57 kpwWindow = FindWindow(kwbPollBlock.wobOpenRequest.whWindow);
58 if (kpwWindow != NULL)
61 pwWindow->
Open(kwbPollBlock.wobOpenRequest);
64 case weCloseWindowRequest:
65 kpwWindow = FindWindow(kwbPollBlock.wobCloseRequest.whWindow);
66 if (kpwWindow != NULL)
73 kpwWindow = FindWindow(kwbPollBlock.mcbMouseClick.whWindow);
74 if (kpwWindow != NULL)
77 pwWindow->
Clicked(kwbPollBlock.mcbMouseClick);
81 if (m_kpmCurrentMenu != NULL)
84 wimp_getpointerinfo(&mcbPointer);
85 eMenuHandled mhValue = m_kpmCurrentMenu->Clicked(kwbPollBlock.msbMenuSelection.iaSelectedItems);
86 if (mhValue == mhHandledClose || mcbPointer.bcButtons.adjust == 0)
91 if (mhValue == mhHandledKeepOpenRecreate)
93 m_kpmCurrentMenu->PopulateMenu();
96 wimp_createmenu(&(m_kpmCurrentMenu->GetMenu()->mMenu), m_lCurrentMenuLocation.cX, m_lCurrentMenuLocation.cY);
101 switch (kwbPollBlock.umbUserMessage.wmaAction)
108 case weUserMessageRecorded:
109 switch (kwbPollBlock.umbUserMessage.wmaAction)
111 case wmaMessagePrequit:
112 if (PreQuit() ==
false)
114 AcknowledgeMessage(kwbPollBlock.umbUserMessage);
127 rumbMessageBlock.iYourRef = rumbMessageBlock.iMyRef;
128 ::wimp_sendmessage(weUserMessageAcknowledged, &rumbMessageBlock);
134 rumbMessageBlock.wmaAction = kwmaActionCode;
135 rumbMessageBlock.iYourRef = rumbMessageBlock.iMyRef;
136 ::wimp_sendmessage(weUserMessageAcknowledged, &rumbMessageBlock);
142 m_lkpwWindows.push_back(kpcwWindow);
148 m_lkpwWindows.remove(kpcwWindow);
154 for (std::list<const CWindow*>::iterator it = m_lkpwWindows.begin(); it != m_lkpwWindows.end(); ++it)
156 if (kwhWindow == (*it)->Handle())
168 m_kpmCurrentMenu = kpmMenu;
169 m_lCurrentMenuLocation.cX = rlLocation.cX;
170 m_lCurrentMenuLocation.cY = rlLocation.cY;
171 wimp_createmenu(&(kpmMenu->
GetMenu()->
mMenu), rlLocation.cX, rlLocation.cY);
175 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)