|
I am using just DOS based C++ and need to know how to redirect the output to go to the printer. This is what I have to work with but am not sure ow to implement it in the .h
ofstream printer("LPT1",ios::out)
printer << data << "line of code";
Any ideas?
|
|
|
|
|
Hi,
Would you please tell me that how to
get and set the rgb color for each pixel in a
bitmap image. In addition, are there getpixel()
and setpixel() functions in CDIB class?
Thanks in Advance!
chen
|
|
|
|
|
Well, you could use GetPixel/SetPixel but that's pretty slow. Any DIBSection wrapper ( which I presume CDIB is ) would however store a pointer to the bitmap data, which you can then access directly.
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
|
|
|
|
|
Thanks for your reply!
I cannot find the GetPixel() and Setpixel() functions
in CDIB class Lib. Would you please show these source
code?
chen
|
|
|
|
|
I dunno what CDIB is, CDC is the class that has the Set/GetPixel methods, and they are still VERY slow.
Where did you get the CDIB class ? Is it a DIBSECTION wrapper ?
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
|
|
|
|
|
The CDIB class i used is wrote by Jorge Lodos (lodos@cigb.edu.cu) in 1998.
But there is no GetPixel and SetPixel function.
It looks like that:
// dib.h
#ifndef _INC_DIB
#define _INC_DIB
/* DIB constants */
#define PALVERSION 0x300
/* Dib Header Marker - used in writing DIBs to files */
#define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B')
/* DIB Macros*/
#define RECTWIDTH(lpRect) ((lpRect)->right - (lpRect)->left)
#define RECTHEIGHT(lpRect) ((lpRect)->bottom - (lpRect)->top)
// WIDTHBYTES performs DWORD-aligning of DIB scanlines. The "bits"
// parameter is the bit count for the scanline (biWidth * biBitCount),
// and this macro returns the number of DWORD-aligned bytes needed
// to hold those bits.
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)
class CDib : public CObject
{
DECLARE_DYNAMIC(CDib)
// Constructors
public:
CDib();
public:
CPalette* m_pPalette;
LPBYTE m_pBits;
LPBITMAPINFO m_pBMI;
public:
DWORD Width() const;
DWORD Height() const;
WORD NumColors() const;
BOOL IsValid() const { return (m_pBMI != NULL); }
// Operations
public:
BOOL Paint(HDC, LPRECT, LPRECT) const;
HGLOBAL CopyToHandle() const;
DWORD Save(CFile& file) const;
DWORD Read(CFile& file);
DWORD ReadFromHandle(HGLOBAL hGlobal);
void Invalidate() { Free(); }
virtual void Serialize(CArchive& ar);
/* new added by chen 2001.11.14*/
void SetPixel( int iX, int iY, RGBQUAD& rgbPixel );
RGBQUAD GetPixel(int iX, int iY);
void AssertPosition( int iX, int iY );
// Implementation
public:
virtual ~CDib();
protected:
BOOL CreatePalette();
WORD PaletteSize() const;
void Free();
public:
#ifdef _DEBUG
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
CDib& operator = (CDib& dib);
};
#endif //!_INC_DIB
chen
|
|
|
|
|
Dear Christian,
My really problem is:
In order to change the colour of the text in a bitmap image,
the text is viewed as image pixels. But i want to show the
process of the colour changes. The problem may occured:
can i control the change process of the colour as I needed?
or is there other good methods?
Thanks a lot!
chen
|
|
|
|
|
chen wrote:
In order to change the colour of the text in a bitmap image,
the text is viewed as image pixels. But i want to show the
process of the colour changes. The problem may occured:
can i control the change process of the colour as I needed?
or is there other good methods?
Have I answered this already ? If you want to change the text colour, the reliable way is to draw the text yourself and change the colour yourself. It's also the fastest.
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
|
|
|
|
|
chen wrote:
The CDIB class i used is wrote by Jorge Lodos (lodos@cigb.edu.cu) in 1998.
But there is no GetPixel and SetPixel function.
Like I said, Get/SetPixel are methods of CDC.
chen wrote:
LPBYTE m_pBits;
There's your pointer to the bitmap data, just like I said. I suggest you write a Get/SetPixel method to work with this, it will be nice and fast then, although not as fast as iterating through in a tight loop.
Do you need to deal with paletised images ? How about 16 bit ? Both of those will be a pain, 24/32 bit is nice and easy.
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
|
|
|
|
|
NewB question of the day.
I am reading an article here at code project and it says to create my dialog type app and then add some controls next it states to:
"Using ClassWizard, create a CDialog-derived class for your dialog resource. Change the base class from CDialog to CNewDialog.."
I'm not sure how to do this from the ClassWizard.. Is it the same as going into the .h and .ccp files of my dialog and changing all occurrences of CDialog to CNewDialog?
Thanks,
Rob
|
|
|
|
|
While in the dialog editor, hold the ctrl key and double click the dialog (not on a control). It will invoke the class wizard for you and do the necessary things...
Hope this helps,
Bill
|
|
|
|
|
Hi,
I use the Video For Windows function AVIStreamGetFrame which returns a Packed DIB.
I then convert it to a DDB using the following code fragment:
HDC hDc=GetDC(NULL);
BITMAPINFOHEADER* bminfoheader;
BITMAPINFO* bminfo;
LPVOID bits;
bminfoheader=(BITMAPINFOHEADER*)lpbi;
bminfo=(BITMAPINFO*)lpbi;
bits = bminfoheader->biSize + (char *)lpbi;
HBITMAP hbitmap = CreateDIBitmap(hDc, bminfoheader, CBM_INIT, bits, bminfo, DIB_RGB_COLORS);
My concern is the colour usage parameter in createDIBitmap, could there be a situation where AVIStreamGetFrame returns a image which uses DIB_PAL_COLORS.
Would DIB_PAL_COLORS have any effect on calls to GetPixel and SetPixel, when the image is selected into a device context?
Thanks Again
Richard
|
|
|
|
|
Hi
I have a processor demanding task, converting files on a server. What i want to do, is to avoid creating a bottleneck on the server. So i want to process a single file say every minute, leaving the server free in the meantime. Can anyone recommend and give details of a method i could use. Somebody recommended threads?
Cheers
Richard
|
|
|
|
|
You *could* use Sleep(60000); to suspend your program for a minute.
If you convert a file every minute, your server would be slow while the conversion is in progress...
I would make a thread with a very low priority, and just make that thread process all the conversions it could.
When the server is idle, it would use 100% cpu, but when another program need processor time it would get it, because it have a higher priority that your thread have. Your server would be just as fast as it always have been, but use all it's idle time to convert your files.
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Does anyone know how to make a program that will interact with a web page (create a game ladder for leages and such)? I know it is possible.
"To wonder is to begin to understand"
|
|
|
|
|
You can make a program that *generates* a webpage.
If you use IIS it could be an IISAPI filter written in VC, or a COM Object (used from an ASP page).
You could also just write the code in ASP (scripting).
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
If you're just creating the page, then you can generate HTML as text, and save the file out.
Write your HTML to the file just like you would do if you were hand editing (or make the HTML with your favorite editor, view it in Source, and cut and paste this into your program. Substitute your dynamic content, and just write the .HTM file like you normally would.
Couple tips:
I added an HTML line to cause the page to refresh every 5 minutes to show the most recent data automatically - it might be useful for your ladder page.
I found it useful on the page to substitute the default quote " as a parameter for single quotes - this stopped me from having to define all my commands with a lot of SIZE=\"%d\" etc. I could just do SIZE='%d' COLOR='%X'etc.
--Mark Terrano
www.ensemblestudios.com
(Creators of the Age of Empires series)
|
|
|
|
|
how can i put a Status Bar in a Dialog? i've tried using the same code as a FrameWindow from Document/View architecture, but it doesn't work. please help
|
|
|
|
|
I have a problem to read the client area and then create my clipping region.
I was doing MyDc->GetWindow()->GetClientRect(&MyRect); but when I'm printing... this function do not work... so How can I get all the client area of the Dc...
any help
Thanks
Remi Morin
Rmorin@Operamail.com
Remi.Morin@Lyrtech.com
|
|
|
|
|
you can try using CClientDC to get ONLY the Client Area
|
|
|
|
|
Hello,
[1]
I detected the following problem with the COleDateTime ==, <, >, <=, >= operators.
A COleDateTime object is internally represented by a double. So, when comparing two COleDateTime's it is in fact two doubles that are being compared and this means trouble.
I saw that 2 COleDateTime's that were perfectly equal (in human readable format) were indicated as not equal with the COleDateTime == operator.
Solution is to do the comparing yourself based on a stringcompare of the COleDateTimes.
These are the function's that I am using now.
BOOL DatesEqual(COleDateTime &odt1, COleDateTime &odt2)
{
CString str1 = odt1.Format();
CString str2 = odt2.Format();
return (!str1.Compare(str2));
}
BOOL DateSmallerThan(COleDateTime &odt1, COleDateTime &odt2)
{
if (DatesEqual(odt1, odt2)) return FALSE;
else return odt1 < odt2;
}
BOOL DateGreaterThan(COleDateTime &odt1, COleDateTime &odt2)
{
if (DatesEqual(odt1, odt2)) return FALSE;
else return odt1 > odt2;
}
BOOL DateSmallerThanOrEqual(COleDateTime &odt1, COleDateTime &odt2)
{
if (DatesEqual(odt1, odt2)) return TRUE;
else return odt1 < odt2;
}
BOOL DateGreaterThanOrEqual(COleDateTime &odt1, COleDateTime &odt2)
{
if (DatesEqual(odt1, odt2)) return TRUE;
else return odt1 > odt2;
}
[2]
Another aid in programming more accurate when using COleDateTimeSpan's is the following.
Suppose you want to produce a sequence of 15 minute ColeDateTime's, starting at some point in time. Normally, one would program this something like:
COleDateTimeSpan span;
span = COleDateTimeSpan(0,0,15,0);
ColeDateTime StartTime, DateTimeWalker;
StartTime = ...;
DateTimeWalker = StartTime;
for(int i=0; i<NR_OF_QUARTERS; i++)
{
...
DateTimeWalker += span;
}
However, it is more accurate to replace the body of the loop by:
{
COleDateTimeSpan dtsSpan(0,0,i*15,0);
COleDateTime TimeToUse = StartTime + dtsSpan;
...
}
This way, no error is accumulated during the loop, resulting in an almost perfect value for the variable TimeToUse even for the last loop iteration.
Anyone (dis)agrees with this?
Other ideas?
Bye
Geert
|
|
|
|
|
Sounds good to me. Anytime you work with floating point numbers, error accumulation is a problem.
|
|
|
|
|
Please, answer the topic question. The task is to change a window style for region (regions) of a dialog (window, as you wish). for example some part of window is lowered and another is rised (ore something else).
Is it possible in principle without creating addtional controls???????????????????????????
|
|
|
|
|
If you mean window's styles, like WS_DLGFRAME, you can't apply the style to regions of a single window.
What you can do is creating multiple windows, each one with a different style, then define a window region for each one, and handle messages like WM_MOVE as if they all were a single window. See SetWindowRgn() on MSDN.
That's a hard task however!
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
Use the API function DrawEdge
Use the following flags to do your stuff :-
BDR_RAISEDINNER
BDR_SUNKENINNER
BDR_RAISEDOUTER
BDR_SUNKENOUTER
Nish
Sonork ID 100.9786 voidmain
www.busterboy.org
Nish is a BIG fan of Goran Ivanisevic
|
|
|
|