Solved

TimeProc

Posted on 1998-12-09
5
286 Views
Last Modified: 2008-03-10
Hi.. another multimedia time question... I have a dialog based MFC with a static control that I want to change every time the multimedia timer changes. I had this in the TimeProc

CStatic* staticctrl = (CStatic*) GetDlgItem(IDC_STATIC_TEST);
staticctrl->SetWindowText("Low");  

And I have had grief with the GetDlgItem because of some parameters.
Is there a way to fix this?
Also, If fix it by posting a message in TimeProc with PostMessage, what priority would it have because it is time critical and I want the highest accuracy?
0
Comment
Question by:rose3377
  • 3
  • 2
5 Comments
 
LVL 22

Expert Comment

by:nietod
ID: 1179726
Your message will be given high prioroty in the message queue, but that doesn't matter because PostMessage is assynchronous so the message is not likely to be handled very quickly.  

SendMessage would be better, but the prolem is that the program could be waiting for  another sendmessage to return, in which case your sendmessage can't be processed so the message will be ignored.

If you need timely processing, then you had better forget using messages.  What are the problems you are trying to solve?
0
 

Author Comment

by:rose3377
ID: 1179727
I have a program generating a pulse train to my hardware. The pulse has to have an exact period. Timing is critical! How do I achieve this then? I needed the GetDlgItem so that a static control on the dialog box will alternate saying high-low-high-etc.
0
 
LVL 22

Expert Comment

by:nietod
ID: 1179728
NT is far superior to windows 95/98 but it is not a real-time system.  Depending on how critical the timing is you may not be able produce the signal you need.   A more typical solution would be to use NT to control (turn on or off) a hardware signal generator.

You should be able to use GetDlgItem etc you haven't explained what troubles you are having with it.  However, That sort if thing is likley to be slow, how long is your timer event?  Also since the timmer procedure is called asynchronously, you do need to take procautions to syncronize access to shared data, like the dialog item etc.
0
 

Author Comment

by:rose3377
ID: 1179729
The problem with GetDlgItem is that my error says that I am calling a non-static function in a static function, since the callback function of a multimedia timer is static. Is there a way around this problem?
0
 
LVL 22

Accepted Solution

by:
nietod earned 50 total points
ID: 1179730
Sure.  2 main ways.

I assume what you need is a pointer to the parent window of some control (or just a pointer to that control.  Well you need a pointer to some object, you'll know which)  The easiest way is if there is just one of these objects (i.e. just one parent window in the program--something like that) then you can store a pointer to this object in a global variable and cll the functions you need using this pointer.

However,  if there are more than one of these objects floating around, (i.e if some timer calls will need one pointer and others will need a different one) then you can use dwUser parameter of the timeSetEvent() procedure to pass the pointer you need.  i.e when you call timeSetEvent() to set the timer, pass a pointer to the object to be used.  When your timer procedure is called the dwUser parameter will contain this pointer.  Your timer procedure can convert this pointer to a pointer of the right type and call the appropriate member function.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now