From: Jacob Czekalla jczekalla@codeweavers.com
--- dlls/comdlg32/tests/printdlg.c | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+)
diff --git a/dlls/comdlg32/tests/printdlg.c b/dlls/comdlg32/tests/printdlg.c index c2be5424695..3a09e2db196 100644 --- a/dlls/comdlg32/tests/printdlg.c +++ b/dlls/comdlg32/tests/printdlg.c @@ -689,6 +689,67 @@ void test_printer_propertiesW(void) GlobalFree(pd.hDevMode); }
+static UINT_PTR CALLBACK printer_properties_hook_procA(HWND hdlg, UINT msg, WPARAM wp, LPARAM lp) +{ + DEVMODEA* dm; + PRINTDLGA* dlg; + + if (msg == WM_INITDIALOG) + { + dlg = (PRINTDLGA*)lp; + dm = GlobalLock(dlg->hDevMode); + todo_wine + ok(dm->dmDuplex != 123, "dmDuplex should not equal 123 in the hook.\n"); + todo_wine + ok(dm->dmPaperSize != 321, "dmPaperSize should not equal 321 in the hook.\n"); + GlobalUnlock(dlg->hDevMode); + PostMessageW(hdlg, WM_COMMAND, psh2, lp); + } + if (msg == WM_COMMAND && wp == psh2) + { + dlg = (PRINTDLGA*)lp; + dm = GlobalLock(dlg->hDevMode); + dm->dmDuplex = 999; + dm->dmPaperSize = 888; + GlobalUnlock(dlg->hDevMode); + PostMessageW(hdlg, WM_COMMAND, IDOK, FALSE); + return TRUE; + } + return 0; +} + +void test_printer_propertiesA(void) +{ + PRINTDLGA pd = { 0 }; + DEVMODEA* dm; + + pd.lStructSize = sizeof(pd); + pd.Flags = PD_ENABLEPRINTHOOK; + pd.lpfnPrintHook = printer_properties_hook_procA; + + pd.hDevMode = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(DEVMODEA)); + dm = GlobalLock(pd.hDevMode); + dm->dmSize = sizeof(*dm); + dm->dmFields |= DM_DUPLEX | DM_PAPERSIZE; + dm->dmDuplex = 123; + dm->dmPaperSize = 321; + GlobalUnlock(pd.hDevMode); + + if(!PrintDlgA(&pd)) + { + skip("No default printer available.\n"); + GlobalFree(pd.hDevMode); + return; + } + dm = GlobalLock(pd.hDevMode); + todo_wine + ok(dm->dmDuplex == 999, "expected 999, but got %d.\n", dm->dmDuplex); + todo_wine + ok(dm->dmPaperSize == 888, "expected 888, but got %d.\n", dm->dmPaperSize); + GlobalUnlock(pd.hDevMode); + GlobalFree(pd.hDevMode); +} + /* ########################### */
START_TEST(printdlg) @@ -701,4 +762,5 @@ START_TEST(printdlg) test_PrintDlgExW(); test_abort_proc(); test_printer_propertiesW(); + test_printer_propertiesA(); }