WUGNET, the Windows User Group Network
Your Complete Resource Center for "The Best" in Shareware, Computing Tips and Support, Windows Industry News... and much more!
Home Forums Shareware Windows Tips Hot Offers FREE Newsletters Arcade Contact Us About Partners
Search WUGNET: RSS Feeds RSS Feeds Advertise with WUGNET    |    Shareware eBooks
HomeHome FAQFAQ      ProfileProfile    Private MessagesPrivate Messages   Log inLog in

PrintDlg function fails

 
   Home -> Windows Other -> Printing RSS
Next:  All My Photos go into Binder Format....HELP!  
Author Message
guddu

External


Since: Jul 16, 2007
Posts: 6



(Msg. 1) Posted: Mon Jul 16, 2007 10:30 pm
Post subject: PrintDlg function fails
Archived from groups: microsoft>public>win98>printing (more info?)

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
Back to top
Login to vote
Display posts from previous:   
       Home -> Windows Other -> Printing All times are: Eastern Time (US & Canada) (change)
Page 1 of 1

 
You can post new topics in this forum
You can reply to topics in this forum
You can edit your posts in this forum
You can delete your posts in this forum
You can vote in polls in this forum
Categories:
 Windows XP
 Windows Vista
  Windows Other
 Office
 Office Other
 Security
 WinRAR
  • Home |
  • Shareware |
  • Windows Tips |
  • Hot Offers |
  • FREE Newsletters |
  • Arcade |
  • Forums |
  • eBooks |
  • About WUGNET |
  • Partners |
  • Contact

  • WUGNET Privacy Policy |
  • Link to WUGNET