Показать сообщение отдельно
Старый Добавлено: 22.01.2016, 19:14
  (#72)
Akltaf
Старожил
Пользователь
 
Аватар для Akltaf

По умолчанию

Спасибо большое. Вы прибедняетесь, я все же надеюсь постепенно одолеем.
Для начало, на счет функции, я думаю тут:
INT_PTR VDDialogAudioVolumeW32::DlgProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
HWND hwndSlider = GetDlgItem(mhdlg, IDC_SLIDER_VOLUME);

SendMessage(hwndSlider, TBM_SETRANGE, TRUE, MAKELONG(0, 600));
SendMessage(hwndSlider, TBM_SETTICFREQ, 10, 0);

if (mOpts.audio.mVolume >= 0) {
CheckDlgButton(mhdlg, IDC_ADJUSTVOL, BST_CHECKED);

SendMessage(hwndSlider, TBM_SETPOS, TRUE, FactorToSliderPosition(mOpts.audio.mVolume));
} else {
SendMessage(hwndSlider, TBM_SETPOS, TRUE, 300);
EnableWindow(hwndSlider, FALSE);
EnableWindow(GetDlgItem(mhdlg, IDC_STATIC_VOLUME), FALSE);
}
UpdateVolumeText();
}
return (TRUE);

case WM_HELP:
{
HELPINFO *lphi = (HELPINFO *)lParam;

if (lphi->iContextType == HELPINFO_WINDOW)
VDShowHelp(mhdlg, L"d-audiovolume.html");
}
return TRUE;

case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
if (IsDlgButtonChecked(mhdlg, IDC_ADJUSTVOL)) {
int pos = SendDlgItemMessage(mhdlg, IDC_SLIDER_VOLUME, TBM_GETPOS, 0, 0);

mOpts.audio.mVolume = SliderPositionToFactor(pos);
} else
mOpts.audio.mVolume = -1.0f;

End(true);
return TRUE;
case IDCANCEL:
End(false);
return TRUE;

case IDC_ADJUSTVOL:
if (HIWORD(wParam)==BN_CLICKED)
UpdateEnables();
return TRUE;
}
break;

case WM_HSCROLL:
if (lParam)
UpdateVolumeText();
break;
}
return FALSE;
}

float VDDialogAudioVolumeW32::SliderPositionToFactor(int pos) {
return expf((float)(pos - 300) * (0.005f*nsVDMath::kfLn10));
}

int VDDialogAudioVolumeW32::FactorToSliderPosition(float factor) {
return VDRoundToInt((200.0f*nsVDMath::kfOneOverLn10)*logf(mOpts.audio.mVolume)) + 300;
}

void VDDialogAudioVolumeW32::UpdateVolumeText() {
char buf[64];
int pos = SendDlgItemMessage(mhdlg, IDC_SLIDER_VOLUME, TBM_GETPOS, 0, 0);

float factor = SliderPositionToFactor(pos);
sprintf(buf, "%+.1fdB (%.1f%%)", (float)(pos - 300) * 0.1f, 100.0f*factor);
SetDlgItemText(mhdlg, IDC_STATIC_VOLUME, buf);
}

void VDDialogAudioVolumeW32::UpdateEnables() {
BOOL f = !!IsDlgButtonChecked(mhdlg, IDC_ADJUSTVOL);

EnableWindow(GetDlgItem(mhdlg, IDC_SLIDER_VOLUME), f);
EnableWindow(GetDlgItem(mhdlg, IDC_STATIC_VOLUME), f);
}

bool VDDisplayAudioVolumeDialog(VDGUIHandle hParent, DubOptions& opts) {
VDDialogAudioVolumeW32 dlg(opts);

return dlg.Activate(hParent);
}
------------------------
в файле optdlg.cpp и конечно наверняка будут еще ряд файлов. Я надеюсь, по мере попытки сборки, а после во время попыток запустить, они себя и/или других покажут.

Добавлено через 7 минут
Можно наверно пытаться как то пошагово что ли? Если пристроить удастся ориентировочно в той области, уже легче будет. Путем проб и .. я наверно смогу двигать, переориентировать и расположить куда нужно. Потом искать где-чего откопать, задействовать. Все же это уже готовое переделать, а не на пустом месте изобретать.
Akltaf вне форума Отправить личное сообщение для Akltaf
Вверх
Ответить с цитированием
 
Время генерации страницы 0.04682 секунды с 13 запросами