|
kilowatt wrote:
Instead, the CMemDC erases the background on the double buffer, then blts the entire backbuffer to your window, elimiating the need for the default OnErase handler.
Would this be the reason why CMemDC still causes flicker when used within OnErase...???
I'm flicker free when using it in OnPaint/OnDraw but NOT OnErase...??
Thanx again!
Cheers
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
HockeyDude wrote:
kilowatt wrote:
Instead, the CMemDC erases the background on the double buffer, then blts the entire backbuffer to your window, elimiating the need for the default OnErase handler.
Would this be the reason why CMemDC still causes flicker when used within OnErase...???
As long as you do not pass the Erase message on to the default handler, this would not continue to cause the problem.
Why don't you post the OnPaint and OnErase handler, and I will see if I can figure out why you are having this probelm.
|
|
|
|
|
i've decided to go with what works. I do all my drawing in OnPaint() and return FALSE in OnErase().
However this is basically what I had
void CMyClass::OnDraw(CDC* pDC)
{
}
void CMyClass::OnErase(CDC* pDC)
{
CMemDC buff(pDC);
buff.LineTo(100, 100);
CView::OnErase(pDC);
return FALSE;
}
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Actually Kilo...i'm really curious, so here's my exact code...I dunno why it flickers in OnErase and Not OnDraw.
BOOL CRulerView::OnEraseBkgnd(CDC* pDC)
{
CMemDC buff(pDC);
CRect rect;
GetClientRect(&rect);
buff.FillSolidRect(0, 0, m_rulerSize, rect.bottom, ::GetSysColor(COLOR_BTNFACE));
buff.FillSolidRect(0, 0, rect.right, m_rulerSize, ::GetSysColor(COLOR_BTNFACE));
UINT nBorderWidth = ::GetSystemMetrics(SM_CXEDGE);
if(m_b3Dborder){
buff.DrawEdge(CRect(0, 0, rect.right, m_rulerSize), EDGE_RAISED, BF_RIGHT | BF_TOP);
buff.DrawEdge(CRect(0, 0, m_rulerSize, rect.bottom), EDGE_RAISED , BF_LEFT | BF_BOTTOM);
}
buff.DrawEdge(CRect(m_rulerSize-nBorderWidth, m_rulerSize-nBorderWidth, rect.right, rect.bottom), EDGE_SUNKEN, BF_TOP | BF_LEFT);
OnDrawRuler(&buff, CRect(nBorderWidth*2, m_rulerSize-nBorderWidth, m_rulerSize-(nBorderWidth*2), rect.bottom-m_nScrSize+nBorderWidth), RT_VERT);
OnDrawRuler(&buff, CRect(m_rulerSize-nBorderWidth, nBorderWidth*2, rect.right-m_nScrSize+nBorderWidth, m_rulerSize-(nBorderWidth*2)), RT_HORZ);
OnMouseMove(NULL, CPoint(-10,-10));
return FALSE;
}
void CRulerView::OnDraw(CDC* pDC)
{
}
Swap the code from OnErase into OnDraw and you'll see NO flicker...whats going on...?
I even tried writting to a memDC and blitting it myself to the screen (instead of using CMemDC) but no luck.
Either way would be great.
Thanx!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
I created a simple project that mimicks the code that you have shown me, but I did not find any place that it could be flickering, I may be missing a piece of your program that is causing the flickering.
This is how I tested it, and this is what I suggest you should do if you want to find out why it flickers, this should only take about 10 minutes:
Size DevStudio and your program so that they do not overlap, and they will not interfere with each other, this is so that you do not generate an extra paint message while you are debugging.
Next, find the OnPaint handler in your program, which I assume is actually in MFCs code base. You can either search for it, or set a breakpoint on your OnErase handler and follow the stack down to the OnPaint handler. Set a Breakpoint on the same line that initializes the paint DC in OnPaint, and at the first line of the OnErase handler.
Next get your program so that it paints the window like normal and then enable the breakpoint.
Perform the action that invalidates your window in the way that causes the flicker. Step into the CPaintDC contstructor, and then through the OnErase handler waiting for the function call that causes the window to be erased.
You only have to step through until the end of the OnErase handler, because when this function exits the CMemDC class goes out of scope and paints to the window. After this happens I do not see any otherway for your window to be updated.
One other thing that I noticed is that the CMemDC class looks like it is quite inefficient to use it in painting. every time a paint is required, it creates a new memDC, a new bitmap to select into the mem DC, it then deletes these objects also. You may save some cycles by caching these object in your own class, and blitting the bitmap at the end of the OnDraw event yourself.
IMO, I think that the paint code should be in the OnDraw Handler anyway.
|
|
|
|
|
Is there a way (I haven't found one) to set my IDE default directory in the Open File dialog box to something other than the one it always is?? I use the IDE a lot without having a project open, and I hate having to manually navigate through the dirs every time I want to open a file.
Thanks.
- Jason
Do you have a Pulse?
SonorkID: 100.611 Jason
|
|
|
|
|
Make Drag & Drop with the Explorer. I have a short-cut whit my VCProjects Folder, I open that Folder, then the project folder (I left the folder open) and I make Drug & Drop between the explorer and the VS....
Regards;)
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
I am new to VisualC++ and I'm having trouble with a first-chance exception message. I programming using a document/view structure. I have a dialog box calling a document function which is suppose to get me the size of a Carray. However, the program crashes. The message I get is the first-chance exception just before the crash. What is the problem and what can I do to stop this?
Thanks in advance
|
|
|
|
|
I can't tell what is wrong based on what you told me, however the first chance exception is the debuggers way of saying "there is a problem right here" and you can view the state of you program right where the exception was thrown.
What you need to do is look at all fo the variables around the current execution point, and determine if there is a memory access violation or somethine else like that. It may even be useful to set a breakpoint at the beginning of the function where the code crashes and watch what is happening.
Do you know what kind of exception your program is throwing? Are you catching the the exception?
|
|
|
|
|
First-chance exceptions are not in themselves a problem. They are just a message to the debugger that an exception has been thrown. Exceptions are thrown in a normal program execution and are not themselves indicative of error conditions. Usually someone or something will catch the exception and respond accordingly. The key word here is "First-chance" - this means the debugger gets a first chance to see the exception.
Since your program crash we can safely conclude that the exception thrown is indeed caused by a program error. You'll have to provide more info if we are to help you with this.
Cheers
Steen.
"To claim that computer games influence children is rediculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
I want to do a Restaurant project incorporated inventory and pricing. I want to do it in Visual C++ and this is generally what I want to do: have buttons that can be clicked with the name of the food, and then when the button is clicked, I want either a message box to be displayed or a a field to be updated stated how many are left in stock AND the price of the item itself AND the overall price of the entire order. I have set it up into functions. Is this the right way to go about it? Do you have any ideas that might be of help?? Thanks a lot.
|
|
|
|
|
I am VC++ Fan, but is not more easy and cheap to build that project in something called VB...
It's only my Opinion....;)
Regards
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
I must agree (unwillingly)
I vote pro drink
|
|
|
|
|
As has been noted, this may be easier to do in VB, but the downside is you'll need to learn VB.
I'd do this by creating a database file in Access and then creating a project that links to the database file. VC will create a wrapper class so you can read and write the db file with ease. I did a similar project for a friend which took me a week ( in my own time ). It's not much work at all.
Of course I'd never do a real world project that way now, because of the need to set up ODBC sources, etc. I'd use ADOX to create a new table and ADO to read/write it. I've done that to, but it took ages, mainly because the point of that exercise was to learn COM, so that part took the most time to get right.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
Hello,
I would like to store gif, jpeg or tif image as resource in visual VC++6.0
Then, load theses in my application without convert in bitmap file.
Is there any way to do this
Thanks in advance
|
|
|
|
|
i prefer my own way, but there are at least three other, free ways, on this site, to do it.
be aware that you can't use GIF (reading or writing) without a license from Unisys.
-c
Smaller Animals Software, Inc.
You're the icing - on the cake - on the table - at my wake. Modest Mouse
|
|
|
|
|
I was interested to see that this months MSDN address this quite clearly ( in Paul De LAscia's column ) and says what I always expected, if you use GDI+ and read/write Gif, you're going to JAIL !!!!
It's amusing to see that UNISYS are still scum and actually refused to provide a precise definition of who has to pay, they just said everyone who uses gif must ask them for a form so their lawyers can decide how much they need to pay. I wonder what possessed M$ to create a world where I need to be careful to exclude a file format that their API supports directly, especially as checking for the .gif extension will not stop GDI+ reading gifs named differently.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
Hey Christian. You seem to know alot about graphics and answer questions frequently with GDI+ solutions. I'm curious...what is GDI+ all about...I thought it was a lib someone here at codeproject started, that was basically an extension, which would allow easy anti-aliasing, alpha-factoring etc...instead of just the boring LineTo.
My appologies for asking you this directly instead of posting and waiting for a reply, but I figured it would have probably been you in the first place.
My appologies again for just assuming.
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
HockeyDude wrote:
You seem to know alot about graphics and answer questions frequently with GDI+ solutions.
Well, you're half right To quote Lynyrd Skynyrd, I know a little, and I guess the rest...
HockeyDude wrote:
what is GDI+ all about...I thought it was a lib someone here at codeproject started, that was basically an extension, which would allow easy anti-aliasing, alpha-factoring etc...instead of just the boring LineTo.
No, it's an integral part of .NET ( i.e. you get it out of the box ), and it's also a dll that can be downloaded, and with the latest platform SDK ( well, any from the past year, but it's been worked on in that time so you should get the latest one ), you can create apps that use GDI+ for any post Windows 95 OS (W95 is not supported but also not excluded, the official line is try it at your own risk on W95).
GDI+ offers a greatly improved API to GDI+, with things like reading/writing different formats, antialiasing, alphablending and texturing. I have written a series of articles on GDI+ you may find helpful, the March Windows Developers Journal ( out now ) also has an article from me introducing GDI+.
HockeyDude wrote:
My appologies again for just assuming.
Not at all, it was a fair assumption given that I tend to answer a lot of questions on graphics and to often refer to GDI+. I was fortunate enough to be writing a paint package at work when I became aware of GDI+ so I parallel developed a GDI+ version from home which eventually was the one we used at work as well.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
Christian Graus wrote:
they just said everyone who uses gif must ask them for a form so their lawyers can decide how much they need to pay
and it really is arbitrary. i paid $2500 for my license a couple of years ago. since them i've found other people who have paid anywhere from $2000 to $5000 - all small developers, no real outstanding differences between us.
Christian Graus wrote:
I wonder what possessed M$ to create a world where I need to be careful to exclude a file format that their API supports directly
probably because they have licenses for all of their apps, and their apps use the same stuff we do (same COM objects, GDI+ functions, etc). it was probably just a matter of not wanting to have every image loading call ask "OK. who's calling me this time?".
or, maybe (and this is what i prefer, for no good reason), MS is trying to make GIF support so easy to come by, that every app made will use it. that way Unisys has no chance of stopping everyone. and, it sticks a thorn in the side of independent toolkit developers
meanwhile, people continually ask me "i can read GIF in VB/.Net/any of the dozen toolkits here; why can't i do it from your library?"
my answer, "because i don't want to go to civil court to fight an huge corporation" doesn't get me the sale.
-c
Smaller Animals Software, Inc.
You're the icing - on the cake - on the table - at my wake. Modest Mouse
|
|
|
|
|
Chris Losinger wrote:
i paid $2500 for my license a couple of years ago.
Chris Losinger wrote:
meanwhile, people continually ask me "i can read GIF in VB/.Net/any of the dozen toolkits here; why can't i do it from your library?"
So it's an annual fee ?
Chris Losinger wrote:
my answer, "because i don't want to go to civil court to fight an huge corporation" doesn't get me the sale.
How about 'why on earth would you want to read gif anyhow ?'
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
Christian Graus wrote:
So it's an annual fee ?
no. it's an advance on 1/4ly royalties. and at the rate the economy's going (hence sales), i think i'll still have some money left over, by the time their patent runs out (next year).
Christian Graus wrote:
How about 'why on earth would you want to read gif anyhow ?'
because there are only two formats: JPG and GIF. everything else is for losers.
-c
Smaller Animals Software, Inc.
You're the icing - on the cake - on the table - at my wake. Modest Mouse
|
|
|
|
|
Chris Losinger wrote:
because there are only two formats: JPG and GIF. everything else is for losers.
Maybe in the field of internet pr0n. I like tga myself...
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
|
|
|
|
|
hi, dose anybody know how i can wright a simple visual c++ program to encrypt/decrypt entered data by a user using the caesar cipher. And displaying the encrypted data in a file or box.
I have not used visual c++ much and having great difficulty getting grips with the code.
Any help would be appreciatedm. thanks
damsel in distress
|
|
|
|
|
If you having problems coming to grips with the code I would suggest searching for a third party lib. Anything other than simple ascii encryption maybe XOR is pretty difficult. I wouldn't attempt this myself until I fully understood the algorithm and language at hand.
I would look for a 3rd party lib...yup for sure...i'd be much easier.
p.s-You might take a peak at the windows CryptoAPI, I dunno about ceaser cipher's but I think it supports triple DES.
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|