|
OK, sry for being not accurate in my 1st post, what I'm looking for is:
o) There is 1 physical printer, all printouts (most of them) are printed on that one ...
o) Customer wants to see one product out of lets say 30 to be printed as 2 pages on sheet of paper (to save paper of course; printout can be up to 80 pages long)
By default the printer is set to print 1 page of printout to one physical sheet of paper. (no duplex).
But for this one special product I have to override printersettings and tell the printer not to print 1 page on 1 sheet but print 2 pages on 1 sheet.
The problem now is how to set that, I haven't found anything in DEVMODE structure to set.
The only thing I'm able to do right now is to get the informatin from the printer if it is capable of printing multiple pages on sheet or not and how many pages it is able to print on one sheet.
Hth,
Chris
|
|
|
|
|
Then, if I understand it correctly... you can not do it as you think. I think you should programatically give the printing output in one size or in another depending in your options. But not overriding DEVMODE, with OnPrint ().
Maybe I am not right and there is a way. If true... I will learn another new thing
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
|
|
|
|
|
But how will changing the output size make the printer to put 2 pages on 1 sheet?
I thought that's the purpose of multiple pages per sheet option that the printer is able to handle resizing of each page to fit multiple pages on one sheet?
p.s.: Thx for your quick replies, I appreciate that!
|
|
|
|
|
It maybe is so... but the thing is not all printers have these solution, so the "standards" won't have the specifical parameters of some devices.
I have taken a look into DEVMODE structure... the possibilities that I have found is a mixing of
dmScale, dmPosition, dmDuplex
But I don't know how to make it working for your conditions.
EDIT:
I have check this DEVMODE.
DEVMODE
The DEVMODE data structure contains information about the device initialization and environment of a printer.
typedef struct _devicemode {
BCHAR dmDeviceName[CCHDEVICENAME];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
union {
struct {
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
};
POINTL dmPosition;
};
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
BCHAR dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
DWORD dmDisplayFlags;
DWORD dmDisplayFrequency;
#if(WINVER >= 0x0400)
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
DWORD dmPanningWidth;
DWORD dmPanningHeight;
#endif
#endif /* WINVER >= 0x0400 */
} DEVMODE;
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
|
|
|
|
|
No worries, cheers anyway spending your time on that!
|
|
|
|
|
Hi Chris,
Infact i was also trying to do the same . Now its done for me .Please follow the below link . You will find ur answer.
http://www.experts-exchange.com/Programming/System/Windows__Programming/A_2090-How-to-set-Pages-Per-Sheet-Programmatically-for-N-Up-Printing.html
If u still have any problem. Please do let me know .
Regards,
Jack
|
|
|
|
|
Thank you very much, sir
I couldn't even remember I was posting here, but anway your link turns out very useful for me, that's for sure.
But it needs to be checked if the private printer data of the DEVMODE structure is really the same for all printers. To be honest, I doubt that. Could be that for another printer the n-up printing byte is somewhere completely different and writing the byte described in your link does something really fancy then ...
|
|
|
|
|
Hi Chris,
For my Printer n-up printing byte turns out to be 159 byte . And you are correct that private members are drivers specific and it need not be same .
So I am trying to find out any way so that we can find out which Byte is reponsible for N-Up print setting . As I have to implement N-Up printing for my applications Print Dialog .
I guess you are also trying to do the same . If you know any way to get that,please let me also know .
I would be really thankful for that .
Regards,
Jack
|
|
|
|
|
Actually, I gave up in 2007 to investigate further on that topic since it was not a customer request but an internal one and we decided not to put more effort in it. So I guess I wont't be a big help here at least not in finding the right byte.
Of course I can offer you to run a compiled test program with the printers we have installed here in my office. I don't want to grab your sourcecode, so if you say you have something compiled already and want some testing on additional printers, you're very welcome!
Maybe if I find some time this week I could at least test if our printers have the N-up byte at the same location in the DEVMODE structure, but we're in the middle of pushing out a new release of our software this week, so I'll be busy with patching and testing most probably
|
|
|
|
|
Is there any VC++6 function that can be used to restart or end the opperating system?
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
|
Thamks!
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
|
Thanks!
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
|
|
Thanks again!
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
Hi all...
I'm looking for a good toolkit (with source) that will help me build a character based user interface for console applications using C++ in Visual Studio 2005. I'm doing a retro app, and I can't seem to find a good tool-kit that will let me define windows with different characteristics (allow word wrap, scrolling, borders, etc) and (preferably) use ANSI escape code graphics. Anyone know of a good one? I kinda want the source to go with it, so I can muddle around with it and see how they do things (doesn't everyone?). Appreciate any help...
=->Mocs<-=
|
|
|
|
|
Does anyone know of any methods for successfully reading an Excel worksheet that has been copied to the clipboard? It would need to be in BIFF8 format.
|
|
|
|
|
Hi,
I have a CListCtrl derived class, where I want control over the subitem painting. The control is in report mode with some subitems. The insertion of items seems to work but nothing appears in the control since I draw all the subitems myself. I figured out that the subitem prepaint stage is never called. The item prepaint stage on the other hand gets called.
What could could be the reason for this problem ?
void CXListCtrl::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW *pLVCD = reinterpret_cast<nmlvcustomdraw *="">(pNMHDR);
// Take the default processing unless we set this to something else below.
*pResult = CDRF_DODEFAULT;
// First thing - check the draw stage. If it's the control's prepaint
// stage, then tell Windows we want messages for every item.
if (pLVCD->nmcd.dwDrawStage == CDDS_PREPAINT)
*pResult = CDRF_NOTIFYITEMDRAW;
else
{
if (pLVCD->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
// This is the notification message for an item. We'll request
// notifications before each subitem's prepaint stage.
*pResult = CDRF_NOTIFYSUBITEMDRAW;
else
{
// ***** This block of code gets never called. *****
if (pLVCD->nmcd.dwDrawStage == (CDDS_ITEMPREPAINT | CDDS_SUBITEM))
{
// This is the prepaint stage for a subitem.
:
:
}
}
}
}
tia
|
|
|
|
|
How can I record and play sound file in mp3 format ?
|
|
|
|
|
I assume you mean programmatically...
For capturing and rendering audio samples there's
(included with Windows):
Windows Multimedia Audio[^]
DirectSound[^]
For compressing/decompressing PCM samples to MP3 you
could use the Audio Compression Manager (ACM)[^]. You'll
need an ACM-compatible MP3 codec to use ACM.
There's no MP3 codec included with Windows, but there's
some available from 3rd party sources. Google "LAME MP3"
for an example of a free MP3 codec.
You may find other open-source MP3 projects that have code that
is simpler to use than ACM.
You could also study MP3 compression and write your own codec code.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
.NET has a function called String.PadRight. how can i duplicate this in win32?
thanks in advance,
Don't be overcome by evil, but overcome evil with good
|
|
|
|
|
Something like this maybe (not tested!)...
LPTSTR MyPadRight(LPCTSTR pSrcStr, int nNewLen, TCHAR padchar)
{
int nNewStrLen = max(_tcslen(pSrcStr) + 1, nNewLen + 1);
TCHAR *pNewStr = new TCHAR[nNewStrLen];
_tcscpy(pNewStr, pSrcStr)
for (int i = _tcslen(pSrcStr); i < nNewStrLen - 1; ++i)
pNewStr[i] = padchar;
pNewStr[nNewStrLen - 1] = _T('\0');
return pNewStr;
}
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|