bool XFileUtils::LoadFrame( ID3DXFileData* pFileData, IDirect3DDevice9* pDevice, GFrame** pNewFrame) { GFrame* pFrame = new GFrame(); char name[128] = { 0 }; SIZE_T nameSize = 128; pFileData->GetName(name, &nameSize); pFrame->Name = name; ID3DXFileData* transFileData = SearchChild(_XTemplate("FrameTransformMatrix"), pFileData); if (transFileData) { _XFileDataLock(transFileData, transSize, transData); D3DXMATRIX* pInMatrix = _XToValue(D3DXMATRIX*, 0, transData); // memcpy_s(&pFrame->TransformationMatrix, sizeof(D3DXMATRIX), // transData, sizeof(D3DXMATRIX)); D3DXMatrixTranspose(&pFrame->TransformationMatrix, pInMatrix); _XFileDataUnlock(transFileData); } ID3DXFileData* pMeshFileData = SearchChild(_XTemplate("Mesh"), pFileData); if (pMeshFileData) { if (!LoadMeshContainer(pMeshFileData, pDevice, &pFrame->pMeshContainer)) return false; } *pNewFrame = pFrame; return true; }
BOOLEAN CPage::PerformMessage(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_SIZE: { RECT r; GetClientRect(hWnd,&r); sx=r.right; sy=r.bottom; } break; } if (childwindow) { if (childwindow->PerformMessage(hWnd,uMsg,wParam,lParam))return TRUE; return FALSE; } if (CWnd::PerformMessage(hWnd,uMsg,wParam,lParam))return TRUE; int i; switch (uMsg) { case WM_KEYDOWN: switch(wParam) { case VK_ESCAPE: Close(0); closed=TRUE; break; case VK_LEFT:SearchChild(-1,0); break; case VK_RIGHT:SearchChild(1,0); break; case VK_UP:SearchChild(0,-1); break; case VK_DOWN:SearchChild(0,1); break; case VK_TAB: { i=GetFocusedChild(); if (i!=-1) { int j=i; do { j=GetNextChild(j); }while ((j!=-1)&&(!child[j]->canfocus)); if (j!=-1) { child[j]->focused=TRUE; child[i]->focused=FALSE; child[i]->Invalidate(); child[j]->Invalidate(); }else{ j=0; while ((j!=-1)&&(!child[j]->canfocus)) { j=GetNextChild(j); } if (j!=-1) { child[i]->focused=FALSE; child[j]->focused=TRUE; child[i]->Invalidate(); child[j]->Invalidate(); } } } } break; default: return TRUE; } break; default:return FALSE; } return TRUE; }