diff --git a/cocos2dx/cocos2dx-uphone.vcproj b/cocos2dx/cocos2dx-uphone.vcproj index f53cd82df9..e19ff31e15 100644 --- a/cocos2dx/cocos2dx-uphone.vcproj +++ b/cocos2dx/cocos2dx-uphone.vcproj @@ -64,7 +64,7 @@ /> + + @@ -578,7 +582,7 @@ Name="platform" > + + + + diff --git a/cocos2dx/include/CCXApplication.h b/cocos2dx/include/CCXApplication.h new file mode 100644 index 0000000000..3f7978a1b3 --- /dev/null +++ b/cocos2dx/include/CCXApplication.h @@ -0,0 +1,30 @@ +/**************************************************************************** +Copyright (c) 2010 cocos2d-x.org + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#ifndef __CCX_APPLICATION_H__ +#define __CCX_APPLICATION_H__ + +#include "platform/CCXApplication_platform.h" + +#endif // end of __CCX_APPLICATION_H__ diff --git a/cocos2dx/platform/CCXApplication_platform.h b/cocos2dx/platform/CCXApplication_platform.h new file mode 100644 index 0000000000..9b14510846 --- /dev/null +++ b/cocos2dx/platform/CCXApplication_platform.h @@ -0,0 +1,36 @@ +/**************************************************************************** +Copyright (c) 2010 cocos2d-x.org + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#ifndef __CCX_APPLICATION_PLATFORM_H__ +#define __CCX_APPLICATION_PLATFORM_H__ + +#include "config_platform.h" + +#ifdef CCX_PLATFORM_UPHONE + #include "uphone/CCXApplication_uphone.h" +#else + #error +#endif + +#endif // end of __CCX_APPLICATION_PLATFORM_H__ diff --git a/cocos2dx/platform/uphone/CCXApplication_uphone.cpp b/cocos2dx/platform/uphone/CCXApplication_uphone.cpp new file mode 100644 index 0000000000..bc9e9c5132 --- /dev/null +++ b/cocos2dx/platform/uphone/CCXApplication_uphone.cpp @@ -0,0 +1,55 @@ +#include "CCXApplication_uphone.h" + +#include "CCDirector.h" + +namespace cocos2d { + + static const Int32 CCX_ON_APPLICATION_IDLE = (EVENT_FirstUser + EVENT_LastUser) / 2; + + static Int32 _OnAppIdle(MESSAGE_t * pMsg, UInt32 uData) + { + CCDirector::getSharedDirector()->preMainLoop(); + int nRtn = Sys_PostMessage2(MESSAGE_PRIOR_LOWEST, (MESSAGE_t *)uData); + return 1; + } + + CCXApplication::CCXApplication() + { + memset(&m_tMsg, 0, sizeof(m_tMsg)); + SS_GetCurrentGTID(&m_tMsg.gtid); + m_tMsg.type = CCX_ON_APPLICATION_IDLE; + + Sys_RegisterMessageCallBack(CCX_ON_APPLICATION_IDLE, _OnAppIdle, (UInt32)&m_tMsg); + } + + CCXApplication::~CCXApplication() + { + Sys_RegisterMessageCallBack(CCX_ON_APPLICATION_IDLE, NULL, NULL); + } + + Boolean CCXApplication::EventHandler(EventType * pEvent) + { + Boolean bHandled = FALSE; + switch (pEvent->eType) + { + case EVENT_AppLoad: + if (! initCocos2d()) + { + SendStopEvent(); + } + bHandled = Sys_PostMessage2(MESSAGE_PRIOR_LOWEST, &m_tMsg); + bHandled = TRUE; + break; + + case EVENT_AppStopNotify: + + break; + } + + if (! bHandled) + { + bHandled = TApplication::EventHandler(pEvent); + } + return bHandled; + } +} diff --git a/cocos2dx/platform/uphone/CCXApplication_uphone.h b/cocos2dx/platform/uphone/CCXApplication_uphone.h new file mode 100644 index 0000000000..0e880b1ce0 --- /dev/null +++ b/cocos2dx/platform/uphone/CCXApplication_uphone.h @@ -0,0 +1,55 @@ +/**************************************************************************** +Copyright (c) 2010 cocos2d-x.org + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#ifndef __CCX_APPLICATION_UPHONE_H__ +#define __CCX_APPLICATION_UPHONE_H__ + +#include "ccxCommon.h" + +#include "TG3.h" + +namespace cocos2d { + +class CCX_DLL CCXApplication : public TApplication +{ +public: + CCXApplication(); + virtual ~CCXApplication(); + + virtual Boolean EventHandler(EventType * pEvent); + + /** + @brief Implement CCDirector and sense init code here. + @return TRUE Initialize success, app continue. + @return FALSE Initialize failed, app terminate. + */ + virtual Boolean initCocos2d() = 0; + +private: + MESSAGE_t m_tMsg; +}; + +} // end of namespace cocos2d + +#endif // end of __CCX_APPLICATION_UPHONE_H__ diff --git a/cocos2dx/platform/uphone/CCXEGLView_uphone.cpp b/cocos2dx/platform/uphone/CCXEGLView_uphone.cpp index 12ea6d6846..351c42c2b8 100644 --- a/cocos2dx/platform/uphone/CCXEGLView_uphone.cpp +++ b/cocos2dx/platform/uphone/CCXEGLView_uphone.cpp @@ -22,10 +22,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ +#include #include "CCXEGLView_uphone.h" -#include "TG3.h" - #include "EGL/egl.h" #include "Cocos2dDefine.h" @@ -33,23 +32,119 @@ THE SOFTWARE. #include "touch_dispatcher/CCTouch.h" #include "touch_dispatcher/CCTouchDispatcher.h" +#define WIN_CLASS_NAME "OpenGL" + +static bool g_keys[256]; // Array Used For The Keyboard Routine +static bool g_active=TRUE; // Window Active Flag Set To TRUE By Default + +EGLNativeWindowType _CreateWnd(int width, int height); +LRESULT CALLBACK _WndProc(HWND, UINT, WPARAM, LPARAM); + namespace cocos2d { class CCXEGL { public: + ~CCXEGL() + { + if (EGL_NO_DISPLAY != m_eglDisplay) + { + eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + eglTerminate(m_eglDisplay); + } + if (m_eglDC) + { + ReleaseDC(m_eglWnd, m_eglDC); + } + if (m_eglWnd) + { + DestroyWindow(m_eglWnd); + } + UnregisterClass(WIN_CLASS_NAME, GetModuleHandle(NULL)); + } + + static CCXEGL * Create(TWindow * pWindow) + { + CCXEGL * pEGL = new CCXEGL; + Boolean bSuccess = FALSE; + + do + { + CCX_BREAK_IF(! pEGL); + + TRectangle rc; + pWindow->GetClientBounds(&rc); + + CCX_BREAK_IF(! (pEGL->m_eglWnd = _CreateWnd(rc.Width(), rc.Height()))); + + pEGL->m_eglDC = GetDC(pEGL->m_eglWnd); + CCX_BREAK_IF(! pEGL->m_eglDC); + + EGLDisplay eglDisplay; + CCX_BREAK_IF(EGL_NO_DISPLAY == (eglDisplay = eglGetDisplay(pEGL->m_eglDC))); + + EGLint nMajor, nMinor; + CCX_BREAK_IF(EGL_FALSE == eglInitialize(eglDisplay, &nMajor, &nMinor) || 1 != nMajor); + + const EGLint aConfigAttribs[] = + { + EGL_LEVEL, 0, + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NATIVE_RENDERABLE, EGL_FALSE, + EGL_DEPTH_SIZE, EGL_DONT_CARE, + EGL_NONE, + }; + EGLint iConfigs; + EGLConfig eglConfig; + CCX_BREAK_IF(EGL_FALSE == eglChooseConfig(eglDisplay, aConfigAttribs, &eglConfig, 1, &iConfigs) + || (iConfigs != 1)); + + EGLSurface eglSurface; + eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, pEGL->m_eglWnd, NULL); + CCX_BREAK_IF(EGL_NO_SURFACE == eglSurface); + + EGLContext eglContext; + eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, NULL); + CCX_BREAK_IF(EGL_NO_CONTEXT == eglContext); + + CCX_BREAK_IF(EGL_FALSE == eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)); + + pEGL->m_eglDisplay = eglDisplay; + pEGL->m_eglSurface = eglSurface; + pEGL->m_eglContext = eglContext; + bSuccess = TRUE; + } while (0); + + if (! bSuccess) + { + CCX_SAFE_DELETE(pEGL); + } + + return pEGL; + } + + void SwapBuffers() + { + if (EGL_NO_DISPLAY != m_eglDisplay) + { + eglSwapBuffers(m_eglDisplay, m_eglSurface); + } + } +private: CCXEGL() - : m_pDC(NULL) - , m_eglDisplay(EGL_NO_DISPLAY) - , m_eglSurface(EGL_NO_SURFACE) - , m_eglContext(EGL_NO_CONTEXT) {} + : m_eglWnd(NULL) + , m_eglDC(NULL) + , m_eglDisplay(EGL_NO_DISPLAY) + , m_eglSurface(EGL_NO_SURFACE) + , m_eglContext(EGL_NO_CONTEXT) {} - ~CCXEGL() { CCX_SAFE_DELETE(m_pDC); } - TDC * m_pDC; - EGLDisplay m_eglDisplay; - EGLSurface m_eglSurface; - EGLContext m_eglContext; + EGLNativeWindowType m_eglWnd; + EGLNativeDisplayType m_eglDC; + EGLDisplay m_eglDisplay; + EGLSurface m_eglSurface; + EGLContext m_eglContext; }; CCXEGLView::CCXEGLView(TApplication * pApp) : TWindow(pApp) @@ -63,28 +158,22 @@ CCXEGLView::CCXEGLView(TApplication * pApp) CCXEGLView::~CCXEGLView() { - _releaseEGL(); + delete m_pEGL; delete m_pSet; delete m_pTouch; } +Boolean CCXEGLView::AfterCreate(void) +{ + return (m_pEGL = CCXEGL::Create(this)) ? TRUE : FALSE; +} + Boolean CCXEGLView::EventHandler(TApplication * pApp, EventType * pEvent) { Boolean bHandled = FALSE; switch(pEvent->eType) { - case EVENT_WinInit: - { - _initEGL(); - if (! m_pEGL) - { - break; - } - bHandled = TRUE; - } - break; - case EVENT_WinPaint: { swapBuffers(); @@ -129,23 +218,13 @@ Boolean CCXEGLView::EventHandler(TApplication * pApp, EventType * pEvent) bHandled = TRUE; } break; - - case EVENT_WinClose: - { - // Stop the application since the main form has been closed - _releaseEGL(); - } - break; } - if (bHandled) - { - return bHandled; - } - else + if (! bHandled) { return TWindow::EventHandler(pApp, pEvent); } + return bHandled; } CGSize CCXEGLView::getSize() @@ -162,7 +241,7 @@ bool CCXEGLView::isOpenGLReady() void CCXEGLView::release() { - _releaseEGL(); + CCX_SAFE_DELETE(m_pEGL); CloseWindow(); } @@ -176,79 +255,108 @@ void CCXEGLView::swapBuffers() // DrawWindow(); if (m_pEGL) { - eglSwapBuffers(m_pEGL->m_eglDisplay, m_pEGL->m_eglSurface); + m_pEGL->SwapBuffers(); } } +} // end of namespace cocos2d + ////////////////////////////////////////////////////////////////////////// -// private member for initialize EGL +// static function ////////////////////////////////////////////////////////////////////////// -void CCXEGLView::_initEGL() +static EGLNativeWindowType _CreateWnd(int width, int height) { - TDC * pDC = NULL; - CCXEGL * pEGL = new CCXEGL; + WNDCLASS wc; // Windows Class Structure + HINSTANCE hInstance; + EGLNativeWindowType hWnd = NULL; - do + hInstance = GetModuleHandle( NULL ); // Grab An Instance For Our Window + wc.style = CS_NOCLOSE | CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Redraw On Size, And Own DC For Window. + wc.lpfnWndProc = WNDPROC( _WndProc ); // WndProc Handles Messages + wc.cbClsExtra = 0; // No Extra Window Data + wc.cbWndExtra = 0; // No Extra Window Data + wc.hInstance = hInstance; // Set The Instance + wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); // Load The Default Icon + wc.hCursor = LoadCursor( NULL, IDC_ARROW ); // Load The Arrow Pointer + wc.hbrBackground = NULL; // No Background Required For GL + wc.lpszMenuName = NULL; // We Don't Want A Menu + wc.lpszClassName = WIN_CLASS_NAME; // Set The Class Name + + RegisterClass(&wc); // Attempt To Register The Window Class + + RECT rect = {0, 0, width, height}; + AdjustWindowRectEx(&rect, WS_POPUPWINDOW, false, WS_EX_TOPMOST | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE); + hWnd = CreateWindowEx( + WS_EX_TOPMOST | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, // Extended Style For The Window + "OpenGL", // Class Name + "Effect Test App", // Window Title + WS_POPUPWINDOW/*WS_OVERLAPPEDWINDOW*/ | // Defined Window Style + WS_CLIPSIBLINGS | // Required Window Style + WS_CLIPCHILDREN, // Required Window Style + 0, 0, // Window Position + rect.right - rect.left, // Window Width + rect.bottom - rect.top, // Window Height + NULL, // No Parent Window + NULL, // No Menu + hInstance, // Instance + NULL ); + + return hWnd; +} + +static LRESULT CALLBACK _WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch ( uMsg ) // Check For Windows Messages { - CCX_BREAK_IF(m_pEGL || ! pEGL); - - pDC = new TDC(this); - CCX_BREAK_IF(! pDC); - - EGLNativeDisplayType displayId = (EGLNativeDisplayType) pDC; - EGLDisplay eglDisplay; - CCX_BREAK_IF(EGL_NO_DISPLAY == (eglDisplay = eglGetDisplay(displayId))); - - EGLint nMajor, nMinor; - CCX_BREAK_IF(EGL_FALSE == eglInitialize(eglDisplay, &nMajor, &nMinor) || 1 != nMajor); - - const EGLint aConfigAttribs[] = + case WM_ACTIVATE: { - EGL_LEVEL, 0, - EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, - EGL_NATIVE_RENDERABLE, EGL_FALSE, - EGL_DEPTH_SIZE, EGL_DONT_CARE, - EGL_NONE, - }; - EGLint iConfigs; - EGLConfig eglConfig; - CCX_BREAK_IF(EGL_FALSE == eglChooseConfig(eglDisplay, aConfigAttribs, &eglConfig, 1, &iConfigs) - || (iConfigs != 1)); + if ( ! HIWORD( wParam ) ) // Check Minimization State + { + g_active = TRUE; + } + else + { + g_active = FALSE; + } + return 0; + } - EGLSurface eglSurface; - EGLNativeWindowType eglWnd = (EGLNativeWindowType) this; - CCX_BREAK_IF(EGL_NO_SURFACE == (eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, eglWnd, NULL))); + case WM_SYSCOMMAND: + { + if ( ( wParam == SC_SCREENSAVE ) || + ( wParam == SC_MONITORPOWER ) ) + { + return 0; + } + break; + } - EGLContext eglContext; - CCX_BREAK_IF(EGL_NO_CONTEXT == (eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, NULL))); + case WM_CLOSE: + { + PostQuitMessage( 0 ); + return 0; + } - CCX_BREAK_IF(EGL_FALSE == eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)); + case WM_KEYDOWN: + { + g_keys[wParam] = TRUE; + return 0; + } - m_pEGL = pEGL; - pEGL->m_eglDisplay = eglDisplay; - pEGL->m_eglSurface = eglSurface; - pEGL->m_eglContext = eglContext; - pEGL->m_pDC = pDC; - pDC = NULL; - pEGL = NULL; - } while (0); + case WM_KEYUP: + { + g_keys[wParam] = FALSE; + return 0; + } - CCX_SAFE_DELETE(pDC); - CCX_SAFE_DELETE(pEGL); -} - -void CCXEGLView::_releaseEGL() -{ - if (! m_pEGL) - { - return; + case WM_SIZE: + { + //ResizeScene( LOWORD( lParam ), HIWORD( lParam ) ); // LoWord=Width, HiWord=Height + return 0; + } } - eglMakeCurrent(m_pEGL->m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglTerminate(m_pEGL->m_eglDisplay); - CCX_SAFE_DELETE(m_pEGL); -} - + // Pass All Unhandled Messages To DefWindowProc + return DefWindowProc( hWnd, uMsg, wParam, lParam ); } diff --git a/cocos2dx/platform/uphone/CCXEGLView_uphone.h b/cocos2dx/platform/uphone/CCXEGLView_uphone.h index 8b2f7a7617..7fcdae5030 100644 --- a/cocos2dx/platform/uphone/CCXEGLView_uphone.h +++ b/cocos2dx/platform/uphone/CCXEGLView_uphone.h @@ -44,8 +44,9 @@ class CCX_DLL CCXEGLView : public TWindow public: CCXEGLView(TApplication * pApp); - ~CCXEGLView(); + virtual ~CCXEGLView(); + virtual Boolean AfterCreate(void); virtual Boolean EventHandler(TApplication * pApp, EventType * pEvent); CGSize getSize(); @@ -55,8 +56,6 @@ public: void swapBuffers(); private: - void _initEGL(); - void _releaseEGL(); bool m_bCaptured; NSSet * m_pSet; diff --git a/test_uphone/test_uphone.vcproj b/test_uphone/test_uphone.vcproj index 401d0ec1d9..6f8e70bccc 100644 --- a/test_uphone/test_uphone.vcproj +++ b/test_uphone/test_uphone.vcproj @@ -41,7 +41,7 @@ setOpenGLView(m_pMainWnd); + return TRUE; +} + Boolean Ttest_uphoneApp::EventHandler(EventType* pEvent) { Boolean bHandled = FALSE; @@ -24,17 +34,16 @@ Boolean Ttest_uphoneApp::EventHandler(EventType* pEvent) { case EVENT_AppLoad: { - TMainForm *pWin = new TMainForm(this); - if (pWin) + m_pMainWnd = new TMainForm(this); + if (m_pMainWnd) { - SetActiveWindow(pWin); + SetActiveWindow(m_pMainWnd); } else { // 窗口创建失败,退出应用。 SendStopEvent(); } } - bHandled = TRUE; break; case EVENT_AppStopNotify: @@ -46,7 +55,7 @@ Boolean Ttest_uphoneApp::EventHandler(EventType* pEvent) } if (FALSE == bHandled) { - return TApplication::EventHandler(pEvent); + return CCXApplication::EventHandler(pEvent); } return bHandled; diff --git a/test_uphone/test_uphoneApp.h b/test_uphone/test_uphoneApp.h index 249f70232f..dfc6021747 100644 --- a/test_uphone/test_uphoneApp.h +++ b/test_uphone/test_uphoneApp.h @@ -6,17 +6,22 @@ #ifndef __test_uphone_App_H__ #define __test_uphone_App_H__ -#include "TG3.h" +#include "CCXApplication.h" +#include "CCXEGLView.h" -class Ttest_uphoneApp : public TApplication +class Ttest_uphoneApp : public cocos2d::CCXApplication { public: Ttest_uphoneApp(); ~Ttest_uphoneApp(); + + virtual Boolean initCocos2d(); + public: virtual Boolean EventHandler(EventType * pEvent); + protected: -private: + cocos2d::CCXEGLView * m_pMainWnd; }; diff --git a/test_uphone/test_uphoneMainForm.cpp b/test_uphone/test_uphoneMainForm.cpp index 39727bcfd2..b5f69630a5 100644 --- a/test_uphone/test_uphoneMainForm.cpp +++ b/test_uphone/test_uphoneMainForm.cpp @@ -9,7 +9,7 @@ #include "test_uphone_res_def.h" #include "TG3.h" - +#include "ssMsgQueue.h" #include "touch_dispatcher/CCTouchDelegateProtocol.h" using namespace cocos2d; @@ -31,6 +31,13 @@ Boolean TMainForm::EventHandler(TApplication * pApp, EventType * pEvent) switch(pEvent->eType) { + case EVENT_WinInit: + { + // do some thing + bHandled = TRUE; + } + break; + case EVENT_CtrlSelect: { //switch(pEvent->sParam1) @@ -41,10 +48,12 @@ Boolean TMainForm::EventHandler(TApplication * pApp, EventType * pEvent) //} } break; + case EVENT_WinClose: { // Stop the application since the main form has been closed pApp->SendStopEvent(); + bHandled = TRUE; } break; } diff --git a/test_uphone/test_uphoneMainForm.h b/test_uphone/test_uphoneMainForm.h index f86a71ddac..60d7ffa677 100644 --- a/test_uphone/test_uphoneMainForm.h +++ b/test_uphone/test_uphoneMainForm.h @@ -19,6 +19,7 @@ public: public: virtual Boolean EventHandler(TApplication * pApp, EventType * pEvent); + protected: };