|
There's some terminology confussion here. What is commonly called a prototype is the particular form (or signature) of a function, i.e. its arguments and return type. So these two functions have the same protoype:
int f(double x,int n);
int g(double y,int m); So, "instantiating a function" makes little sense. You can have one or several (as many as you want, for that matter) functions meeting a certain protoype. You cannot "instantiate" them at run-time: the functions you have are the functions you wrote in your code, period.
That said, for your particular problem I'd approach it like this: Have one callback function with the given prototype (let's call it Callback ) and provide it as many times as you need to AdsSyncAddDeviceNotificationReq , specifying different "addresses" in each invocation. These addresses (and all of the other parameters if you like) can be retrieved from a .INI file without having to recompile the code. Now, in the code of Callback just do what you are supposed to based on the particular AsmAddr * passed, behaving as if there were no other notification requests registered. Everything will work fine as long as different invocations to Callback with different AsmAddr * parameters don't access common data.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Hi,
Do I need to use criticalSEction to both READ and WRITE operation to an share array (by several thread)
Tim Smith wrote:
Yes, because if you don't then you run the risk of reading while someone is writing and thus the data might be suspect.
I need to use CCriticalSection in both READ and WRITE the share array by several threads.....right?
So, what i need to do is:
1. Declare a global CCriticalSection variable (e.g. CCriticalSection cs; )
2. Use cs.Lock() and cs.Unlock() to lock all section that involve READ and WRITE (no matter these operation is in NORMAL function or THREAD function....right?)
That's it??? Please correct me if I am wrong.
|
|
|
|
|
yes, that's it. Try to avoid deadlocks though. I mean, make sure that all exit path pass through an cs.Unlock().
Michel
If I am wrong or said something stupid, I apologize in advance
|
|
|
|
|
Don't play with cs.Lock/cs.Unlock - it's not exception safe. Use CSingleLock instead - it takes care of locking.
Tomasz Sowinski -- http://www.shooltz.com ** If you're going to rape, pillage and burn, be sure to do things in that order. **
|
|
|
|
|
I am desinging an application with a dialog box.
Can someone tell me how to load the string inside of a edit box to a combo box. Then after i update the data, how do i make it so that only while the application is running, it stores the current information in the combo box and after every time i change the value of the edit box string and press a button to add it to the combo box.;P
|
|
|
|
|
editbox.GetWindowText(str);
combobax.Add(str);
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
I have a bitmap resource in my application. Can somebody please wither explain to me how to make the bitmap disappear when clicking on a button or, give me sample code to do this.
Greatly Appreciated.
|
|
|
|
|
Can someone please explain to me how i can get a bitmap inside of my application to disappear with the push of a button?
Thanks!
|
|
|
|
|
where is the bitmap? is it a CStatic control you've put in a dialog, or what? details?
-dz
|
|
|
|
|
I have it in a dialog window, it is a CStatic control. I have made a function that sorts through a small database of people and i also want their picture to show up that i have loaded in the resources. I dont know how to do that and im searching frantically to do so. So if i figure out how to do that, then i'll probably figure out how to make them disappear.
|
|
|
|
|
Try with m_yourBitmap.SetBitmap(IDB_BITMAP) to set the bitmap IDB_BITMAP as stored in your resources, and m_yourBitmap.SetBitmap(NULL) to clear it up. Remeber your CStatic has to have the SS_BITMAP style.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I don't remember what entry-point I must specified in an MFC project file when I compile in UNICODE. Could you help me ? Thanks.
|
|
|
|
|
|
Hi!
I want to get the message when the left mouse button is down on a tree ctrl. But this tree ctrl is of type CTreeCtrl and not of any class derived from CTreeCtrl. So, when I add a handler for this message in the dialog that holds this tree ctrl, it doesn't recieve this message! It recives only when the left mouse is down on the dlg and not when it is down on the tree ctrl. How can I get this message when the left mouse button is down on the tree ctrl.
Thanks,
NC
|
|
|
|
|
what do you mean by
" But this tree ctrl is of type CTreeCtrl and not of any class derived from CTreeCtrl. "
anyway,add the handler when the id of the tree is selected in the id list of the class wizard.you might have added for the dialog itself.
bye.
|
|
|
|
|
Hi!
Thanks for replying.
There is not WM_LBUTTONDOWN for the tree ctrl. How else can I add this to message map and also add a handler?
Thanks,
NC
|
|
|
|
|
You need to Know if the pointer is in the TreeCtrol....
Get the mouse Pointer Position and ask if into the Square that define the control
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Hi!
Thanks for answering.
Where do I check if the mouse position is on the tree ctrl?
Thanks,
NC
|
|
|
|
|
You can use CRect::PtInRect where the point is the mouse pointer and the Rect the TreeControl coordinates. Don't forguet to call CRect::NormalizeRect Before to call PtInRect
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
You can use CRect::PtInRect where the point is the mouse pointer and the Rect the TreeControl coordinates. Don't forguet to call CRect::NormalizeRect Before to call PtInRect
Regards
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
As you want to handle the WM_LBUTTONDOWN before it goes to the TreeCtrl, I would override PreTranslateMessage() as follows:
BOOL CYourDialog::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_LBUTTONDOWN)
{
CPoint p ;
GetCursorPos(&p) ;
CWnd *pWnd = GetWindowFromPoint(p) ;
if (pWnd != NULL)
{
if (pWnd->GetDlgCtrlID() == ID_OF_TREE_CTRL && pWnd->GetParent() == this)
{
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Its all written from memory, so some calls/parameters etc may not be correct, but it should do something close to what you need.
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
|
|
|
|
|
Hi, I am trying to use GetActiveIndex() in the property sheet to get the index of an active page. I encountered a problem in GetTabControl() which returns 0xcccccccc. I believe the setup of my property sheet and pages should be right by using DoModal() and AddPage(). Please give me some suggestions on troubleshooting this problem. Thanks!
|
|
|
|
|
Are you calling GetTabControl before DoModal?
Tomasz Sowinski -- http://www.shooltz.com ** If you're going to rape, pillage and burn, be sure to do things in that order. **
|
|
|
|
|
I called GetActiveIndex() after DoModal() and Addpages(). If I go straight to display data on the first page, it works fine when I am on the first page and vice versa on the other pages. However, I would like to display data by the active page which gives me more flexability.
|
|
|
|
|
Hi, I'm trying to create a save dialog box with 2 filters. How can i update the extention in the filename whenever the "Save As Type" box is highlighted.
Thanks
|
|
|
|