|
|
Is it possible, when processing a WM_CHAR message or using OnChar() to get all pending char messages, (Not necessarily the repeated characters) in the message queue?
In other words, if you have a very expensive recalculate cycle and the user pounds in an "A", "B", and "C" on the keyboard before you've finished your last recalculate cycle, is there a way to effectively get "ABC" with a single handler on the next handler.
My issue is I need to determine if the character is even valid before my Invalidate/redraw but if I fall behind processing characters it tends to accumulate and delay the rendering process.
If I do the recalculate in the rendering process, the user experience appears smooth since the multiple invalidates equate to one recalculate cycle but the characters have been allowed in at this point making validation difficult for text inserts etc...
I need to calculate before I post the invalidate.
|
|
|
|
|
What about using a PeekMessage() loop in your OnChar() to remove any remaining WM_CHAR messages from the queue?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Interesting.
Took me a bit to figure out how to do this but it works nicely if I pump the message and skip the call to invalidate until no more messages are stockpiled in the queue.
Thanks for the tip!
|
|
|
|
|
bob16972 wrote: if you have a very expensive recalculate cycle
Maybe that should be done in a background thread so it doesn't stop the UI thread from receiving messages?
led mike
|
|
|
|
|
Thanks for the input.
Mr. Salsbery gave me a solution to get those queued messages through before I call invalidate and it's working pretty good.
This whole thing wouldn't be necessary if GDI+ wasn't so darn slow (Really, I'm not complaining)
|
|
|
|
|
hey guys,
I'm having a problem with a project I'm working on. When I compile my project, I get a "undeclared identifier "class" error.
<br />
<br />
***no includes(not part of code)***<br />
<br />
class TME_BasicParameters<br />
{<br />
public:<br />
* values taken from the basic programming screen */<br />
float torqueHighLim;<br />
float turnOffStage2;<br />
float torqueLowLim;<br />
float startAngle;<br />
float turnOffStage1; <br />
float trigger;<br />
float stage1Speed;<br />
float angleLowLim;<br />
float turnOffAngle;<br />
float angleHighLim;<br />
float stage2Speed;<br />
float backoff;<br />
<br />
int strategy;<br />
int app;<br />
int tool;<br />
};<br />
any ideas?
|
|
|
|
|
VonHagNDaz wrote: When I compile my project, I get a "undeclared identifier "class" error.
What line of what file is the compiler complaining about?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Its complaining about the line where I say "class TME_BasicParameters.h"
"D:\SvnWork\S168813\Source\TME_Screen_Port\TME_BasicParameters.h", line 2: error:
identifier "class" is undefined
class TME_BasicParameters
^
"D:\SvnWork\S168813\Source\TME_Screen_Port\TME_BasicParameters.h", line 3: error:
expected a ";"
{
^
"D:\SvnWork\S168813\Source\TME_Screen_Port\TME_BasicParameters.h", line 174: warning:
parsing restarts here after previous syntax error
};
Also, I only get the error when I try to include "TME_BasicParameters.h." "TME_BasicParameters" is included in my project. Both files are located in the same directory. Here is the syntax I use in the other file:
<br />
<br />
<br />
#include "TME_BasicParameters.h"<br />
<br />
<br />
#define MAXTOOLS 2<br />
<br />
<br />
#define MAXAPPS 255<br />
<br />
<br />
#define MAXSTAGES 7<br />
<br />
<br />
#define MAXTIGHTGRPS 8<br />
Pretty basic, but maybe that snipet will help shine some light.
[Insert Witty Sig Here]
|
|
|
|
|
VonHagNDaz wrote: Its complaining about the line where I say "class TME_BasicParameters.h"
Why the .h at the end of the class name?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
typo
full code:
TME_BasicParameters.h
<br />
class BasicParameters<br />
{<br />
<br />
float torqueHighLim;<br />
float turnOffStage2;<br />
float torqueLowLim;<br />
float startAngle;<br />
float turnOffStage1; <br />
float trigger;<br />
float stage1Speed;<br />
float angleLowLim;<br />
float turnOffAngle;<br />
float angleHighLim;<br />
float stage2Speed;<br />
float backoff;<br />
<br />
int strategy;<br />
int app;<br />
int tool;<br />
};<br />
TME_DEFS.h
<br />
<br />
<br />
<br />
#define MAXTOOLS 2<br />
<br />
<br />
#define MAXAPPS 255<br />
<br />
<br />
#define MAXSTAGES 7<br />
<br />
<br />
#define MAXTIGHTGRPS 8<br />
<br />
#include "TME_BasicParameters.h"<br />
[Insert Witty Sig Here]
|
|
|
|
|
I don't see anything wrong with line #2 of the TME_BasicParameters.h file. Are you using .c or .cpp files?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
The majority of the project files are .c, written a long, long time ago. I've been assigned to maintain and add a few new features. My goal was to make the newer features more object oriented as opposed to millions of structs that the old code was using. I could always give up and continue adding to the endless amount of structs, but I wanted to begin adding more object oriented techniques and get away from some of the older c stuff.
[Insert Witty Sig Here]
|
|
|
|
|
VonHagNDaz wrote: The majority of the project files are .c,
Which may be why the compiler is complaining about the class keyword.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Aren't most compilers smart enough to cross compile c and c++ files in the same project, or am I confused?
[Insert Witty Sig Here]
|
|
|
|
|
There's nothing wrong with having .c and .cpp files in the same project.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I suppose they're smart enough to consider *.c files as C sources, while *.cpp ones as C++ sources.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
CPallini wrote: I suppose they're smart enough to consider *.c files as C sources, while *.cpp ones as C++ sources.
correct, but what I'm trying to do is make a class in a .cpp file. Long story short I gave up and I'm using structs now, but structs cant have member functions, so I'm confused. I've only been exposed to OOP in c++, and I've poked c with a 10 foot pole once. I need member functions for the struct, or is that strictly c++ OOP? Google isn't turning up much when I search for member functions for structs, I'm guessing this is a lost cause as well.
dumb programming question #2 :
If I was trying to make a more object oriented approach in c, where would I begin? That might be a basic question, but if you've been reading, all my attempts so far have failed, or are wrong...
moral :
Colleges need more classes on just c and non OOP approaches. In school we had 10+ c++ OOP classes, and one c class where they said "This is c, no one uses it anymore, but now you've been exposed to it..."
[Insert Witty Sig Here]
|
|
|
|
|
Only C++ structs allow member functions (C++ struct s are just classes with different default visibility rules).
Maybe I missed a point: if you need OOP , while are you using C language?
VonHagNDaz wrote: If I was trying to make a more object oriented approach in c,
Use C++ .
C language is best suited for structured programming. There's nothing wrong in following structured programming paradigm: for small projects it is a winning approach. On the other hand, if you need to exploit OOP advantages, you should use an object oriented language, such C++ .
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
CPallini wrote: while are you using C language?
all of the source is in c. This is a massive amount of code I'm maintaining and adding new features to. I thought that I could use .cpp classes, include the .h files in the .c files, and access the object's member functions through pointers. The approach made sense to me, but I guess I'm stuck with c structs and no member functions.
[Insert Witty Sig Here]
|
|
|
|
|
Why don't you upgrade to C++ (i.e. rename from .c to .cpp ) the files wherein you want to use classes?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Why are the simplest answers the hardest to find?
[Insert Witty Sig Here]
|
|
|
|
|
Often posting the right question is difficult.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
This error is typically caused by a missing semi-colon in a class definition. Check the files in included in this source file and see if you missed any semi-color for a class or struct definition.
-Saurabh
|
|
|
|
|
hi
what is the difference between int const valu and const int valu ?
|
|
|
|