int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT) { CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); g_hMenuGroup = LoadMenu( _Module.GetResourceInstance(), MAKEINTRESOURCE( IDR_MENU_GROUP ) ); g_hMenuGroup = GetSubMenu( g_hMenuGroup, 0 ); g_hMenuColor = LoadMenu( _Module.GetResourceInstance(), MAKEINTRESOURCE( IDR_MENU_COLOR ) ); g_hMenuColor = GetSubMenu( g_hMenuColor, 0 ); CMainWnd wndMain; char szTitle[256] = { 0 }; sprintf( szTitle, "%s %s", GetAppName(), GetAppVer() ); if( NULL == wndMain.Create( NULL, CWindow::rcDefault, szTitle, WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX ) ) { ATLTRACE( _T("Main window creation failed!\n") ); return( 0 ); } wndMain.ShowWindow( nCmdShow ); int nRet = theLoop.Run(); _Module.RemoveMessageLoop(); return nRet; }
// // 从资源中加载动画光标 // 如果动画光标是 256 色的,CreateIconFromResource() 就会失败返回 NULL,但 GetLastError() 返回 0 // HCURSOR LoadAniCursor( const char *pResourceType, // 资源类型 UINT uID ) // 资源 ID { HINSTANCE hInst = _Module.GetResourceInstance(); HRSRC hRes = FindResource( hInst, MAKEINTRESOURCE( uID ), pResourceType ); if( hRes ) { DWORD dwSize = SizeofResource( hInst, hRes ); HGLOBAL hGlob = LoadResource( hInst, hRes ); if( hGlob ) { LPBYTE pBytes = (LPBYTE)LockResource( hGlob ); if( pBytes ) return( (HCURSOR)CreateIconFromResource( pBytes, dwSize, FALSE, 0x00030000 ) ); } } return( NULL ); }