|
Are you sure that Outlook Express supports Automation?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
No. Not sure.
Do not trust a computer...
Always check what computer is doing
regards,
Divyang Mithaiwala
Software Engineer
|
|
|
|
|
ganesh.dp wrote: Is there any API or classes available to do this using VC 6.0.
Have you tried MAPI?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Does this CP article[^] help?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I have two independent C++ classes, A and B. I have a non-static public function in class A
void display(char *msg);
I want to have its function pointer as a public member of class B, without information that it belongs to class A, e.g in class B, I have:
void (*display)(char*);
I have a member of class B in class A, and I am trying to set function pointer as:
B b;
b.display = &A::display;
I get the following compiler error:
error: '=' : cannot convert from 'void (__thiscall A::* )(char *)' to 'void (__cdecl *)(char *)'
I am using Visual Studio 2005. Can any one let me know a proper way of doing this?
ARSALAN MALIK
|
|
|
|
|
Firstly, your approach using void (*display)(char*); doesn't work as it points to a global or static class member function, not a member function.
One way to to do it is the following, assuming the function to be called is always display :
- Define an interface that contains the function:
class ICallable
{
public:
virtual void display(char *msg) = 0;
};
Note the function is a pure virtual function. - Derive the classes that have the function to be called from it:
class A : public ICallable
{
public:
virtual void display(char *msg)
{
}
}; - Your pointer now looks like the following:
ICallable *pPointer; - The call through the pointer like this:
pPointer->display("Hello world!");
Steve
|
|
|
|
|
Thanks a lot for the hint, perhaps I was thinking too much in C
ARSALAN MALIK
|
|
|
|
|
What is your requirement?
Is it ok if you have static "display" function in class A?
Parag Patel
Sr. Software Eng, Varaha Systems
|
|
|
|
|
What you have done is shown that you want some common operation in display method of class A & class B.
So, for that here you can take one base class which define display method. And after that you can inherit your 2 classes A & B from that base class. Both have access of display method.
Do not trust a computer...
Always check what computer is doing
regards,
Divyang Mithaiwala
Software Engineer
|
|
|
|
|
I would implement this using Boost.Function[^] and Boost.Bind[^]:
In class B, declare display like this:
boost::function<void(char*)> display;
in A, set b.display like this:
B b;
b.display = boost::bind(&A::display, this);
in B, call it like this:
if (display) display(whatever string you want to display
The if (display) bit is to protect you against the case that nothing's been assigned to B::display.
Here's a complete, buildable and runnable example:
#include <iostream>
#include <boost/bind.hpp>
#include <boost/function.hpp>
class B
{
public:
boost::function<void(char*)> display;
void b_test() { if (display) display("test"); }
};
class A
{
public:
A() { b.display = boost::bind(&A::display, this, _1); }
void a_test() { b.b_test(); }
void display(char* s) { std::cout << s << std::endl; }
B b;
};
int main()
{
A a;
a.a_test();
}
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: I would implement this using Boost.Function[^] and Boost.Bind[^]:
The Visual C++ 2008 Feature Pack has implemented TR1[^]
Although, I would prefer using interfaces as Stephen Hewitt posted.
|
|
|
|
|
led mike wrote: The Visual C++ 2008 Feature Pack has implemented TR1[^]
Caught me - I've not got used to having TR1 yet. Also, TR1 doesn't have Boost.Bind in it (or Boost.Lambda, for that matter - even more )
led mike wrote: Although, I would prefer using interfaces as Stephen Hewitt posted.
Fair enough - each approach has its own benefits and drawbacks.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: Also, TR1 doesn't have Boost.Bind in it Frown (or Boost.Lambda, for that matter - even more Frown)
Well no, there is no Boost namespace but those features are in TR1.
|
|
|
|
|
So it is (Boost.Bind equivalent, that is)! Well, you learn something new every day!
So, come VS2010, when C++0x lambdas are available, I'll be well happy
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Stuart Dootson wrote: lambdas are available
Yeah, I suppose that's a good thing, we'll see.
|
|
|
|
|
Stuart Dootson wrote: Well, you learn something new every day!
Get in times Stuart!
of course I knew nothing about...
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
[My articles]
|
|
|
|
|
Why do you want to follow a very plain-C path? You know, C++ is a fully featured OOP launguage.
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
[My articles]
|
|
|
|
|
You are right, thanks, perhaps I am thinking too much in C
ARSALAN MALIK
|
|
|
|
|
Hi!
We are making a MFC app with VS2005 (C++).
In the GUI, sometimes the edges of certain controls (a CRichEditCtrl and a CListCtrl) are not redrawn properly.
Instead of the 3D effect border, there is no border. So the CRichEditCtrl is drawn as a simple white rectangle
on the gray background. Same with the CListCtrl (the border is missing).
Covering the app windows with some other window, then moving it away, makes the missing borders draw. But only in the parts, that were covered. The rest is still missing.
I am not sure how to reproduce this, so I can not make a screenshot. Hopefully this is a well known programmer error
Thanks for any hint,
David
|
|
|
|
|
Hi All,
is there any free ware for code analysis to check memory leak, dead code.. etc.
like coverity tool.
please give me the name and where to get it ..(free ware)..
thank you in advance..
|
|
|
|
|
|
Please see Valgrind. It is free tool to analyze code for all sort of errors including memory leaks, dead code etc. However, it is available for linux only
ARSALAN MALIK
|
|
|
|
|
ya valgrind i know its for only unix..i want for windows..any other tool..?
|
|
|
|
|
|
Hi,
i wrote an activeX control and i need to use it in html file which is in webserver.And when any client tries to access the html file he
should be able to download the activeX control...
Please help me how to achieve the same..
|
|
|
|