void COptionsDirectoriesPage::UseSelectedClicked(UINT /*Code*/, int id, HWND /*ctl*/)
{
	CModifiedButton * Button = NULL;
	switch (id)
	{
	case IDC_PLUGIN_DEFAULT: Button = &m_PluginDefault; break;
	case IDC_PLUGIN_OTHER: Button = &m_PluginDefault; break;
	case IDC_AUTO_DEFAULT: Button = &m_AutoSaveDefault; break;
	case IDC_AUTO_OTHER: Button = &m_AutoSaveDefault; break;
	case IDC_INSTANT_DEFAULT: Button = &m_InstantDefault; break;
	case IDC_INSTANT_OTHER: Button = &m_InstantDefault; break;
	case IDC_SNAP_DEFAULT: Button = &m_ScreenShotDefault; break;
	case IDC_SNAP_OTHER: Button = &m_ScreenShotDefault; break;
	case IDC_TEXTURE_DEFAULT: Button = &m_TextureDefault; break;
	case IDC_TEXTURE_OTHER: Button = &m_TextureDefault; break;
	}

	if (Button == NULL)
	{
		return;
	}

	if (!Button->IsChanged() || Button->IsReset())
	{
		if ((int)Button->GetMenu() == id)
		{
			return;
		}
	}
	Button->SetChanged(true);
	SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
void COptionsDirectoriesPage::SelectDirectory(LanguageStringID Title, CModifiedEditBox & EditBox, CModifiedButton & Default, CModifiedButton & selected)
{
	wchar_t Buffer[MAX_PATH], Directory[MAX_PATH];
	LPITEMIDLIST pidl;
	BROWSEINFOW bi;

	stdstr InitialDir = EditBox.GetWindowText();

	bi.hwndOwner = m_hWnd;
	bi.pidlRoot = NULL;
	bi.pszDisplayName = Buffer;
	bi.lpszTitle = GS(Title);
	bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
	bi.lpfn = (BFFCALLBACK)SelectDirCallBack;
	bi.lParam = (DWORD)InitialDir.c_str();
	if ((pidl = SHBrowseForFolderW(&bi)) != NULL)
	{
		if (SHGetPathFromIDListW(pidl, Directory))
		{
			stdstr path;
			CPath SelectedDir(path.FromUTF16(Directory), "");
			EditBox.SetChanged(true);
			EditBox.SetWindowText(SelectedDir);
			Default.SetChanged(true);
			Default.SetCheck(BST_UNCHECKED);
			selected.SetCheck(BM_SETCHECK);
			SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
		}
	}
}
void COptionPluginPage::HleAudioChanged(UINT /*Code*/, int id, HWND /*ctl*/)
{
    for (ButtonList::iterator iter = m_ButtonList.begin(); iter != m_ButtonList.end(); iter++)
    {
        CModifiedButton * Button = iter->second;
        if ((int)Button->GetMenu() != id)
        {
            continue;
        }
        if ((Button->GetCheck() & BST_CHECKED) != 0)
        {
            int res = MessageBoxW(m_hWnd, wGS(MSG_SET_HLE_AUD_MSG).c_str(), wGS(MSG_SET_HLE_AUD_TITLE).c_str(), MB_ICONWARNING | MB_YESNO);
            if (res != IDYES)
            {
                Button->SetCheck(BST_UNCHECKED);
                return;
            }
        }
        Button->SetChanged(true);
        SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
        break;
    }
}