[PATCH 2/2] msacm32: Implement ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT.
Zebediah Figura
z.figura12 at gmail.com
Thu Jun 22 18:02:41 CDT 2017
From: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
dlls/msacm32/format.c | 38 ++++++++++++++++++++++++++------------
1 file changed, 26 insertions(+), 12 deletions(-)
diff --git a/dlls/msacm32/format.c b/dlls/msacm32/format.c
index 24d6ea5f60a..a862757f858 100644
--- a/dlls/msacm32/format.c
+++ b/dlls/msacm32/format.c
@@ -62,8 +62,13 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
if (SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
CB_FINDSTRINGEXACT, -1,
(LPARAM)paftd->szFormatTag) == CB_ERR)
- SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
+ {
+ int index = SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
CB_ADDSTRING, 0, (LPARAM)paftd->szFormatTag);
+ if (paftd->dwFormatTag == affd->afc->pwfx->wFormatTag)
+ SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
+ CB_SETCURSEL, index, 0);
+ }
}
break;
case WINE_ACMFF_FORMAT:
@@ -87,7 +92,7 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
for (i = 0; i < paftd->cStandardFormats; i++) {
static const WCHAR fmtW[] = {'%','d',' ','K','o','/','s','\0'};
- int j;
+ int j, index;
afd.dwFormatIndex = i;
afd.fdwSupport = 0;
@@ -99,14 +104,16 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
buffer[j] = ' ';
wsprintfW(buffer + ACMFORMATTAGDETAILS_FORMATTAG_CHARS,
fmtW, (afd.pwfx->nAvgBytesPerSec + 512) / 1024);
- SendDlgItemMessageW(affd->hWnd,
+ index = SendDlgItemMessageW(affd->hWnd,
IDD_ACMFORMATCHOOSE_CMB_FORMAT,
CB_ADDSTRING, 0, (LPARAM)buffer);
+ if ((affd->afc->fdwStyle & ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT) &&
+ !memcmp(afd.pwfx, affd->afc->pwfx, paftd->cbFormatSize))
+ SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT,
+ CB_SETCURSEL, index, 0);
}
}
acmDriverClose(had, 0);
- SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT,
- CB_SETCURSEL, 0, 0);
HeapFree(MSACM_hHeap, 0, afd.pwfx);
}
}
@@ -138,7 +145,7 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
return TRUE;
}
-static BOOL MSACM_FillFormatTags(HWND hWnd)
+static BOOL MSACM_FillFormatTags(HWND hWnd, PACMFORMATCHOOSEW afc)
{
ACMFORMATTAGDETAILSW aftd;
struct MSACM_FillFormatData affd;
@@ -148,13 +155,15 @@ static BOOL MSACM_FillFormatTags(HWND hWnd)
affd.hWnd = hWnd;
affd.mode = WINE_ACMFF_TAG;
+ affd.afc = afc;
acmFormatTagEnumW(NULL, &aftd, MSACM_FillFormatTagsCB, (DWORD_PTR)&affd, 0);
- SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, CB_SETCURSEL, 0, 0);
+ if (SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, CB_GETCURSEL, 0, 0) == CB_ERR)
+ SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, CB_SETCURSEL, 0, 0);
return TRUE;
}
-static BOOL MSACM_FillFormat(HWND hWnd)
+static BOOL MSACM_FillFormat(HWND hWnd, PACMFORMATCHOOSEW afc)
{
ACMFORMATTAGDETAILSW aftd;
struct MSACM_FillFormatData affd;
@@ -166,6 +175,7 @@ static BOOL MSACM_FillFormat(HWND hWnd)
affd.hWnd = hWnd;
affd.mode = WINE_ACMFF_FORMAT;
+ affd.afc = afc;
SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
CB_GETLBTEXT,
SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
@@ -173,7 +183,8 @@ static BOOL MSACM_FillFormat(HWND hWnd)
(LPARAM)affd.szFormatTag);
acmFormatTagEnumW(NULL, &aftd, MSACM_FillFormatTagsCB, (DWORD_PTR)&affd, 0);
- SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT, CB_SETCURSEL, 0, 0);
+ if (SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT, CB_GETCURSEL, 0, 0) == CB_ERR)
+ SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT, CB_SETCURSEL, 0, 0);
return TRUE;
}
@@ -212,10 +223,13 @@ static INT_PTR CALLBACK FormatChooseDlgProc(HWND hWnd, UINT msg,
case WM_INITDIALOG:
afc = (PACMFORMATCHOOSEW)lParam;
SetPropW(hWnd, fmt_prop, (HANDLE)afc);
- MSACM_FillFormatTags(hWnd);
- MSACM_FillFormat(hWnd);
+ if (!(afc->fdwStyle & ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT))
+ afc->pwfx->wFormatTag = WAVE_FORMAT_PCM;
+ MSACM_FillFormatTags(hWnd, afc);
+ MSACM_FillFormat(hWnd, afc);
if ((afc->fdwStyle & ~(ACMFORMATCHOOSE_STYLEF_CONTEXTHELP|
ACMFORMATCHOOSE_STYLEF_SHOWHELP|
+ ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT|
ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE|
ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE)) != 0)
FIXME("Unsupported style %08x\n", afc->fdwStyle);
@@ -234,7 +248,7 @@ static INT_PTR CALLBACK FormatChooseDlgProc(HWND hWnd, UINT msg,
case IDD_ACMFORMATCHOOSE_CMB_FORMATTAG:
switch (HIWORD(wParam)) {
case CBN_SELCHANGE:
- MSACM_FillFormat(hWnd);
+ MSACM_FillFormat(hWnd, afc);
break;
default:
TRACE("Dropped dlgNotif (fmtTag): 0x%08x 0x%08lx\n",
--
2.13.1
More information about the wine-patches
mailing list