/// Called to update the controls of the dialog virtual void Update( TimeValue t, Interval &valid, IParamMap2 *map ) { ICustButton *bmSelectBtn; IParamBlock2 *pblock; int i; long buttons[ 6 ] = { IDC_FRONT_NAME, IDC_BACK_NAME, IDC_LEFT_NAME, IDC_RIGHT_NAME, IDC_TOP_NAME, IDC_BOTTOM_NAME }; BitmapInfo bi; ParamMap2UserDlgProc::Update( t, valid, map ); pblock = map->GetParamBlock(); for( i = plStaticEnvLayer::kBmpFrontBitmap; i <= plStaticEnvLayer::kBmpBottomBitmap; i++ ) { bmSelectBtn = GetICustButton( GetDlgItem( map->GetHWnd(), buttons[ i ] ) ); PBBitmap *pbbm = pblock->GetBitmap( i, t ); if( pbbm ) bmSelectBtn->SetText( (TCHAR *)pbbm->bi.Filename() ); else bmSelectBtn->SetText( _T( "None" ) ); ReleaseICustButton( bmSelectBtn ); } plStaticEnvLayer *layer = (plStaticEnvLayer *)map->GetParamBlock()->GetOwner(); bi.SetName( layer->GetBaseFilename( t ) ); SetDlgItemText( map->GetHWnd(), IDC_BASE_FILENAME, bi.Filename() ); map->Enable( plStaticEnvLayer::kBmpGenerateFaces, ( bi.Name() == NULL || bi.Name()[ 0 ] == 0 ) ? FALSE : TRUE ); bmSelectBtn = GetICustButton( GetDlgItem( map->GetHWnd(), IDC_GENERATE_FACES ) ); bmSelectBtn->SetText( _T( "Generate From Node" ) ); ReleaseICustButton( bmSelectBtn ); i = pblock->GetInt( plStaticEnvLayer::kBmpTextureSize, t ); pblock->SetValue( plStaticEnvLayer::kBmpLastTextureSize, t, i ); }
void PFOperatorInstanceShapeDlgProc::UpdateObjectNameDlg( HWND hWnd, TSTR& objectName ) { ICustButton* but; but = GetICustButton( GetDlgItem( hWnd, IDC_PICK ) ); but->SetText(objectName); ReleaseICustButton(but); }
BOOL UnwrapMod::AddDefaultActionToBar(ICustToolbar *toolBar, int id) { int numOps = NumElements(spActions)/3; UnwrapAction *wtActions = NULL; int ct = 0; for (int i =0; i < numOps; i++) { int testid, ids1, ids2; testid = spActions[ct++]; ids1 = spActions[ct++]; ids2 = spActions[ct++]; if (testid == id) { TSTR name; name.printf(_T("%s"),GetString(ids2)); int l = name.Length(); toolBar->AddTool(ToolButtonItem(CTB_PUSHBUTTON,0, 0, 0, 0, 16, 15, l*8, 22, id)); ICustButton *but = toolBar->GetICustButton(id); but->SetHighlightColor(GREEN_WASH); but->SetTooltip(TRUE,GetString(ids1)); but->SetImage(NULL,0,0,0,0,0,0); but->SetText(GetString(ids2)); ReleaseICustButton(but); i = numOps; return TRUE; } } return FALSE; }
void Set(PB2Value& val, ReferenceMaker* owner, ParamID id, int tabIndex, TimeValue t) { if (!owner) return; plStaticEnvLayer* layer = (plStaticEnvLayer*)owner; IParamBlock2 *pb = layer->GetParamBlockByID(plStaticEnvLayer::kBlkBitmap); switch (id) { case plStaticEnvLayer::kBmpFrontBitmap: case plStaticEnvLayer::kBmpBackBitmap: case plStaticEnvLayer::kBmpLeftBitmap: case plStaticEnvLayer::kBmpRightBitmap: case plStaticEnvLayer::kBmpTopBitmap: case plStaticEnvLayer::kBmpBottomBitmap: // Set up the enums so these would match... if (pb->GetMap()) pb->GetMap()->Invalidate( id ); // Update the bitmap saved by the layer //layer->SetBitmap( id, &val.bm->bi ); break; case plStaticEnvLayer::kBmpBaseFilename: if( pb->GetMap() ) { pb->GetMap()->Enable( plStaticEnvLayer::kBmpGenerateFaces, ( val.s == NULL || val.s[ 0 ] == 0 ) ? FALSE : TRUE ); ICustButton *bmSelectBtn = GetICustButton( GetDlgItem( pb->GetMap()->GetHWnd(), IDC_GENERATE_FACES ) ); bmSelectBtn->SetText( _T( "Generate From Node" ) ); ReleaseICustButton( bmSelectBtn ); } break; } }
INT_PTR BerconWoodDlgProc::DlgProc(TimeValue t,IParamMap2 *map,HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { // Lock buttons ICustButton* custButton = GetICustButton(GetDlgItem(hWnd, IDC_LOCK_GRAIN)); custButton->SetText(_T("L")); ReleaseICustButton(custButton); // Wood type HWND hwndMap = GetDlgItem(hWnd, IDC_WOOD_TYPE); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_RADIAL_WOOD)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_PERLIN_WOOD)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_SIMPLEX_WOOD)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_LINEAR_WOOD)); // Set correct dropdown value int curIndex; map->GetParamBlock()->GetValue(wood_type, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_WOOD_TYPE), CB_SETCURSEL, (WPARAM)curIndex, 0); break; } case WM_SHOWWINDOW: { // Set correct dropdown value int curIndex; map->GetParamBlock()->GetValue(wood_type, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_WOOD_TYPE), CB_SETCURSEL, (WPARAM)curIndex, 0); break; } default: return FALSE; } return TRUE; }
BOOL DlgProc(TimeValue t, IParamMap2 *map, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { IParamBlock2 *pb = map->GetParamBlock(); plRTProjDirLight *lite = (plRTProjDirLight *)pb->GetOwner(); PBBitmap *bitmap; plLayerTex *layer = (plLayerTex *)lite->GetProjMap(); ICustButton *bmSelectBtn; switch( msg ) { case WM_COMMAND: if( LOWORD( wParam ) == IDC_PROJ_MAPNAME ) { BOOL selectedNewBitmap = layer->HandleBitmapSelection(); if( selectedNewBitmap ) { bmSelectBtn = GetICustButton( GetDlgItem( hWnd, IDC_PROJ_MAPNAME ) ); bitmap = layer->GetPBBitmap(); bmSelectBtn->SetText( bitmap != nil ? (TCHAR *)bitmap->bi.Filename() : ""); ReleaseICustButton( bmSelectBtn ); } return false; } break; case WM_INITDIALOG: // Set projection map bitmap name bmSelectBtn = GetICustButton( GetDlgItem( hWnd, IDC_PROJ_MAPNAME ) ); if( bmSelectBtn != nil ) { bitmap = ( layer == nil ) ? nil : layer->GetPBBitmap(); if( bitmap != nil ) bmSelectBtn->SetText( (TCHAR *)bitmap->bi.Filename() ); else bmSelectBtn->SetText( _T( "<none>" ) ); ReleaseICustButton( bmSelectBtn ); } break; } return plBaseLightProc::DlgProc( t, map, hWnd, msg, wParam, lParam ); }
void ExitMode() { ICustButton *iBut = GetICustButton( GetDlgItem( fHWnd, IDC_GENERATE_FACES ) ); if( iBut ) { iBut->SetCheck( FALSE ); iBut->SetText( _T( "Generate From Node" ) ); } ReleaseICustButton( iBut ); }
void mrShaderButtonHandler::Update() { DbgAssert(m_dialogHWnd != NULL); HWND ctrlHWnd = GetDlgItem(m_dialogHWnd, m_ctrlID); ICustButton* custButton = GetICustButton(ctrlHWnd); if(custButton != NULL) { MSTR text; Texmap* shader = GetShader(); if(shader != NULL) text = shader->GetFullName(); else text = GetNoneString(); custButton->SetText(text.data()); ReleaseICustButton(custButton); } else { DbgAssert(false); } }
INT_PTR BerconTileDlgProc::DlgProc(TimeValue t,IParamMap2 *map,HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { // Lock buttons ICustButton* custButton = GetICustButton(GetDlgItem(hWnd, IDC_LOCKEDGE)); custButton->SetText(_T("L")); ReleaseICustButton(custButton); custButton = GetICustButton(GetDlgItem(hWnd, IDC_LOCK)); custButton->SetText(_T("L")); ReleaseICustButton(custButton); // Style HWND hwndMap = GetDlgItem(hWnd, IDC_TYPE); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_11)); // Custom SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_10)); // Herringbone SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_9)); // Stack SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_0)); // Stretcher SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_1)); // Flemish Stretcher SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_2)); // Common SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_3)); // Flemish SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_4)); // Monk SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_5)); // Flemish Garden Wall SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_6)); // English SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_7)); // English Cross SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILETYPE_8)); // Double // Soften hwndMap = GetDlgItem(hWnd, IDC_SOFTEN); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILESOFTEN_0)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILESOFTEN_1)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILESOFTEN_2)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILESOFTEN_3)); // UV rotation hwndMap = GetDlgItem(hWnd, IDC_ROTUV); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEROT_0)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEROT_1)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEROT_2)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEROT_3)); // Auto scale hwndMap = GetDlgItem(hWnd, IDC_AUTO); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEUVW_0)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEUVW_1)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEUVW_2)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEUVW_3)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEUVW_4)); SendMessage(hwndMap, CB_ADDSTRING, 0, (LPARAM)GetString(IDS_TILEUVW_5)); // Set correct dropdown value int curIndex; map->GetParamBlock()->GetValue(tile_style, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_TYPE), CB_SETCURSEL, (WPARAM)curIndex, 0); map->GetParamBlock()->GetValue(soften, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_SOFTEN), CB_SETCURSEL, (WPARAM)curIndex, 0); map->GetParamBlock()->GetValue(pb_rotUV, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_ROTUV), CB_SETCURSEL, (WPARAM)curIndex, 0); map->GetParamBlock()->GetValue(pb_auto, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_AUTO), CB_SETCURSEL, (WPARAM)curIndex, 0); break; } case WM_SHOWWINDOW: { // Set correct dropdown value int curIndex; map->GetParamBlock()->GetValue(tile_style, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_TYPE), CB_SETCURSEL, (WPARAM)curIndex, 0); map->GetParamBlock()->GetValue(soften, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_SOFTEN), CB_SETCURSEL, (WPARAM)curIndex, 0); map->GetParamBlock()->GetValue(pb_rotUV, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_ROTUV), CB_SETCURSEL, (WPARAM)curIndex, 0); map->GetParamBlock()->GetValue(pb_auto, t, curIndex, FOREVER); SendMessage(GetDlgItem(hWnd, IDC_AUTO), CB_SETCURSEL, (WPARAM)curIndex, 0); break; } default: return FALSE; } return TRUE; }
unsigned __stdcall CallRelaxThread(void *data) { MaxSDK::Util::UseLanguagePackLocale(); RelaxThreadData *threadData = (RelaxThreadData *) data; threadData->mLocalData.SetCount( threadData->mod->GetMeshTopoDataCount()); for (int i = 0; i < threadData->mod->GetMeshTopoDataCount(); i++) threadData->mLocalData[i] = threadData->mod->GetMeshTopoData(i); threadData->mStarted = TRUE; DisableAccelerators(); BOOL rigSelected = FALSE; MeshTopoData *peltLD = threadData->mod->peltData.mBaseMeshTopoDataCurrent; if (threadData->mod->peltData.peltDialog.hWnd) { if (peltLD) { for (int i = 0; i < threadData->mod->peltData.rigPoints.Count(); i++) { int index = threadData->mod->peltData.rigPoints[i].lookupIndex; if (peltLD->GetTVVertSelected(index)) rigSelected = TRUE; } } } GetCOREInterface()->DisableSceneRedraw(); //if we are not instanced we can just start up unwrap relax and go if ((threadData->mod->GetMeshTopoDataCount() == 1) && !rigSelected) { if (threadData->mType == 0) threadData->mod->fnRelaxByFaceAngle(threadData->mIterations,threadData->mStretch,threadData->mAmount,threadData->mBoundary,NULL); else if (threadData->mType == 1) threadData->mod->fnRelaxByEdgeAngle(threadData->mIterations,threadData->mStretch,threadData->mAmount,threadData->mBoundary,NULL); else if (threadData->mType == 2) threadData->mod->RelaxVerts2(threadData->mAmount,threadData->mIterations,threadData->mBoundary,threadData->mCorner,FALSE); } //if we have multiple instance it gets more complicated //since only the first relax instance will ever run else { BOOL done = FALSE; threadData->mIterations = 5; for (int ldID = 0; ldID < threadData->mLocalData.Count(); ldID++) { threadData->mLocalData[ldID]->SetUserCancel(FALSE); } while(!done) { for (int ldID = 0; ldID < threadData->mLocalData.Count(); ldID++) { if (threadData->mLocalData[ldID]->GetUserCancel()) done = TRUE; } if (threadData->mType == 0) threadData->mod->fnRelaxByFaceAngle(threadData->mIterations,threadData->mStretch,threadData->mAmount,threadData->mBoundary,NULL); else if (threadData->mType == 1) threadData->mod->fnRelaxByEdgeAngle(threadData->mIterations,threadData->mStretch,threadData->mAmount,threadData->mBoundary,NULL); else if (threadData->mType == 2) threadData->mod->RelaxVerts2(threadData->mAmount,threadData->mIterations,threadData->mBoundary,threadData->mCorner,FALSE); if (rigSelected) threadData->mod->peltData.RelaxRig(threadData->mIterations,threadData->mAmount,threadData->mBoundary,threadData->mod); } } for (int ldID = 0; ldID < threadData->mod->GetMeshTopoDataCount(); ldID++) { threadData->mod->GetMeshTopoData(ldID)->SetUserCancel(FALSE); } GetCOREInterface()->EnableSceneRedraw(); EnableAccelerators(); threadData->mStarted = FALSE; ICustButton *iButton = GetICustButton(GetDlgItem(threadData->mod->relaxHWND, IDC_RUN_BUTTON)); if (iButton) { if (iButton->IsChecked()) { iButton->SetText(GetString(IDS_SPLINEMAP_STARTRELAX)); iButton->SetCheck(FALSE); } ReleaseICustButton(iButton); } _endthreadex(0); return 0; }
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); } } }