|
Hello again
I have just one other problem about OnEraseBkgnd event !
Right now, i solved my pervious problem that was about Flickering image in the dialog by returning FALSE in that message !!!
Now, i want to know how could i refresh the image in each movement ?!!!
Because, i can't use Invalidate() or InvalidateRect() functions ...
Could u help me in it, please
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
I agree with Erik, the problem is more than likely going to be WM_ERASEBKGRND which you must override and probably just return false. However, I think a better solution completely would be to use the DirectX SDK if your writing your own game. Its much faster than GDI because you can access your graphics hardware to deal with all the drawing, and can eliminate flickering by updating the monitor when the vertical blank occurs (if you wanted to). The drawback is its more complicated to implement than GDI (you need to know about backbuffers, surfaces and flipping), oh, and the version 8 SDK is about 180Mb, if your on a 56k modem you could go days without using the telephone line .
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
Hello
Thanks for ur reply and ur advice about OnEraseBackground message ...
and about DirectX, right now i have an article about it in my homepage ...
But unfortunly i have to write 20 game projects in only TWO months
So, i have to write FAST code
Anyway, thanks !
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Hello again
I have just one other problem about OnEraseBkgnd event !
Right now, i solved my pervious problem that was about Flickering image in the dialog by returning FALSE in that message !!!
Now, i want to know how could i refresh the image in each movement ?!!!
Because, i can't use Invalidate() or InvalidateRect() functions ...
Could u help me in it, please
(Please reply FAST, ASAP)
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
When you say "refresh the image in each movement" what exactly do you mean? are you trying to create an animation? If you are trying to do something like this with GDI, its probably your best bet to create a memory DC and draw/update that DC to your liking before blitting the final result on to the screen DC (no flickering). This should have the effect of movement (so long as you do it right of course). I'd imagine there would need to be some kind of timer to keep track of when the image is needing refreshment but I'm not sure on that kind of stuff (I've never made a game using GDI). If I've waffled on about the wrong thing feel free to reply. Oh, cheers for your article on DirectX, I'm reading it as we speak, very interesting.
Alan.
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
ok, let me talking about my game ...
It's a Card game like Solitaire in windows os.
User can drag & drop cards in the game ...
So, i must redraw the image in each movement, ok ?
I mean i have to refresh image in MOUSE MOVE event ...
How ?
How can i do it ?
PS: Thx, i'll write about DirectDraw and D3D
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Right, ok, I have an idea, but since I've never done this it will remain an idea till it gets proven one way or the other. I know there is an event OnMouseMove(UINT flags, CPoint pos) that processes the WM_MOUSEMOVE message and is triggered when you move the mouse - obviously. You can test if the left mouse button is being held down by checking the flags for MK_LBUTTON. The event will give you the (x,y) coordinates of the mouse in a CPoint structure to which you can draw the card (whether these (x,y) coordinates represent the top left, middle, bottom right of the card is up to you - I know you know all this so far, but its just for the benefit of others who may want to do it). Now heres the good part, you need to create a memory DC to work with. Without this you WILL get flickering from a screen that is getting regularly drawn to. Something like this MAY work (I'm very rusty on this ):
CDC dcMem;
dcMem.CreateCompatibleDC(GetDC());
OK so you have a background DC (similar to the DirectDraw backbuffer), select your background bitmap into ANOTHER DC (not screen) and blit to the memDC(start afresh) with SRCCOPY flag. Then select your card bitmap into the extra DC and blit it again with but this time to the (x,y) coordinate of the memory DC. Finally blit the memory DC to the screen and you should find it keeps redrawing the card image as you move the mouse (providing your custom tests are met). I'm not sure how fast or smooth this solution is likely to be, but I'd like to know (if it works or not at all too).
Alan.
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
How do you call Windiff from with in a program and specify the two files that you want compared.
In the help of WinDiff it tells about
Invoking Windiff from the command line
To compare two files
Windiff path_to_first_file path_to_second_file
How do i implement this?
Thanks
Scott
|
|
|
|
|
Use CreateProcess() and absolute paths to Windiff executable and files to compare.
|
|
|
|
|
Works great, thanks
The only problem is, that it doesn't like the paths passes in the command line if they have spaces. Is there a way to convert them to a DOS style with a tilda or something else?
Scott
|
|
|
|
|
It used to work for me as well, with no problem. Check documentaion again (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/prothred_9dpv.asp) and possibly try to use lpApplicationName only to specify path and parameters.
|
|
|
|
|
It does open up Windiff correctly but the problem is that why i send in the files to compare "C:\My Documents\test.h C:\My Documents\test2.h" it tells me that it can not open the file "C:\My"
It works if the directories don't have spaces in them.
Scott
|
|
|
|
|
I am sorry, I understood you wrong. You can convert path with spaces into its short version with this function:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_0cyt.asp
|
|
|
|
|
thanks, that's what i needed
Scott
|
|
|
|
|
I think it's better to just quote ("") the two paths than to re-introduce the horrible 8.3 limits again.
|
|
|
|
|
Hello CP,
I'm working on an embedded PC, and the user doesn't have luxury of a keyboard or mouse (only a touchscreen). I have to create a dialog that will allow the user to set the time and date. What is the API call that I can do to take care of this?
TIA!
Mark Donkers
A witty saying proves nothing.
-- Voltaire
|
|
|
|
|
Forget it. I found it.
SetSystemTime()
Mark Donkers
A witty saying proves nothing.
-- Voltaire
|
|
|
|
|
Hi all, I have another b*****d problem with unresolved externals, this one is very strange. OK, I have the following code:
#include fstream.h (in arrow brackets)
bool blah::blah(LPSTR filename)
{
ifstream fin(filename);
return true;
}
This generates the following error:
nafxcwd.lib(thrdcore.obj): error LNK2001: unresolved external symbol _endthreadex
nafxcwd.lib(thrdcore.obj): error LNK2001: unresolved external symbol _beginthreadex
blah...2 unresolved externals.
I've had a look around the website but can't find the answer. I get an error when including the msvcrt.lib or some other lib that was mentioned on the site. WTF is going on? I'd be greatful if someone could save my PC's from destruction, cos thats what they're heading for!
Many Thanks,
Alan.
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
"Linking code compiled with /MT with the library LIBC.LIB causes LNK2001 on _beginthread, _beginthreadex, _endthread, and _endthreadex" - MSDN
Bye,
Orbital^
...the night is long ... but not long enought to do some real coding ...
|
|
|
|
|
Thanks for the response. I did notice the line you pointed out in MSDN, but I haven't included LIBC.lib in my build nor with \MT option. Its strange but I've noticed that when I create a simple win32 application if I add the code given in my first question straight away, it works!!!! chuck it in my win32 simple app that I built up and it fails!!! why? I've checked the include libraries in Project > Settings > Link and they are exactly the same. I scoured the project options for \MT and can't find it (found \ML though). I haven't changed a sodding thing except to add the appropriate files (dxguid.lib and ddraw.lib) for my DirectX SDK. Apart from that I haven't touched it. Could it be the order I'm #including stuff? What is the missing link .
Many Thanks,
Alan.
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
Actually There is some probelm with your Project settings .
Just Change the project settings as follows.
Go to Project->Settings->C/C++. Then Chose Category as Code Generation then select the use run-time library as multithreaded DLL . Hope Your Probelm will be solved.
Samir Sood
|
|
|
|
|
Thankyou, thankyou, thankyou. It worked at last! I did hit one further snag, a warning came up about MSVCRT.lib conflicting with some other lib every time I compiled, so I took out the _MBCS part of the Settings > C++ > Preprocessor definitions and it removed the error and everything compiled. I'm not sure if this is the best way to go about it though, what do you reckon? Also how come it works when you enter this code in a simple win32 app just after creation? I didn't have to change the code generation stuff at all then? seems a bit strange to me. Anyway, I thankyou for the time and effort you spent replying to my problem, much appreciated.
Alan.
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
First, when you post code you click the little checkbox at the bottom that says "Display this message as-is (no HTML)" to get your brackets to appear (though your signature will now look weird). Alternatively, you can simply use the HTML equivelents "& lt;" and "& gt;" (without spaces) for less than and greater than.
Second, you probably don't want to be using fstream.h, these are the old deprecrated iostream libraries. The new libraries are simply:
#include <fstream> // Note: no .h
Third, some functions have dependancy on the multithreaded library, and as such require a multithreaded version of it. You're linking with the single threaded version. Change that in your project settings on the C++ tab.
--
Where are we going? And why am I in this handbasket?
|
|
|
|
|
Thankyou, thankyou and more thankyou's. Absolutely correct. Would you mind reading my reply above, cos i hit one further snag which i'm not sure I've handled "properly" according to convention. Anyway, thanks for your time replying to my problem, I am extremely pleased to have got over this horrible link error. I must admit I find it strange because if you put that code in straight from scratch on a simple win32 project it works! without having to change the code generation to multi threaded? Oh btw, thanks for you advice on the < fstream > < fstream.h > issue , I was going to use fstream but I think out of boredom and complete frustration I was trying anything to get the bugger to work .
Many Thanks for you time and help
Alan.
"When I left you I was but the learner, now I am the master" - Darth Vader
|
|
|
|
|
I want to draw the caption area by myself,but the system will draw it when needed.How can I do?
thank you!
Don't look at me in that way!
|
|
|
|