// Callback function for rotation void CCS580HWView::OnRotate() { // TODO: Add your command handler code here CRotateDlg dlg; GzInput* input; GzMatrix rotMat = { 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 }; if(m_pApplication == NULL) return; input = m_pApplication->m_pUserInput; if(input == NULL) return; // Initialize input->rotation[0] = input->rotation[1] = input->rotation[2] = 0; dlg.Initialize(input->rotation[0], input->rotation[1], input->rotation[2]); if(dlg.DoModal() == IDOK) { // Update input rotation value input->rotation[dlg.m_nAxis] = dlg.m_fRot; // Create Rotation Matrix switch(dlg.m_nAxis) { case 0 : // Create matrix for Rot X GzRotXMat(input->rotation[0], rotMat); break; case 1: // Create matrix for Rot Y GzRotYMat(input->rotation[1], rotMat); break; case 2: // Create matrix for Rot Z GzRotZMat(input->rotation[2], rotMat); break; } // Accumulate matrix GzPushMatrix(m_pApplication->m_pRender, rotMat); OnRender(); } }
BOOL CRotateApp::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization SetRegistryKey(_T("Local AppWizard-Generated Applications")); CRotateDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }