void E_HandleCommand(HWND dialog, WORD id, WORD code, HWND control) { /* Most of them use this */ class EditEffect *data = (EditEffect*)GetWindowLongPtr(dialog, DWLP_USER); switch (code) { case BN_CLICKED: switch (id) { case IDC_E_AREA_ALL: { SetDlgItemInt(dialog, IDC_E_AREAX1, -1, TRUE); SetDlgItemInt(dialog, IDC_E_AREAY1, -1, TRUE); SetDlgItemInt(dialog, IDC_E_AREAX2, -1, TRUE); SetDlgItemInt(dialog, IDC_E_AREAY2, -1, TRUE); } break; case IDC_E_CLEAR: { data->e = Effect(); LoadEffect(dialog, data); } break; case IDOK: { bool valid; int ret = IDOK; SaveEffect(dialog, data); valid = data->e.check(); if (!valid) ret = MessageBox(dialog, warnInvalidE, "Effect Editor", MB_OKCANCEL); if (ret == IDOK) { SendMessage(data->parent, EC_Closing, MAKELONG(1, valid), reinterpret_cast<LPARAM>(data)); DestroyWindow(dialog); } } break; case IDCANCEL: SendMessage(data->parent, EC_Closing, 0, reinterpret_cast<LPARAM>(data)); DestroyWindow(dialog); break; case IDC_E_OPENSEL: OnOpenSel(dialog, data); break; case IDC_E_OPENSEL2: if (SingleUnitSelDialogBox(dialog, data->players, data->e.uid_loc, (data->e.uid_loc != -1))) { SetDlgItemInt(dialog, IDC_E_LOCUID, data->e.uid_loc, FALSE); } break; } break; case CBN_SELCHANGE: switch (id) { case IDC_E_TYPE: E_HandleChangeType(dialog, data); break; case IDC_E_VTYPE: E_HandleChangeVType(dialog, data); break; case IDC_E_RESTYPE: if (SendMessage(control, CB_GETCURSEL, 0, 0) >= NUM_STYPES && setts.warnbits & WARN_WEIRDRESOURCE) MessageBox(dialog, warnWeirdResource, "Warning", MB_ICONWARNING); break; case IDC_E_TRIG: SetDlgItemInt(dialog, IDC_E_TRIGID, data->e.trig_index, TRUE); break; } break; case EN_SETFOCUS: E_HandleSetFocus(dialog, id); break; case EN_KILLFOCUS: E_HandleKillFocus(dialog, id); break; } }
void CPaletteManager::SaveEffectAndReset (void) { SaveEffect (); ResetEffect (); LoadEffect (); }