A Windows 98 & ME forum. Win98banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Win98banter forum » Windows 98 » Printing
Site Map Home Authors List Search Today's Posts Mark Forums Read Web Partners

PrintDlg function fails



 
 
Thread Tools Display Modes
  #1  
Old July 17th 07, 06:30 AM posted to microsoft.public.win98.printing
guddu
External Usenet User
 
Posts: 6
Default PrintDlg function fails


Hi,
I have a print.C which on compilation results in print.exe.

This exe invokes the Windows Printer Dialog Box when PrintDlg function
is being called.
Before calling PrintDlg function,
pd.hDevMode and pd.hDevNames are set to NULL.

pd.hDevMode = NULL;
pd.hDevNames = NULL;

Other members of PRINTDLG pd structure variable are set as follows

pd.lStructSize = sizeof(PRINTDLG);
pd.hwndOwner = hWnd;
pd.Flags = PD_RETURNDC | PD_RETURNDEFAULT;

I have set the PD_RETURNDEFAULT flag as I dont want to see the Printer
Dialog Box Window.

After setting these values, PrintDlg function is called as
if(!PrintDlg(&pd)) {
fprintf(stderr, "Print Setup was cancelled.\n");
sprintf(debug_log, "\n 244: printSetup was cancelled");
debugmsg(debug_log, __LINE__) ;
fflush(stderr);
ExitProcess(1);
}

When PD_RETURNDEFAULT flag is set, PrintDlg(&pd) function call sets
the pd.hDevMode and pd.hDevNames to Non NULL values( namely handle to
global memory object containing DEVMODE and DEVNAMES structures ) . So
now following check passes

if (pd.hDevNames == NULL) {
fprintf(stderr, "Print Setup failed.\n");
sprintf(debug_log, "\n 251: printSetup failed"); debugmsg(debug_log,
__LINE__) ;
fflush(stderr);
ExitProcess(1);
}


Later on some formatting of the lines( to be printed ) is done, where
non null values of pd.hDevMode and pd.hDevNames are required.

The code works fine in this case.




NOW, I wanted to reuse the same file for some different kind of
formatting.

So I copied the file print.C to formatPrint.C which on building
results in formatPrint,exe

Here also I want to set the PD_RETURNDEFAULT flag as I dont want to
see the PrintDialog box window.

pd.hDevMode and pd.hDevNames are again set to NULL.
Other values also remain the same.

But here PrintDlg(&pd) function doesn't result in setting of
pd.hDevMode and pd.hDevNames to non null values.
As a result the above check fails and ExitProcess is called and I am
not able to proceed further with my formatting.

To Troubleshoot it further I had called CommDlgExtendedError() to get
the error code.
The error code returned was PDERR_NODEFAULTPRN which is set when no
default printer is found.

But the question here is when the source code is the same, why
PrintDlg succeeds in 1st Case and in second its failing.

Can any one help me with this.
If you need any more information, I can provide.

Thanks in Advance,
Guddu

 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
PrintDlg function fails guddu General 0 July 17th 07 07:37 AM
Normal function? [email protected] Networking 0 January 12th 06 07:05 AM
Function keys Autumn General 2 September 20th 04 03:08 PM
Function keys Autumn General 0 September 19th 04 09:23 AM
PPK and hotkey function cfc Disk Drives 0 June 21st 04 06:54 PM


All times are GMT +1. The time now is 03:01 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Win98banter.
The comments are property of their posters.