window_messages.cpp
来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 101 行
CPP
101 行
// $Id: Window_Messages.cpp 78918 2007-07-17 04:06:30Z sowayaa $// ============================================================================//// = LIBRARY// examples//// = FILENAME// Window_Messages.cpp//// = DESCRIPTION//// Tests the Msg_WFMO_Reactor's ability to handle regular events// and window messages.//// = AUTHOR//// Irfan Pyarali <irfan@cs.wustl.edu>//// ============================================================================#include "ace/OS_main.h"#if defined (ACE_WIN32) && !defined (ACE_LACKS_MSG_WFMO)#include "ace/Msg_WFMO_Reactor.h"#include "ace/Reactor.h"#include "ace/Auto_Ptr.h"#include "ace/Auto_Event.h"ACE_RCSID(WFMO_Reactor, Window_Messages, "$Id: Window_Messages.cpp 78918 2007-07-17 04:06:30Z sowayaa $")class Event_Handler : public ACE_Event_Handler{public: int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0); ACE_Auto_Event handle_; int iterations_;};intEvent_Handler::handle_signal (int, siginfo_t *, ucontext_t *){ --this->iterations_; if (this->iterations_ == 0) ACE_Reactor::end_event_loop (); return 0;}static Event_Handler *global_event_handler;void WINAPItimer_callback (HWND, UINT, UINT, DWORD dwTime){ ACE_DEBUG ((LM_DEBUG, "(%t) timeout occured @ %u\n", dwTime)); global_event_handler->handle_.signal ();}intACE_TMAIN (int, ACE_TCHAR*[]){ // Manage memory automagically. ACE_Reactor_Impl *impl = new ACE_Msg_WFMO_Reactor; auto_ptr<ACE_Reactor> reactor (new ACE_Reactor (impl, 1)); ACE_Reactor::instance (reactor.get ()); Event_Handler event_handler; global_event_handler = &event_handler; event_handler.iterations_ = 5; int result = ACE_Reactor::instance ()->register_handler (&event_handler, event_handler.handle_.handle ()); ACE_ASSERT (result == 0); ACE_Time_Value timeout (1); result = ::SetTimer (0, // handle of window for timer messages 0, // timer identifier timeout.msec (), // time-out value (TIMERPROC) &timer_callback // address of timer procedure ); ACE_ASSERT (result != 0); ACE_Reactor::run_event_loop (); return 0;}#else /* !ACE_WIN32 */intACE_TMAIN (int , ACE_TCHAR *[]){ return 0;}#endif /* ACE_WIN32 && !ACE_LACKS_MSG_WFMO */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?