1.3 Processes and cProcessManager(进程和cProcessManager)
cProcessManager与cStateManager是非常相似的,只有一个微小的差别:栈中的每一个函数将会在每一个frame中调用。
cProcessManager的声明是和cStateManager同一的。与其再看一遍声明,不如跳过直接看他的例子吧,每一个frame,调用两次栈中的函数:
Class cApp : public cApplication: { Private: cProcessManager m_ProcessManager;
// 处理函数声明 Static void Function1(void *, long); Static void Function2(void *, long);
Public: BOOL Init() { m_ProcessManager.Push(Function1,this); m_ProcessManager.Push(Function2,this); } } |
void cApp::Function1(void *DataPtr, long Purpose) { // 获取一个调用类的指针,由于这个函数是静态的, // 意味着他将不能分配一个类实例 cApp *cc = (cApp*)DataPtr;
// 显示一条消息 if(Purpose == FRAMEPURPOSE) { MessageBox(cc->GethWnd(), “Process 1”, “message”, 0); return; } } |
void cApp::Function2(void *DataPtr, long Purpose) { cApp *cc = (cApp*)DataPtr;
// 显示一条消息 if(Purpose == FRAMEPURPOSE) { MessageBox(cc->GethWnd(), “Process 2”, “message”,0); return; } } |