50#define UPDOWN_ID 0x270f
51#define MAX_COPIES 9999
311 if (!dmW)
return NULL;
316 if (!dmA)
return NULL;
387 for(
i = 0;
i <
num;
i++) {
399 WARN(
"Can't find %s in printer list so trying to find default\n",
405 FIXME(
"Can't find default printer in printer list\n");
421 for(
i = 0;
i <
num;
i++) {
432 WARN(
"Can't find %s in printer list so trying to find default\n",
438 TRACE(
"Can't find default printer in printer list\n");
445static const CHAR cDriverName[] =
"winspool";
446static const WCHAR wDriverName[] =
L"winspool";
458 const char*
DeviceName,
const char* OutputPort)
461 char* pDevNamesSpace;
468 p =
strrchr( DeviceDriverName,
'\\' );
469 if (
p) DeviceDriverName =
p + 1;
489 pTempPtr = pDevNamesSpace +
sizeof(
DEVNAMES);
491 strcpy(pTempPtr, DeviceDriverName);
493 strcpy(pTempPtr, cDriverName);
497 pTempPtr +=
strlen(DeviceDriverName) + 1;
502 strcpy(pTempPtr, OutputPort);
522 p =
wcsrchr( DeviceDriverName,
'\\' );
523 if (
p) DeviceDriverName =
p + 1;
545 lstrcpyW(pTempPtr, DeviceDriverName);
551 pTempPtr +=
lstrlenW(DeviceDriverName) + 1;
584 FIXME(
"No lpdm ptr?\n");
601 if(!translated) nToPage = nFromPage;
603 if (nFromPage < lppd->nMinPage || nFromPage > lppd->
nMaxPage ||
604 nToPage < lppd->nMinPage || nToPage > lppd->
nMaxPage) {
605 WCHAR resourcestr[256];
606 WCHAR resultstr[256];
618 lppd->
Flags &= ~PD_PAGENUMS;
623 lppd->
Flags &= ~PD_SELECTION;
626 static char file[] =
"FILE:";
632 FIXME(
"Collate lppd not yet implemented as output\n");
639 lppd->
Flags &= ~PD_COLLATE;
654 lppd->
Flags &= ~PD_COLLATE;
687 FIXME(
"No lpdm ptr?\n");
704 if(!translated) nToPage = nFromPage;
706 if (nFromPage < lppd->nMinPage || nFromPage > lppd->
nMaxPage ||
707 nToPage < lppd->nMinPage || nToPage > lppd->
nMaxPage) {
708 WCHAR resourcestr[256];
709 WCHAR resultstr[256];
728 lppd->
Flags &= ~PD_PAGENUMS;
733 lppd->
Flags &= ~PD_SELECTION;
742 FIXME(
"Collate lppd not yet implemented as output\n");
749 lppd->
Flags &= ~PD_COLLATE;
763 lppd->
Flags &= ~PD_COLLATE;
788 WORD oldWord = 0, newWord = 0;
790 int fwCapability_Names;
791 int fwCapability_Words;
793 TRACE(
" Printer: %s, Port: %s, ComboID: %d\n",PrinterName,
PortName,nIDComboBox);
812 if (nIDComboBox ==
cmb2) {
824 fwCapability_Names,
NULL, dm);
825 if (NrOfEntries == 0)
826 WARN(
"no Name Entries found!\n");
827 else if (NrOfEntries < 0)
832 ERR(
"Number of caps is different\n");
836 Names =
malloc(NrOfEntries *
sizeof(
char) * NamesSize);
840 fwCapability_Words, (
LPSTR)Words, dm);
846 for (
i = 0;
i < NrOfEntries;
i++) {
856 old_Sel = NrOfEntries;
857 for (
i = 0;
i < NrOfEntries;
i++) {
867 if(old_Sel < NrOfEntries)
871 if(nIDComboBox ==
cmb2)
888 const WCHAR* PrinterName,
897 WORD oldWord = 0, newWord = 0;
899 int fwCapability_Names;
900 int fwCapability_Words;
922 if (nIDComboBox ==
cmb2) {
934 fwCapability_Names,
NULL, dm);
935 if (NrOfEntries == 0)
936 WARN(
"no Name Entries found!\n");
937 else if (NrOfEntries < 0)
942 ERR(
"Number of caps is different\n");
950 fwCapability_Words, Words, dm);
956 for (
i = 0;
i < NrOfEntries;
i++) {
966 old_Sel = NrOfEntries;
967 for (
i = 0;
i < NrOfEntries;
i++) {
977 if(old_Sel < NrOfEntries)
981 if(nIDComboBox ==
cmb2)
1002 char StatusMsg[256];
1003 char ResourceString[256];
1004 char printer_name[256];
1011 for (
i = 0;
i < 25;
i++) {
1012 if (
pi->Status & (1<<
i)) {
1014 ResourceString, 255);
1015 strcat(StatusMsg,ResourceString);
1022 ResourceString, 255);
1023 strcat(StatusMsg,ResourceString);
1040 if (
pi->pLocation !=
NULL &&
pi->pLocation[0] !=
'\0')
1050 WCHAR StatusMsg[256];
1051 WCHAR ResourceString[256];
1052 WCHAR printer_name[256];
1059 for (
i = 0;
i < 25;
i++) {
1060 if (
pi->Status & (1<<
i)) {
1062 ResourceString, 255);
1063 lstrcatW(StatusMsg,ResourceString);
1070 ResourceString, 255);
1071 lstrcatW(StatusMsg,ResourceString);
1087 if (
pi->pLocation !=
NULL &&
pi->pLocation[0] !=
'\0')
1111 ERR(
"Can't open printer %s\n",
name);
1205 if(copies == 0) copies = 1;
1232 if(numResolutions != -1)
1243 Resolutions =
malloc(numResolutions *
sizeof(
LONG) * 2);
1253 for(
i = 0;
i < (numResolutions * 2);
i += 2)
1258 if(Resolutions[
i] == Resolutions[
i+1])
1260 if(dpiX == Resolutions[
i])
1265 if(dpiX == Resolutions[
i] && dpiY == Resolutions[
i+1])
1267 sprintf(
buf,
"%ld dpi x %ld dpi", Resolutions[
i], Resolutions[
i+1]);
1412 if(copies == 0) copies = 1;
1439 if (num_resolutions != -1)
1450 resolutions =
malloc(num_resolutions *
sizeof(
LONG) * 2);
1460 for (
i = 0;
i < (num_resolutions * 2);
i += 2)
1465 if (resolutions[
i] == resolutions[
i+1])
1467 if (dpiX == resolutions[
i])
1472 if (dpiX == resolutions[
i] && dpiY == resolutions[
i+1])
1474 swprintf(
buf,
sizeof(
buf),
L"%ld dpi x %ld dpi", resolutions[
i], resolutions[
i+1]);
1519 WCHAR resourcestr[256],resultstr[256];
1571 ERR(
"no icon in resource file\n");
1643 FIXME(
"No default printer found, expect problems!\n");
1679 ERR(
"no icon in resource file\n");
1752 FIXME(
"No default printer found, expect problems!\n");
1769 TRACE(
" OK button was hit\n");
1771 FIXME(
"Update printdlg was not successful!\n");
1778 TRACE(
" CANCEL button was hit\n");
1783 TRACE(
" HELP button was hit\n");
1803 if (nFromPage != lppd->nFromPage || nToPage != lppd->nToPage)
1822 char PrinterName[256];
1826 FIXME(
" Call to OpenPrinter did not succeed!\n");
1926 TRACE(
" OK button was hit\n");
1928 FIXME(
"Update printdlg was not successful!\n");
1935 TRACE(
" CANCEL button was hit\n");
1940 TRACE(
" HELP button was hit\n");
1960 if (nFromPage != lppd->nFromPage || nToPage != lppd->nToPage)
1979 WCHAR PrinterName[256];
1983 FIXME(
" Call to OpenPrinter did not succeed!\n");
2086 if (!PrintStructures)
2135 if (!PrintStructures)
2323 char flagstr[1000] =
"";
2325 for( ; pflag->
name; pflag++) {
2329 TRACE(
"(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
2330 "pp. %d-%d, min p %d, max p %d, copies %d, hinst %p\n"
2331 "flags %08lx (%s)\n",
2338 WARN(
"structure size failure!!!\n");
2350 WARN(
"hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
2355 WARN(
"Can't find default printer\n");
2367 ERR(
"GetPrinterDriverA failed, le %ld, fix your config for printer %s!\n",
2381 pbuf->pDevMode->dmDriverExtra);
2384 pbuf->pDevMode->dmDriverExtra);
2417 (
LPARAM)PrintStructures));
2425 TRACE(
" No hDevMode yet... Need to create my own\n");
2446 free(PrintStructures);
2451 TRACE(
"exit! (%d)\n", bRet);
2473 char flagstr[1000] =
"";
2475 for( ; pflag->
name; pflag++) {
2479 TRACE(
"(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
2480 "pp. %d-%d, min p %d, max p %d, copies %d, hinst %p\n"
2481 "flags %08lx (%s)\n",
2488 WARN(
"structure size failure!!!\n");
2500 WARN(
"hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
2505 WARN(
"Can't find default printer\n");
2517 ERR(
"GetPrinterDriverA failed, le %ld, fix your config for printer %s!\n",
2531 pbuf->pDevMode->dmDriverExtra);
2534 pbuf->pDevMode->dmDriverExtra);
2567 (
LPARAM)PrintStructures));
2575 TRACE(
" No hDevMode yet... Need to create my own\n");
2581 WARN(
"hDevMode has %d locks on it. Unlocking it now\n", locks);
2584 TRACE(
"Now got %d locks\n", locks);
2597 WARN(
"hDevNames has %d locks on it. Unlocking it now\n", locks);
2612 free(PrintStructures);
2617 TRACE(
"exit! (%d)\n", bRet);
2650 return data->u.dlgw->Flags;
2663 return 10 *
size * 100 / 254;
2669 return size * 254 / 100;
2835 ERR(
"Shouldn't be here\n");
2895 len += drv_len + dev_len + port_len;
2897 if(
data->u.dlgw->hDevNames)
2921 char *
ptr = (
char *)(dn + 1);
2986 if(
data->u.dlgw->hDevMode)
3000 return &
data->u.dlgw->ptPaperSize;
3005 return &
data->u.dlgw->rtMargin;
3041 LPWSTR devname, portname;
3063 FIXME(
"Number of returned words is not %d\n",
num);
3069 FIXME(
"Number of returned sizes is not %d\n",
num);
3075 for (
i = 0;
i <
num;
i++)
3076 if (words[
i] == paperword)
3081 FIXME(
"Papersize %d not found in list?\n", paperword);
3126 prn_info =
malloc(needed);
3129 drv_info =
malloc(needed);
3168 LPWSTR devname, portname;
3194 LPWSTR drvname, devname, portname;
3197 memset(&prnt, 0,
sizeof(prnt));
3246 const int shadow = 4;
3258 x = (
data->rtDrawRect.right +
data->rtDrawRect.left -
width) / 2;
3260 TRACE(
"draw rect %s x=%ld, y=%ld, w=%ld, h=%ld\n",
3267 tmp =
data->rtDrawRect;
3268 tmp.
right += shadow;
3292 if(
id == 0 ||
id ==
idx)
3327 val += (*
end -
'0') * mult;
3378 FIXME(
"Call to OpenPrinter did not succeed!\n");
3428 TRACE(
"loword (lparam) %d, wparam 0x%Ix, lparam %08Ix\n",
3479 FIXME(
"could not get dialog text for papersize cmbbox?\n");
3516 HFONT
hfont, holdfont;
3566 FIXME(
"envelope/stamp is not implemented\n");
3569 FIXME(
"Unknown message %x\n",uMsg);
3611 RECT rcClient, rcMargin;
3614 HBRUSH
hbrush, holdbrush;
3616 int papersize=0, orientation=0;
3617 double scalx, scaly;
3625 WARN(
"__WINE_PAGESETUPDLGDATA prop not set?\n");
3637 rcMargin = rcClient;
3687 rcMargin.left =
min(rcMargin.left, rcMargin.right);
3688 rcMargin.top =
min(rcMargin.top, rcMargin.bottom);
3758 FIXME(
"Setup page hook failed?\n");
3813 WARN(
"__WINE_PAGESETUPDLGDATA prop not set?\n");
3847 char flagstr[1000] =
"";
3849 for( ; pflag->
name; pflag++)
3857 TRACE(
"%s: (%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
3858 "hinst %p, flags %08lx (%s)\n",
3859 data->unicode ?
"unicode" :
"ansi",
3860 data->u.dlgw,
data->u.dlgw->hwndOwner,
data->u.dlgw->hDevMode,
3861 data->u.dlgw->hDevNames,
data->u.dlgw->hInstance,
3873 tmpl_handle =
data->u.dlgw->hPageSetupTemplate;
3924 if (!
data->u.dlgw->hDevMode || !
data->u.dlgw->hDevNames)
3951 data->u.dlgw->hwndOwner,
3980 data.u.dlga = setupdlg;
3995 data.u.dlgw = setupdlg;
4006 pdlg->
hDC = pdlgex->hDC;
4007 pdlg->
Flags = pdlgex->Flags;
4008 if ((pdlgex->Flags &
PD_NOPAGENUMS) || !pdlgex->nPageRanges || !pdlgex->lpPageRanges)
4015 pdlg->
nFromPage = pdlgex->lpPageRanges[0].nFromPage;
4016 pdlg->
nToPage = pdlgex->lpPageRanges[0].nToPage;
4020 pdlg->
nCopies = pdlgex->nCopies;
4036 pdlgex->hDC = pdlg->
hDC;
4037 if (!(pdlgex->Flags &
PD_NOPAGENUMS) && pdlgex->nPageRanges && pdlgex->lpPageRanges)
4039 pdlgex->lpPageRanges[0].nFromPage = pdlg->
nFromPage;
4040 pdlgex->lpPageRanges[0].nToPage = pdlg->
nToPage;
4044 pdlgex->nCopies = pdlg->
nCopies;
4062 cb->callback->lpVtbl->SelectionChange(
cb->callback);
4063 cb->callback->lpVtbl->InitDone(
cb->callback);
4094 if ((lppd ==
NULL) || (lppd->lStructSize !=
sizeof(PRINTDLGEXA)))
4102 if (!lppd->nPropertyPages)
4105 FIXME(
"custom property sheets (%ld at %p) not supported\n", lppd->nPropertyPages, lppd->lphPropertyPages);
4109 if (!(lppd->Flags &
PD_NOPAGENUMS) && (!lppd->nMaxPageRanges || !lppd->lpPageRanges))
4116 if (lppd->hDevMode || lppd->hDevNames)
4118 WARN(
"hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
4124 WARN(
"Can't find default printer\n");
4144 dm =
pbuf->pDevMode;
4151 FIXME(
"(%p) semi-stub\n", lppd);
4153 if (lppd->lpCallback)
4155 IUnknown_QueryInterface((
IUnknown *)lppd->lpCallback, &IID_IPrintDialogCallback, (
void **)&cb_data.
callback);
4186 if (!lppd->hDevNames)
4190 if (
hr ==
S_OK && lppd->hDevMode) {
4245 if ((lppd ==
NULL) || (lppd->lStructSize !=
sizeof(PRINTDLGEXW))) {
4255 if (!lppd->nPropertyPages)
4258 FIXME(
"custom property sheets (%ld at %p) not supported\n", lppd->nPropertyPages, lppd->lphPropertyPages);
4262 if (!(lppd->Flags &
PD_NOPAGENUMS) && (!lppd->nMaxPageRanges || !lppd->lpPageRanges))
4269 if (lppd->hDevMode || lppd->hDevNames) {
4270 WARN(
"hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
4275 WARN(
"Can't find default printer\n");
4295 dm =
pbuf->pDevMode;
4302 FIXME(
"(%p) semi-stub\n", lppd);
4304 if (lppd->lpCallback)
4306 IUnknown_QueryInterface((
IUnknown *)lppd->lpCallback, &IID_IPrintDialogCallback, (
void **)&cb_data.
callback);
4334 if (!lppd->hDevNames)
4338 if (
hr ==
S_OK && lppd->hDevMode) {
static UNICODE_STRING PortName
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define PDERR_RETDEFFAILURE
#define CDERR_REGISTERMSGFAIL
#define PDERR_NODEFAULTPRN
#define CDERR_INITIALIZATION
#define CDERR_LOADRESFAILURE
#define PD32_NO_DEFAULT_PRINTER
#define PD32_MARGINS_IN_MILLIMETERS
#define PD32_PRINTER_STATUS_PAUSED
#define PD32_INVALID_PAGE_RANGE
void COMDLG32_SetCommDlgExtendedError(DWORD err)
HINSTANCE COMDLG32_hInstance
#define PD32_PRINTER_STATUS_READY
#define PD32_MARGINS_IN_INCHES
HWND WINAPI CreateUpDownControl(DWORD style, INT x, INT y, INT cx, INT cy, HWND parent, INT id, HINSTANCE inst, HWND buddy, INT maxVal, INT minVal, INT curVal)
#define PSD_ENABLEPAGESETUPHOOK
#define PD_NONETWORKBUTTON
struct tagDEVNAMES * LPDEVNAMES
#define PSD_ENABLEPAGESETUPTEMPLATE
#define PD_ENABLEPRINTTEMPLATEHANDLE
#define PSD_DISABLEORIENTATION
#define PD_ENABLESETUPTEMPLATE
#define PD_USEDEVMODECOPIESANDCOLLATE
#define PSD_INTHOUSANDTHSOFINCHES
#define START_PAGE_GENERAL
#define WM_PSD_MINMARGINRECT
#define PD_ENABLESETUPTEMPLATEHANDLE
#define PD_USEDEVMODECOPIES
#define PD_ENABLEPRINTHOOK
__CDHOOKPROC LPPAGESETUPHOOK
#define WM_PSD_MARGINRECT
#define PSD_DISABLEPRINTER
#define PSD_DISABLEMARGINS
#define PSD_RETURNDEFAULT
#define WM_PSD_ENVSTAMPRECT
#define PD_ENABLESETUPHOOK
#define PSD_ENABLEPAGEPAINTHOOK
#define PD_DISABLEPRINTTOFILE
#define PSD_DISABLEPAGEPAINTING
#define WM_PSD_PAGESETUPDLG
#define WM_PSD_YAFULLPAGERECT
#define PSD_INHUNDREDTHSOFMILLIMETERS
struct tagDEVNAMES DEVNAMES
#define WM_PSD_FULLPAGERECT
#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE
#define PD_HIDEPRINTTOFILE
#define PD_ENABLEPRINTTEMPLATE
#define WM_PSD_GREEKTEXTRECT
#define ERROR_INSUFFICIENT_BUFFER
static BOOL PRINTDLG_CreateDevNames(HGLOBAL *hmem, const char *DeviceDriverName, const char *DeviceName, const char *OutputPort)
static PRINTER_INFO_2W * get_printer_infoW(HANDLE hprn)
static void pagesetup_dump_dlg_struct(const pagesetup_data *data)
static DEVMODEW * pagesetup_get_devmode(const pagesetup_data *data)
static LPARAM pagesetup_get_dlg_struct(const pagesetup_data *data)
static void set_margin_groupbox_title(HWND hDlg, const pagesetup_data *data)
HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW lppd)
static void * pagesetup_get_template(pagesetup_data *data)
static BOOL PRINTDLG_CreateDCA(LPPRINTDLGA lppd)
static WNDPROC lpfnStaticWndProc
static INT_PTR CALLBACK PrintDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static BOOL PRINTDLG_UpdatePrintDlgA(HWND hDlg, PRINT_PTRA *PrintStructures)
static void swap_point(POINT *pt)
static BOOL is_metric(const pagesetup_data *data)
static WCHAR wszFakeDocumentText[1024]
static void subclass_margin_edits(HWND hDlg)
static void pagesetup_change_preview(const pagesetup_data *data)
static WCHAR * get_default_printer(void)
static LRESULT PRINTDLG_WMCommandW(HWND hDlg, WPARAM wParam, PRINT_PTRW *PrintStructures)
static void rotate_rect(RECT *rc, BOOL sense)
static void pagesetup_init_combos(HWND hDlg, pagesetup_data *data)
static void pdlg_to_pdlgex(const PRINTDLGW *pdlg, PRINTDLGEXW *pdlgex)
static BOOL PRINTDLG_UpdatePrintDlgW(HWND hDlg, PRINT_PTRW *PrintStructures)
static LPPAGESETUPHOOK pagesetup_get_hook(const pagesetup_data *data, hook_type which)
static INT_PTR CALLBACK PrintDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void update_margin_edits(HWND hDlg, const pagesetup_data *data, WORD id)
static void pagesetup_set_devmode(pagesetup_data *data, DEVMODEW *dm)
static LRESULT PRINTDLG_WMInitDialog(HWND hDlg, PRINT_PTRA *PrintStructures)
static void PRINTDLG_UpdatePrinterInfoTextsW(HWND hDlg, DWORD flags, const PRINTER_INFO_2W *pi)
static BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name, PRINT_PTRA *PrintStructures)
static const WCHAR printdlg_prop[]
HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA lppd)
static LONG tenths_mm_to_size(const pagesetup_data *data, LONG size)
static void margin_edit_notification(HWND hDlg, const pagesetup_data *data, WORD msg, WORD id)
static INT PRINTDLG_SetUpPrinterListComboW(HWND hDlg, UINT id, LPCWSTR name)
static BOOL pagesetup_wm_command(HWND hDlg, WPARAM wParam, LPARAM lParam, pagesetup_data *data)
static DRIVER_INFO_3W * get_driver_infoW(HANDLE hprn)
static DEVMODEA * convert_to_devmodeA(const DEVMODEW *dmW)
static const struct pd_flags psd_flags[]
static UINT_PTR default_page_paint_hook(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, const pagesetup_data *data)
static void pagesetup_set_devnames(pagesetup_data *data, LPCWSTR drv, LPCWSTR devname, LPCWSTR port)
static BOOL is_default_metric(void)
static void pagesetup_release_a_devname(const pagesetup_data *data, WCHAR *name)
static UINT_PTR CALLBACK pdlgex_hook_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static BOOL PRINTDLG_CreateDCW(LPPRINTDLGW lppd)
static RECT * pagesetup_get_margin_rect(const pagesetup_data *data)
static WCHAR * pagesetup_get_drvname(const pagesetup_data *data)
static POINT * pagesetup_get_papersize_pt(const pagesetup_data *data)
BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA setupdlg)
static void pagesetup_update_orientation_buttons(HWND hDlg, const pagesetup_data *data)
static BOOL PRINTDLG_ChangePrinterW(HWND hDlg, WCHAR *name, PRINT_PTRW *PrintStructures)
static INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name)
static WCHAR * pagesetup_get_portname(const pagesetup_data *data)
static void pagesetup_release_devmode(const pagesetup_data *data, DEVMODEW *dm)
static DWORD pagesetup_get_flags(const pagesetup_data *data)
static LONG thousandths_inch_to_size(const pagesetup_data *data, LONG size)
static void PRINTDLG_UpdatePrinterInfoTextsA(HWND hDlg, DWORD flags, const PRINTER_INFO_2A *pi)
static const WCHAR pagesetupdlg_prop[]
static WORD pagesetup_get_orientation(const pagesetup_data *data)
static void pagesetup_printer_properties(HWND hDlg, pagesetup_data *data)
BOOL WINAPI PrintDlgW(LPPRINTDLGW lppd)
static WORD get_devname_offset(const DEVNAMES *dn, devnames_name which)
static void pagesetup_set_papersize(pagesetup_data *data, WORD paper)
static HGLOBAL update_devmode_handleA(HGLOBAL hdm, DEVMODEA *dm)
static BOOL pagesetup_change_printer(LPWSTR name, pagesetup_data *data)
BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW setupdlg)
static BOOL pagesetup_update_papersize(pagesetup_data *data)
static BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn)
static BOOL PRINTDLG_SetUpPaperComboBoxW(HWND hDlg, int nIDComboBox, const WCHAR *PrinterName, const WCHAR *PortName, LPDEVMODEW dm)
static void size2str(const pagesetup_data *data, DWORD size, LPWSTR strout)
static LRESULT CALLBACK PRINTDLG_PagePaintProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static BOOL pagesetup_common(pagesetup_data *data)
static void pagesetup_set_defaultsource(pagesetup_data *data, WORD source)
static WNDPROC edit_wndproc
static LONG * element_from_margin_id(RECT *rc, WORD id)
static WCHAR * pagesetup_get_a_devname(const pagesetup_data *data, devnames_name which)
static INT_PTR CALLBACK pagesetup_dlg_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static WORD pagesetup_get_papersize(const pagesetup_data *data)
static LRESULT check_printer_setup(HWND hDlg)
static LRESULT CALLBACK pagesetup_margin_editproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT PRINTDLG_WMInitDialogW(HWND hDlg, PRINT_PTRW *PrintStructures)
static void pagesetup_set_orientation(pagesetup_data *data, WORD orient)
static WCHAR get_decimal_sep(void)
static void pagesetup_change_printer_dialog(HWND hDlg, pagesetup_data *data)
static BOOL PRINTDLG_SetUpPaperComboBoxA(HWND hDlg, int nIDComboBox, char *PrinterName, char *PortName, LPDEVMODEA dm)
static void pdlgex_to_pdlg(const PRINTDLGEXW *pdlgex, PRINTDLGW *pdlg)
static LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam, PRINT_PTRA *PrintStructures)
static HGLOBAL PRINTDLG_GetDlgTemplateA(const PRINTDLGA *lppd)
static PRINTER_INFO_2A * get_printer_infoA(HANDLE hprn)
BOOL WINAPI PrintDlgA(LPPRINTDLGA lppd)
static HGLOBAL update_devmode_handleW(HGLOBAL hdm, DEVMODEW *dm)
static BOOL PRINTDLG_CreateDevNamesW(HGLOBAL *hmem, LPCWSTR DeviceDriverName, LPCWSTR DeviceName, LPCWSTR OutputPort)
static HGLOBAL PRINTDLG_GetDlgTemplateW(const PRINTDLGW *lppd)
static WCHAR * pagesetup_get_devname(const pagesetup_data *data)
static DRIVER_INFO_3A * get_driver_infoA(HANDLE hprn)
#define WideCharToMultiByte
#define MultiByteToWideChar
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
INT WINAPI DECLSPEC_HOTPATCH LoadStringA(HINSTANCE instance, UINT resource_id, LPSTR buffer, INT buflen)
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
_ACRTIMP int __cdecl system(const char *)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
static wchar_t * wcsdup(const wchar_t *str)
_ACRTIMP char *__cdecl strrchr(const char *, int)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei width
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei const GLfloat * points
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
HGLOBAL NTAPI GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags)
UINT NTAPI GlobalFlags(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
#define InterlockedCompareExchangePointer
static ERESOURCE GlobalLock
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
const IID IID_IObjectWithSite
static PROCESS_INFORMATION pi
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
unsigned __int3264 UINT_PTR
#define LOCALE_USER_DEFAULT
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI IsWindow(_In_opt_ HWND)
UINT WINAPI RegisterWindowMessageA(_In_ LPCSTR)
INT_PTR WINAPI DialogBoxIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI CheckDlgButton(_In_ HWND, _In_ int, _In_ UINT)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
#define COLOR_3DHIGHLIGHT
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define CB_FINDSTRINGEXACT
#define SPI_GETICONTITLELOGFONT
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
UINT WINAPI RegisterWindowMessageW(_In_ LPCWSTR)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
BOOL WINAPI SetDlgItemTextA(_In_ HWND, _In_ int, _In_ LPCSTR)
INT_PTR WINAPI DialogBoxIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
_In_ int _Inout_ LPRECT lprc
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
HANDLE WINAPI LoadImageA(_In_opt_ HINSTANCE hInst, _In_ LPCSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendDlgItemMessageA(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI DestroyWindow(_In_ HWND)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI DestroyIcon(_In_ HICON)
LPDRIVER_INFO_3A lpDriverInfo
LPPRINTER_INFO_2A lpPrinterInfo
LPPRINTER_INFO_2W lpPrinterInfo
LPDRIVER_INFO_3W lpDriverInfo
BYTE dmFormName[CCHFORMNAME]
BYTE dmDeviceName[CCHDEVICENAME]
WCHAR dmDeviceName[CCHDEVICENAME]
WCHAR dmFormName[CCHFORMNAME]
IPrintDialogCallback * callback
LPCSTR lpPrintTemplateName
LPPRINTHOOKPROC lpfnPrintHook
LPCSTR lpSetupTemplateName
LPPRINTHOOKPROC lpfnPrintHook
LPSETUPHOOKPROC lpfnSetupHook
LPCWSTR lpPrintTemplateName
LPCWSTR lpSetupTemplateName
#define FIELD_OFFSET(t, f)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
UINT WINAPI GetDlgItemTextA(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount)
const char * errstr(int errcode)
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_FROM_STRING
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define DC_ENUMRESOLUTIONS
#define DMORIENT_LANDSCAPE
DWORD WINAPI DeviceCapabilitiesA(_In_ LPCSTR pDevice, _In_opt_ LPCSTR pPort, _In_ WORD fwCapability, _Out_writes_opt_(_Inexpressible_(1)) LPSTR pOutput, _In_opt_ const DEVMODEA *pDevMode)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HDC WINAPI CreateICA(_In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ const DEVMODEA *)
DWORD WINAPI DeviceCapabilitiesW(_In_ LPCWSTR pDevice, _In_opt_ LPCWSTR pPort, _In_ WORD fwCapability, _Out_writes_opt_(_Inexpressible_(1)) LPWSTR pOutput, _In_opt_ const DEVMODEW *pDevMode)
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
HDC WINAPI CreateICW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ const DEVMODEW *)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HDC WINAPI CreateDCA(_In_opt_ LPCSTR pszDriver, _In_opt_ LPCSTR pszDevice, _In_opt_ LPCSTR pszOutput, _In_opt_ const DEVMODEA *pdmInit)
#define DMORIENT_PORTRAIT
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
BOOL WINAPI DeleteDC(_In_ HDC)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
HDC WINAPI CreateDCW(_In_opt_ LPCWSTR pszDriver, _In_opt_ LPCWSTR pszDevice, _In_opt_ LPCWSTR psz, _In_opt_ const DEVMODEW *pdmInit)
WINBOOL WINAPI OpenPrinterA(LPSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSA pDefault)
#define PRINTER_ENUM_LOCAL
WINBOOL WINAPI GetDefaultPrinterW(LPWSTR pszBuffer, LPDWORD pcchBuffer)
WINBOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded)
WINBOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded)
WINBOOL WINAPI EnumPrintersW(DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
WINBOOL WINAPI GetDefaultPrinterA(LPSTR pszBuffer, LPDWORD pcchBuffer)
WINBOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded)
LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter, LPWSTR pDeviceName, PDEVMODEW pDevModeOutput, PDEVMODEW pDevModeInput, DWORD fMode)
LONG WINAPI DocumentPropertiesA(HWND hWnd, HANDLE hPrinter, LPSTR pDeviceName, PDEVMODEA pDevModeOutput, PDEVMODEA pDevModeInput, DWORD fMode)
WINBOOL WINAPI OpenPrinterW(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSW pDefault)
WINBOOL WINAPI GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded)
WINBOOL WINAPI ClosePrinter(HANDLE hPrinter)
#define PRINTER_ENUM_CONNECTIONS
WINBOOL WINAPI EnumPrintersA(DWORD Flags, LPSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)