|
Thanks for the reply.
Actually i want to list out all the installed patches in the machine .
I was able to list the patches to a specific product by msienumpatches() function .But i need to pass the product code to the function. The product code i was getting from msienumproducts() list out the registered product which will not list out the os .
So i think i need to look some other way to handle this ..
vineesh
|
|
|
|
|
Timer is getting frized on a particular functin call.
I had call in my app.
SetTimer(1,260, NULL);
it is woking fine untill a specific function call is reached. and during the execution
of that function, say for about 1 min, the OnTimer is not called, after the function call, it is working
normally.
Pls advice
|
|
|
|
|
When you set a timer using the SetTimer, the windows will send a WM_TIMER message to the window. Since this is a message, you need to dispatch the messages to get this message. But in your case since the thread is busy in executing another function, it cannot dispatch the message. That why the OnTimer() function is not called at this time.
Another solution is creating a second thread.
|
|
|
|
|
Thank you for you responce, Well that is ture, But in my case, the dialog (which holds the timmer) itself is created in a different thread. and Frizing function call is in the main Thread.
|
|
|
|
|
In that case the timer should work fine..
In the OnTimer() function, do you call any functions that might send a message to the main thread?
|
|
|
|
|
No Naveen, In the main thread there a function call (CORBA call) to server, which retrives min 5000 records, during this call the timer is blocked for 1 min, during the UI refresh I can do doevents, only problem is it timer is blocked for about 1 min, Do you have any work arounds for this, pls advice
|
|
|
|
|
ptr_Electron wrote: In the main thread there a function call (CORBA call) to server, which retrives min 5000 records
no no I asked about the functions in the ontimer(). Suppose you are calling a SetWindowText() or InsertItem(), it will send the message to the corresponding window. And if any of this windows are created by main thread, your ontimer() will hang. If the ontimer() function is small can you paste the code here?
ptr_Electron wrote: Do you have any work arounds for this, pls advice
I actually tried such a secnario in my machine and it is working fine..
|
|
|
|
|
Not much really, just inc. prgress bar. to make the UI active from the frized state.
void CPrgpopup::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_ProgressCtrl.StepIt();
CDialog::OnTimer(nIDEvent);
}
|
|
|
|
|
I guess the m_ProgressCtrl is created in the second thread.
Try commenting all the code in ontimer and just put OutputDebugString(). And while running the application take the Dbgview and check the text in the OutputDebugString() is coming or not?
|
|
|
|
|
I am getting "C" in the outputstring
|
|
|
|
|
ptr_Electron wrote: I am getting "C" in the outputstring
you mean even while the main thread is processing, you are getting the string you wrote in the outputdebugstring?
|
|
|
|
|
No, I am not getting when mail thread is processing, Is there any work arounds for this
|
|
|
|
|
ptr_Electron wrote:
it is woking fine untill a specific function call is reached. and during the execution
of that function, say for about 1 min, the OnTimer is not called, after the function call, it is working
normally.
Because your gui thread is busy in your function call. Only after that next message from message queue will be processed.
If the timer event is so critical for you, better go for waitable timer kernel object. You've to spawn a new thread and should wait for the timer on that thread. This link might be helpful -
http://msdn.microsoft.com/en-us/library/ms687012(VS.85).aspx[^]
http://www.adp-gmbh.ch/win/misc/timer.html[^]
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Thanks for ur responce, It tried it out, but no luck
|
|
|
|
|
Did you created a separate thread for waiting on the timer?
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
yes I created separate thread
|
|
|
|
|
Thanks you very much, it is done, but one short question....
I am updating the progressbar, but once the window is minized it is in the frized stated till the currnet operation is done, just I want to make the UI active, just like, redraw window incase in min and maximiwed, some thing...
I tried with some thing like DoEvents() in it, but now luck...
|
|
|
|
|
Hello everyone,
For the interface of a coclass, we can use the interface pointer to point to not only the coclass instance itself, but also pointing to the proxy for the original coclass (during marshalling).
My question is, does it mean the proxy class has the same memory signature as the coclass itself? If not, what are the differences between them and why we can use the same pointer to point to different memory signature?
thanks in advance,
George
|
|
|
|
|
George_George wrote: does it mean the proxy class has the same memory signature as the coclass itself?
If by "memory signature" you mean the layout of the interfaces and the behaviour of QueryInterface , then the answer is yes.
Steve
|
|
|
|
|
Thanks Steve,
1.
If we call QueryInterface on proxy object, we just query the interface of the proxy, not the actual original object, correct?
2.
Stephen Hewitt wrote: you mean the layout of the interfaces and the behaviour
Sorry my bad English is confusing. My confusion is why the same type of interface variable could be pointed to different types -- original coclass type and proxy object type?
regards,
George
|
|
|
|
|
George_George wrote: If we call QueryInterface on proxy object, we just query the interface of the proxy, not the actual original object, correct?
Yes, but as I said, the proxy will implement the same set of interfaces as the real object and as long as you follow the COM rules you will not notice any difference.
George_George wrote: Sorry my bad English is confusing. My confusion is why the same type of interface variable could be pointed to different types -- original coclass type and proxy object type?
Because, from a C++ point of view, an interface is a abstract base class: different object can implement the same abstract base class but they all can be pointed to by it.
Steve
|
|
|
|
|
Thanks Steve,
Let me confirm with your comments. Since both proxy object implements the same set of interfaces as the original coclass object, we can use the same interface variable to point to both proxy object and original coclass object, correct?
regards,
George
|
|
|
|
|
Yes, that's what interfaces are for. In C++ an interface is a pure abstract base class.
Steve
|
|
|
|
|
Thanks Steve!
Question answered.
regards,
George
|
|
|
|
|
there is a bits field structure like this:
typedef struct _bit_struct{
unsigned int sync:16;
unsigned resv:3;
union{
unsigned network_id:13;
unsigned map_id:13;
};
}bit_struct;
Any problem? Maybe union couldn't be included in bits field structure? because when i access(write) the union field, i find it writes wrong address(according to its assembly code).
thanks
|
|
|
|