void RandKeysUtil::SpinnerChange(int id) { switch (id) { case IDC_RANDKEYS_POSTIMESPIN: posTime = iPosTime->GetIVal(); break; case IDC_RANDKEYS_NEGTIMESPIN: negTime = iNegTime->GetIVal(); break; case IDC_RANDKEYS_POSVALSPIN: posVal = iPosVal->GetFVal(); break; case IDC_RANDKEYS_NEGVALSPIN: negVal = iNegVal->GetFVal(); break; } }
void RendSpline::CheckAspectLock(TimeValue t) { ParamID lengthID; ParamID widthID; ParamID aspectlockID; float length, width, aspect = 1.0f; BOOL aspectlocked = FALSE; if(UseViewOrRenderParams(t) == rbViewport) { widthID = rnd_v2_vpt_width; lengthID = rnd_v2_vpt_length; aspectlockID = rnd_v2_vpt_aspect_lock; } else { widthID = rnd_v2_width; lengthID = rnd_v2_length; aspectlockID = rnd_v2_aspect_lock; } pblock->GetValue(lengthID,t,length,FOREVER); pblock->GetValue(widthID,t,width,FOREVER); pblock->GetValue(aspectlockID,t,aspectlocked,FOREVER); IParamMap2 *map = pblock->GetMap(0); if(map) { ISpinnerControl *iSpin = GetISpinner(GetDlgItem(map->GetHWnd(), IDC_ASPECTSPIN)); aspect = iSpin->GetFVal(); } pblock->GetMap()->Enable(aspectlockID,((length != 0.0f && width != 0.0f && aspect != 0.0f) || aspectlocked)); }
static INT_PTR CALLBACK MouseDeviceDlgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { IMCParamDlg *dlg = DLGetWindowLongPtr<IMCParamDlg*>(hWnd); if (!dlg && msg!=WM_INITDIALOG) return FALSE; switch (msg) { case WM_INITDIALOG: dlg = (IMCParamDlg*)lParam; dlg->binding->UpdateRollup(dlg->iRoll); DLSetWindowLongPtr(hWnd, lParam); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_MOUSE_X: { MouseDeviceBinding *b = (MouseDeviceBinding*)dlg->binding; b->which = MC_MOUSE_X; b->NotifyDependents(FOREVER,0,REFMSG_CHANGE); break; } case IDC_MOUSE_Y: { MouseDeviceBinding *b = (MouseDeviceBinding*)dlg->binding; b->which = MC_MOUSE_Y; b->NotifyDependents(FOREVER,0,REFMSG_CHANGE); break; } case IDC_MOUSE_FLIP: { MouseDeviceBinding *b = (MouseDeviceBinding*)dlg->binding; b->invert = IsDlgButtonChecked(hWnd,IDC_MOUSE_FLIP); b->NotifyDependents(FOREVER,0,REFMSG_CHANGE); break; } } break; case CC_SPINNER_CHANGE: { ISpinnerControl *spin = (ISpinnerControl *)lParam; MouseDeviceBinding *b = (MouseDeviceBinding*)dlg->binding; b->scale = spin->GetFVal(); b->NotifyDependents(FOREVER,0,REFMSG_CHANGE); break; } case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_MOUSEMOVE: dlg->iRoll->DlgMouseMessage(hWnd,msg,wParam,lParam); break; default: return FALSE; } return TRUE; }
void RendSpline::OnSetAspect(HWND hWnd, TimeValue t, ParamID widthID, ParamID lengthID) { CheckAspectLock(t); ISpinnerControl *iSpin = GetISpinner(GetDlgItem(hWnd, IDC_ASPECTSPIN)); mAspect = iSpin->GetFVal(); float width; pblock->GetValue(widthID,t,width,FOREVER); pblock->SetValue(lengthID,t,mAspect*width); ReleaseISpinner(iSpin); }
BOOL SceneViewer::DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { fhDlg = hDlg; // Set the exe to use HWND hExeCombo = GetDlgItem(hDlg, IDC_EXE); ComboBox_AddString(hExeCombo, "Release"); ComboBox_AddString(hExeCombo, "Debug"); ComboBox_SetCurSel(hExeCombo, fReleaseExe ? 0 : 1); // Set the client path const char *path = plMaxConfig::GetClientPath(false, true); ICustEdit *edit = GetICustEdit(GetDlgItem(hDlg, IDC_CLIENT_PATH)); edit->SetText((char*)path); // Set the "Load old data" checkbox HWND hLoadOld = GetDlgItem(hDlg, IDC_REUSE_DATA); Button_SetCheck(hLoadOld, fLoadOld ? BST_CHECKED : BST_UNCHECKED); Button_Enable(hLoadOld, SceneSync::Instance().CanLoadOldResMgr()); // Set the update controls float val = float(fUpdateFreq) / 1000.f; ISpinnerControl *spin = SetupFloatSpinner(hDlg, IDC_SPINNER, IDC_EDIT, 0.1, 1.f, val); spin->Enable(fUpdate); CheckDlgButton(hDlg, IDC_UPDATE, fUpdate ? BST_CHECKED : BST_UNCHECKED); IEnableSetupControls(!SceneSync::Instance().IsClientRunning()); } return TRUE; case WM_COMMAND: // Start/Stop SceneViewer if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_START) { IToggleRunning(); IEnableSetupControls(!SceneSync::Instance().IsClientRunning()); return TRUE; } // Close dialog else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDCANCEL) { DestroyWindow(hDlg); fhDlg = NULL; return TRUE; } // Browse for directory else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_DIR) { const char *path = plMaxConfig::GetClientPath(true); if (path) { ICustEdit *edit = GetICustEdit(GetDlgItem(hDlg, IDC_CLIENT_PATH)); edit->SetText((char*)path); } return TRUE; } // "Load old data" selection changed else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_REUSE_DATA) { fLoadOld = (Button_GetCheck((HWND)lParam) == BST_CHECKED); return TRUE; } // Release/Debug exe selection changed else if (HIWORD(wParam) == CBN_SELCHANGE && LOWORD(wParam) == IDC_EXE) { int sel = ComboBox_GetCurSel((HWND)lParam); fReleaseExe = (sel == 0); return TRUE; } else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_UPDATE) { fUpdate = (SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED); ISpinnerControl *spin = GetISpinner(GetDlgItem(hDlg, IDC_SPINNER)); spin->Enable(fUpdate); ReleaseISpinner(spin); // If update was turned on, send out an update message so any dirty objects // will be reconverted right away if (fUpdate) SceneSync::Instance().SetUpdateFreq(fUpdateFreq); return TRUE; } break; // Update frequency changed case CC_SPINNER_CHANGE: if (LOWORD(wParam) == IDC_SPINNER) { ISpinnerControl *spin = (ISpinnerControl*)lParam; float val = spin->GetFVal(); fUpdateFreq = int(val*1000.f); SceneSync::Instance().SetUpdateFreq(fUpdateFreq); } return TRUE; // Type in directory case WM_CUSTEDIT_ENTER: if (wParam == IDC_CLIENT_PATH) { ICustEdit *edit = GetICustEdit((HWND)lParam); char path[MAX_PATH]; edit->GetText(path, sizeof(path)); plMaxConfig::SetClientPath(path); } return TRUE; } return FALSE; }
static INT_PTR CALLBACK FaceDataDlgProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { EditFaceDataMod *em = (EditFaceDataMod *) GetWindowLongPtr (hWnd, GWLP_USERDATA); ISpinnerControl *spin; switch (msg) { case WM_INITDIALOG: em = (EditFaceDataMod*) lParam; em->SetDialogHandle (hWnd); SetWindowLongPtr (hWnd,GWLP_USERDATA,lParam); spin = GetISpinner(GetDlgItem(hWnd,IDC_VALUE_SPIN)); spin->SetLimits (0.0f, 100.0f, FALSE); spin->SetScale (0.1f); spin->LinkToEdit (GetDlgItem(hWnd, IDC_VALUE), EDITTYPE_POS_FLOAT); spin->SetValue (1.0f, FALSE); spin->Disable(); ReleaseISpinner(spin); CheckDlgButton (hWnd, IDC_COLLAPSABLE, em->GetCollapsable()); em->UpdateDialog (); break; case CC_SPINNER_BUTTONDOWN: switch (LOWORD(wParam)) { case IDC_VALUE_SPIN: em->ChangeBegin (); break; } break; case CC_SPINNER_CHANGE: spin = (ISpinnerControl*)lParam; switch (LOWORD(wParam)) { case IDC_VALUE_SPIN: em->ChangeTo (spin->GetFVal()); break; } break; case CC_SPINNER_BUTTONUP: switch (LOWORD(wParam)) { case IDC_VALUE_SPIN: em->ChangeFinish (HIWORD(wParam) ? true : false); break; } break; case WM_CUSTEDIT_ENTER: switch (LOWORD(wParam)) { case IDC_VALUE: em->ChangeFinish (true); break; } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_RESET_SELECTION: em->ResetSelection (); break; case IDC_COLLAPSABLE: em->SetCollapsable (IsDlgButtonChecked (hWnd, IDC_COLLAPSABLE)?true:false); break; } break; case WM_PAINT: // Good place for call to UpdateDialog, if needed. return FALSE; default: return FALSE; } return TRUE; }
void UnwrapMod::RelaxThreadOp(int operation, HWND hWnd) { ISpinnerControl *iAmount = NULL; ISpinnerControl *iStretch = NULL; //this is a structure that holds all our info we are passing to the thread iAmount = GetISpinner(GetDlgItem(hWnd,IDC_RELAX_AMOUNTSPIN)); iStretch = GetISpinner(GetDlgItem(hWnd,IDC_RELAX_STRETCHSPIN)); mRelaxThreadData.mod = this; HWND hType = GetDlgItem(hWnd,IDC_RELAXTYPE_COMBO); mRelaxThreadData.mType = SendMessage(hType, CB_GETCURSEL, 0L, 0); if (iAmount) mRelaxThreadData.mAmount = iAmount->GetFVal(); else mRelaxThreadData.mAmount = 0.1f; mRelaxThreadData.mBoundary = IsDlgButtonChecked(hWnd,IDC_BOUNDARY_CHECK); if (iStretch) mRelaxThreadData.mStretch = iStretch->GetFVal(); else mRelaxThreadData.mStretch = 0.0f; mRelaxThreadData.mCorner = IsDlgButtonChecked(hWnd,IDC_CORNERS_CHECK); mRelaxThreadData.mIterations = 1000000; ReleaseISpinner(iAmount); ReleaseISpinner(iStretch); if (operation == KThreadStart) { unsigned int threadID; ICustButton *iButton = GetICustButton(GetDlgItem(relaxHWND, IDC_RUN_BUTTON)); if (iButton ) { iButton->SetCheck(TRUE); iButton->SetText(GetString(IDS_SPLINEMAP_ENDRELAX)); } if (iButton) ReleaseICustButton(iButton); mRelaxThreadHandle = (HANDLE)_beginthreadex( NULL, 0, &CallRelaxThread, (void *) &mRelaxThreadData, 0, &threadID ); } else if (operation == KThreadReStart) { //only restart if we have a current thread running if (mRelaxThreadHandle && mRelaxThreadData.mStarted) { ICustButton *iButton = GetICustButton(GetDlgItem(relaxHWND, IDC_RUN_BUTTON)); if (iButton ) { iButton->SetCheck(FALSE); } for (int ldID = 0; ldID < mMeshTopoData.Count(); ldID++) { mMeshTopoData[ldID]->SetUserCancel(TRUE); } WaitForSingleObject( mRelaxThreadHandle, INFINITE ); CloseHandle( mRelaxThreadHandle ); mRelaxThreadHandle = NULL; for (int ldID = 0; ldID < mMeshTopoData.Count(); ldID++) { mMeshTopoData[ldID]->SetUserCancel(FALSE); } if (iButton ) { iButton->SetCheck(TRUE); } if (iButton) ReleaseICustButton(iButton); unsigned int threadID; mRelaxThreadHandle = (HANDLE)_beginthreadex( NULL, 0, &CallRelaxThread, (void *) &mRelaxThreadData, 0, &threadID ); } } else if (operation == KThreadEnd) { ICustButton *iButton = GetICustButton(GetDlgItem(relaxHWND, IDC_RUN_BUTTON)); if (iButton) { iButton->SetText(GetString(IDS_SPLINEMAP_STARTRELAX)); iButton->SetCheck(FALSE); ReleaseICustButton(iButton); } for (int ldID = 0; ldID < mMeshTopoData.Count(); ldID++) { mMeshTopoData[ldID]->SetUserCancel(TRUE); } WaitForSingleObject( mRelaxThreadHandle, INFINITE ); CloseHandle( mRelaxThreadHandle ); mRelaxThreadHandle = NULL; for (int ldID = 0; ldID < mMeshTopoData.Count(); ldID++) { mMeshTopoData[ldID]->SetUserCancel(FALSE); } } }
static INT_PTR CALLBACK VertexPaintDlgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { int numPoints; VertexPaint *mod = (VertexPaint*)GetWindowLongPtr(hWnd,GWLP_USERDATA); if (!mod && msg!=WM_INITDIALOG) return FALSE; int comboResult; // Manages Spinners. if (((msg==CC_SPINNER_BUTTONUP) && HIWORD(wParam)) || ((msg==CC_SPINNER_CHANGE) )) { ISpinnerControl *spin; spin = (ISpinnerControl *) lParam; switch (LOWORD(wParam)) { case IDC_TINT_SPIN: if ((msg == CC_SPINNER_CHANGE)) { mod->fTint = spin->GetFVal()/100; } break; case IDC_BEND_SPIN: if ((msg == CC_SPINNER_CHANGE)) { mod->fGradientBend = spin->GetFVal()/100; } break; } } switch (msg) { case WM_INITDIALOG: LoadImages(); mod = (VertexPaint*)lParam; SetWindowLongPtr(hWnd,GWLP_USERDATA,lParam); mod->hParams = hWnd; mod->iPaintButton = GetICustButton(GetDlgItem(hWnd, IDC_PAINT)); mod->iPaintButton->SetType(CBT_CHECK); mod->iPaintButton->SetHighlightColor(GREEN_WASH); mod->iPaintButton->SetCheck(mod->ip->GetCommandMode()->ID() == CID_PAINT && !((PaintMouseProc *)mod->ip->GetCommandMode()->MouseProc(&numPoints))->GetPickMode()); mod->iPaintButton->SetImage(hButtonImages,0,0,0,0,15,14); mod->iPaintButton->SetTooltip (TRUE, GetString (IDS_PAINT)); mod->iPickButton = GetICustButton(GetDlgItem(hWnd, IDC_PICK)); mod->iPickButton->SetType(CBT_CHECK); mod->iPickButton->SetHighlightColor(GREEN_WASH); mod->iPickButton->SetCheck(mod->ip->GetCommandMode()->ID() == CID_PAINT && ((PaintMouseProc *)mod->ip->GetCommandMode()->MouseProc(&numPoints))->GetPickMode()); mod->iPickButton->SetImage(hButtonImages,1,1,1,1,15,14); mod->iPickButton->SetTooltip (TRUE, GetString (IDS_PICK)); mod->iColor = GetIColorSwatch(GetDlgItem(hWnd, IDC_COLOR)); // change current Color according to editMode mod->reloadBkupColor(); // Get interface For ZGradient, reload bkuped colors mod->iColorGradient[0] = GetIColorSwatch(GetDlgItem(hWnd, IDC_PALETTE_GRAD0)); mod->iColorGradient[1] = GetIColorSwatch(GetDlgItem(hWnd, IDC_PALETTE_GRAD1)); mod->iColorGradient[0]->SetColor(mod->lastGradientColor[0]); mod->iColorGradient[1]->SetColor(mod->lastGradientColor[1]); // Init comboBox SendDlgItemMessage(hWnd, IDC_COMBO_TYPE, CB_ADDSTRING, 0, (LPARAM)"Tree Weight"); SendDlgItemMessage(hWnd, IDC_COMBO_TYPE, CB_ADDSTRING, 0, (LPARAM)"Phase Level 1"); SendDlgItemMessage(hWnd, IDC_COMBO_TYPE, CB_ADDSTRING, 0, (LPARAM)"Phase Level 2"); SendDlgItemMessage(hWnd, IDC_COMBO_TYPE, CB_SETCURSEL, mod->getEditionType(), 0); // If paint mode at last edit. if(mod->_LastPaintMode) { // ActivatePaint / check button. mod->ActivatePaint(TRUE); mod->iPaintButton->SetCheck(TRUE); } break; case WM_POSTINIT: mod->InitPalettes(); break; case CC_COLOR_CHANGE: if (LOWORD(wParam) == IDC_COLOR) { IColorSwatch* iCol = (IColorSwatch*)lParam; switch(mod->getEditionType()) { case 0: mod->lastWeightColor = iCol->GetColor(); break; case 1: case 2: mod->lastPhaseColor = iCol->GetColor(); break; } } break; case WM_DESTROY: mod->SavePalettes(); mod->iPaintButton = NULL; mod->iPickButton = NULL; mod->iColor = NULL; mod->iColorGradient[0] = NULL; mod->iColorGradient[1] = NULL; break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_PAINT: mod->ActivatePaint(mod->iPaintButton->IsChecked()); break; case IDC_PICK: mod->ActivatePaint(mod->iPickButton->IsChecked(),TRUE); break; case IDC_VC_ON: mod->TurnVCOn(FALSE); break; case IDC_SHADED: mod->TurnVCOn(TRUE); break; case IDC_COMBO_TYPE: // Init default type. comboResult= SendDlgItemMessage(hWnd, IDC_COMBO_TYPE, CB_GETCURSEL, 0, 0); mod->setEditionType(comboResult); break; case IDC_BUTTON_FILL: mod->fillSelectionColor(); break; case IDC_BUTTON_GRADIENT: mod->fillSelectionGradientColor(); break; case IDC_BUTTON_GRAD0: mod->iColorGradient[0]->SetColor(RGB(0,0,0)); mod->iColorGradient[1]->SetColor(RGB(85,85,85)); break; case IDC_BUTTON_GRAD1: mod->iColorGradient[0]->SetColor(RGB(85,85,85)); mod->iColorGradient[1]->SetColor(RGB(170,170,170)); break; case IDC_BUTTON_GRAD2: mod->iColorGradient[0]->SetColor(RGB(170,170,170)); mod->iColorGradient[1]->SetColor(RGB(255,255,255)); break; } break; default: return FALSE; } return TRUE; }
BOOL OrenNayarShaderDlg::PanelProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ) { int id = LOWORD(wParam); int code = HIWORD(wParam); switch (msg) { case WM_INITDIALOG: { int i; HDC theHDC = GetDC(hwndDlg); hOldPal = GetGPort()->PlugPalette(theHDC); ReleaseDC(hwndDlg,theHDC); for (i=0; i<NCOLBOX; i++) { cs[i] = GetIColorSwatch(GetDlgItem(hwndDlg, colID[i]), GetMtlColor(i, pShader), GetColorName(i)); } hwHilite = GetDlgItem(hwndDlg, IDC_HIGHLIGHT); SetWindowLongPtr( hwHilite, GWLP_WNDPROC, (LONG_PTR)HiliteWndProc); shSpin = SetupIntSpinner(hwndDlg, IDC_SH_SPIN, IDC_SH_EDIT, 0,100, 0); ssSpin = SetupIntSpinner(hwndDlg, IDC_SS_SPIN, IDC_SS_EDIT, 0,999, 0); softSpin = SetupFloatSpinner(hwndDlg, IDC_SOFT_SPIN, IDC_SOFT_EDIT, 0.0f,1.0f,0.0f,.01f); trSpin = SetupIntSpinner(hwndDlg, IDC_TR_SPIN, IDC_TR_EDIT, 0,100, 0); dlevSpin = SetupIntSpinner(hwndDlg, IDC_DIFFLEV_SPIN, IDC_DIFFLEV_EDIT, 0, 400, 0); roughSpin = SetupIntSpinner(hwndDlg, IDC_DIFFROUGH_SPIN, IDC_DIFFROUGH_EDIT, 0, 100, 0); for (int j=0; j<NMBUTS; j++) { texMBut[j] = GetICustButton(GetDlgItem(hwndDlg,texMButtonsIDC[j])); assert( texMBut[j] ); texMBut[j]->SetRightClickNotify(TRUE); texMBut[j]->SetDADMgr(&dadMgr); } SetupLockButton(hwndDlg,IDC_LOCK_AD,FALSE); SetupLockButton(hwndDlg,IDC_LOCK_DS,FALSE); SetupPadLockButton(hwndDlg,IDC_LOCK_ADTEX, TRUE); /* // mjm - 5.10.99 - isn't this already created above when i == N_SI_CLR? // create both a self-illum color as well as a spinner cs[N_SI_CLR] = GetIColorSwatch(GetDlgItem(hwndDlg, colID[N_SI_CLR] ), GetMtlColor(N_SI_CLR, pShader), GetColorName(N_SI_CLR)); */ siSpin = SetupIntSpinner(hwndDlg, IDC_SI_SPIN, IDC_SI_EDIT, 0,100, 0); if( pShader->IsSelfIllumClrOn() ) { // enable the color swatch, disable the spinner ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_HIDE ); ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_HIDE ); } else { // disable the color swatch ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_HIDE ); } LoadDialog(TRUE); } break; case WM_COMMAND: { for ( int i=0; i<NMBUTS; i++) { if (id == texMButtonsIDC[i]) { PostMessage(hwmEdit,WM_TEXMAP_BUTTON, texmapFromMBut[i],(LPARAM)pMtl ); UpdateMapButtons(); goto exit; } } } switch (id) { case IDC_LOCK_AD: SetLockAD(IsButtonChecked(hwndDlg, IDC_LOCK_AD)); UpdateMtlDisplay(); break; case IDC_LOCK_DS: SetLockDS(IsButtonChecked(hwndDlg, IDC_LOCK_DS)); UpdateMtlDisplay(); break; case IDC_LOCK_ADTEX:{ BOOL on = IsButtonChecked(hwndDlg, IDC_LOCK_ADTEX); SetLockADTex(on); UpdateMtlDisplay(); } break; case IDC_SI_COLORON:{ int isOn = GetCheckBox(hwndDlg, IDC_SI_COLORON ); pShader->SetSelfIllumClrOn( isOn ); if ( isOn ) { // enable the color swatch, disable the spinner ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_HIDE ); ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_HIDE ); ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_SHOW ); } else { // disable the color swatch ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_HIDE ); ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_SHOW ); ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_SHOW ); } NotifyChanged(); // UpdateMtlDisplay(); } break; } break; case CC_COLOR_SEL: { int id = LOWORD(wParam); SelectEditColor(ColorIDCToIndex(id)); } break; case CC_COLOR_DROP: { int id = LOWORD(wParam); SelectEditColor(ColorIDCToIndex(id)); UpdateMtlDisplay(); } break; case CC_COLOR_BUTTONDOWN: theHold.Begin(); break; case CC_COLOR_BUTTONUP: if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG)); else theHold.Cancel(); UpdateMtlDisplay(); break; case CC_COLOR_CHANGE: { int id = LOWORD(wParam); int buttonUp = HIWORD(wParam); int n = ColorIDCToIndex(id); if (buttonUp) theHold.Begin(); Color curColor(cs[n]->GetColor()); SetMtlColor(n, curColor, pShader, cs, curTime); if (buttonUp) { theHold.Accept(GetString(IDS_DS_PARAMCHG)); // DS: 5/11/99- this was commented out. I put it back in, because // it is necessary for the Reset button in the color picker to // update the viewport. UpdateMtlDisplay(); } } break; case WM_PAINT: if (!valid) { valid = TRUE; ReloadDialog(); } return FALSE; case WM_CLOSE: case WM_DESTROY: break; case CC_SPINNER_CHANGE: if (!theHold.Holding()) theHold.Begin(); switch (id) { case IDC_SH_SPIN: pShader->SetGlossiness(PcToFrac(shSpin->GetIVal()), curTime); UpdateHilite(); break; case IDC_SS_SPIN: pShader->SetSpecularLevel(PcToFrac(ssSpin->GetIVal()),curTime); UpdateHilite(); break; case IDC_SOFT_SPIN: pShader->SetSoftenLevel(softSpin->GetFVal(),curTime); break; case IDC_SI_SPIN: pShader->SetSelfIllum(PcToFrac(siSpin->GetIVal()),curTime); break; case IDC_DIFFLEV_SPIN: pShader->SetDiffuseLevel(PcToFrac(dlevSpin->GetIVal()),curTime); break; case IDC_DIFFROUGH_SPIN: pShader->SetDiffuseRoughness(PcToFrac(roughSpin->GetIVal()),curTime); break; //******** >>>><<<< required handling for opacity....must be present in all dialogs case IDC_TR_SPIN: pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime); break; } // UpdateMtlDisplay(); break; case CC_SPINNER_BUTTONDOWN: theHold.Begin(); break; case WM_CUSTEDIT_ENTER: case CC_SPINNER_BUTTONUP: if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER) theHold.Accept(GetString(IDS_DS_PARAMCHG)); else theHold.Cancel(); UpdateMtlDisplay(); break; } exit: return FALSE; }
// --[ Method ]--------------------------------------------------------------- // // - Class : CStravaganzaMaxTools // // - prototype : void SaveConfig() // // - Purpose : Saves the panel parameters to a file. // // ----------------------------------------------------------------------------- void CStravaganzaMaxTools::SaveConfig() { if(!m_hPanel) return; ISpinnerControl* pMaxSpin; ICustEdit* pMaxEdit; int nSelectedItem; char szAuxBuffer[MAX_PATH]; COutputFile cfgFile; // GET SETTINGS FROM PANEL // Common m_bPreprocessMesh = IsDlgButtonChecked(m_hPanel, IDC_CHECK_PREPROCESSMESHES) == BST_CHECKED ? true : false; m_bUseLights = IsDlgButtonChecked(m_hPanel, IDC_CHECK_USELIGHTS) == BST_CHECKED ? true : false; pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_STARTTIME)); m_fStartTime = pMaxSpin->GetFVal(); ReleaseISpinner(pMaxSpin); pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ENDTIME)); m_fEndTime = pMaxSpin->GetFVal(); ReleaseISpinner(pMaxSpin); if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_USESAMPLING) == BST_CHECKED) { m_eAnimType = ANIMATION_SAMPLING; } else if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_USEMAXKEYS) == BST_CHECKED) { m_eAnimType = ANIMATION_MAXKEYS; } pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ANIMCHECKSTEP)); m_nAnimCheckStep = pMaxSpin->GetIVal(); ReleaseISpinner(pMaxSpin); pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_POSSAMPLINGFREQ)); m_nNumPosSamplesPerSec = pMaxSpin->GetIVal(); ReleaseISpinner(pMaxSpin); pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_SCLSAMPLINGFREQ)); m_nNumSclSamplesPerSec = pMaxSpin->GetIVal(); ReleaseISpinner(pMaxSpin); pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_ROTSAMPLINGFREQ)); m_nNumRotSamplesPerSec = pMaxSpin->GetIVal(); ReleaseISpinner(pMaxSpin); // Export pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_DESTINATIONFILE)); pMaxEdit->GetText(szAuxBuffer, MAX_PATH); ReleaseICustEdit(pMaxEdit); m_strFile = szAuxBuffer; m_bCopyTextures = IsDlgButtonChecked(m_hPanel, IDC_CHECK_COPYTEXTURES) == BST_CHECKED ? true : false; pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_TEXTUREFOLDER)); pMaxEdit->GetText(szAuxBuffer, MAX_PATH); ReleaseICustEdit(pMaxEdit); m_strTexturePath = szAuxBuffer; // Preview // Get selected combo box camera nSelectedItem = SendMessage(GetDlgItem(m_hPanel, IDC_COMBO_CAMERA), CB_GETCURSEL, 0, 0); if(nSelectedItem == CB_ERR) // Items? { m_strPreviewCamera = ""; } else { // Get selected item memset(szAuxBuffer, 0, MAX_PATH); if(SendMessage(GetDlgItem(m_hPanel, IDC_COMBO_CAMERA), CB_GETLBTEXT, (WPARAM)nSelectedItem, (LPARAM)(LPCSTR)szAuxBuffer) == CB_ERR) { CLogger::ErrorWindow("Error getting camera selection"); } else { m_strPreviewCamera = szAuxBuffer; } } if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_SOLID) == BST_CHECKED) { m_ePreviewType = CRenderVisitor::MODE_SOLID; } else if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_WIREFRAME) == BST_CHECKED) { m_ePreviewType = CRenderVisitor::MODE_WIREFRAME; } else if(IsDlgButtonChecked(m_hPanel, IDC_RADIO_FULLDETAIL) == BST_CHECKED) { m_ePreviewType = CRenderVisitor::MODE_FULLDETAIL; } m_bFullscreen = IsDlgButtonChecked(m_hPanel, IDC_CHECK_FULLSCREEN) == BST_CHECKED ? true : false; m_bLoop = IsDlgButtonChecked(m_hPanel, IDC_CHECK_LOOP) == BST_CHECKED ? true : false; int nAux; BOOL valid; pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_RESW)); nAux = pMaxEdit->GetInt(&valid); if(valid) m_nPreviewResX = nAux; else pMaxEdit->SetText(m_nPreviewResX); ReleaseICustEdit(pMaxEdit); pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_RESH)); nAux = pMaxEdit->GetInt(&valid); if(valid) m_nPreviewResY = nAux; else pMaxEdit->SetText(m_nPreviewResY); ReleaseICustEdit(pMaxEdit); pMaxSpin = GetISpinner(GetDlgItem(m_hPanel, IDC_SPIN_VIEWPORTHEIGHT)); m_fViewportHeight = pMaxSpin->GetFVal(); ReleaseISpinner(pMaxSpin); m_bShowStats = IsDlgButtonChecked(m_hPanel, IDC_CHECK_SHOWSTATS) == BST_CHECKED ? true : false; m_bRenderToAvi = IsDlgButtonChecked(m_hPanel, IDC_CHECK_RENDERTOAVI) == BST_CHECKED ? true : false; pMaxEdit = GetICustEdit(GetDlgItem(m_hPanel, IDC_EDIT_AVIFILE)); pMaxEdit->GetText(szAuxBuffer, MAX_PATH); ReleaseICustEdit(pMaxEdit); m_strAviFile = szAuxBuffer; // SAVE SETTINGS if(cfgFile.Open(m_strCfgFile, false, false) == false) { return; } cfgFile.WriteInt(m_bPreprocessMesh ? 1 : 0); cfgFile.WriteInt(m_bUseLights ? 1 : 0); cfgFile.WriteInt(m_nAnimCheckStep); cfgFile.WriteInt(m_nNumPosSamplesPerSec); cfgFile.WriteInt(m_nNumSclSamplesPerSec); cfgFile.WriteInt(m_nNumRotSamplesPerSec); cfgFile.WriteInt(m_nNumCamSettingsPerSec); cfgFile.WriteInt(m_nNumLightSettingsPerSec); cfgFile.WriteInt(m_eAnimType); // Export options cfgFile.WriteStringZero(m_strFile); cfgFile.WriteInt(m_bCopyTextures ? 1 : 0); cfgFile.WriteStringZero(m_strTexturePath); // Preview options cfgFile.WriteStringZero(m_strPreviewCamera); cfgFile.WriteInt(m_ePreviewType); cfgFile.WriteInt(m_bFullscreen ? 1 : 0); cfgFile.WriteInt(m_bLoop ? 1 : 0); cfgFile.WriteInt(m_nPreviewResX); cfgFile.WriteInt(m_nPreviewResY); cfgFile.WriteFloat(m_fViewportHeight); cfgFile.WriteInt(m_bShowStats ? 1 : 0); cfgFile.WriteInt(m_bRenderToAvi ? 1 : 0); cfgFile.WriteStringZero(m_strAviFile); cfgFile.Close(); }