|
Hi Roger,
First of all sorry to reply late. I was very busy in a project.
Well, when I compile with #import "Dll path".. it creates a .tli and .tlh file in my debug directory. I checked those files by opening them in VS. None of them defines INetFwProfile interface. But I want to make use of INetFwProfile which as per microsoft is in the hnetcfg.dll which I am using with #import.
As far as code is concern it goes like this..
////////////////////////////////////////////////////////////////////// HRESULT hr = S_OK;
// Initialize COM.
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
hr = S_OK;
fwComInitialized = TRUE;
}
else
{
printf("CoInitialize failed: 0x%08lx\n", hr);
goto error;
}
INetFwProfile* fwProfile = NULL;
//////////////////////////////////////////////////////////////////////
Here I have not written Cocreateinstance() yet. Before that only its not complinig and last line give errors as mentioned below.
error C2065: 'INetFwProfile' : undeclared identifier
error C2065: 'fwProfile' : undeclared identifier
error C2106: '=' : left operand must be l-value
Does it mean hnetcfg.dll does not contain INetFwProfile. As far I know .dll contains only implementation and when you compile .tlh gets created with contains the declaration of the interface.
Do I have to include any .h also or have to give path of any other file in Include directories from Options in VC++ 6 compiler. I dont thinks so...
--------------
Vaibhav...
|
|
|
|
|
Well...
The errors are expected since the interface is not declared.
I've tried to import hnetcfg.dll but there is no interface called INetFwProfile in my library either.
I browsed MSDN at the net and found the following link:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ics/ics/inetfwprofile.asp[^]
The article tells me that WinXP SP2 is required, do you have it?
Furthermore the article says that the interface is declared in a header file called netfw.h, which I presume is shipped with VC7 which I don't have. I'm running VC6 and I can't find that header file.
The article doesn't say anything about hnetcfg.dll. Where did you get the information that the interface could be found in this library?
The bottom line is that you are looking for the interface in the wrong place. Or maybe you're looking at the right place but the library is an older version that doesn't contain the interface you're after.
Either way I cannot help you since I cannot find any information that confirms any of this.
--
Roger
|
|
|
|
|
Roger,
Things are crystle clear now..
Go though this link http://blogs.tonygoodhew.com/xpsp2/archive/2004/05/19/269.aspx
In the third paragraph of this article it is said that either you can use dll by importing it or create .h and .tlb files using midl.exe. I prefered the formal over later. But the dll is not availbale with this PSDK. So I took the dll form a machine whre XP SP2 was installed.
But now I got the concept. That dll is just contains the core objects required to manipulate the firewall. But one requires Firewall manager also (which I thought would be in that dll only) which deals with that dll objects. Now this manager is defined in netfw.h. So later I went for the second approach and created netfw.h file from netfw.idl using midl.exe and used it in my project. Its working fine now.
As you said it required XP SP2. Ya but that is only for the client machine. i.e. the taget of the software must be a XP SP2. The developement machine could be any thing on which you have installed PSDK. I had already used the link you gave me for the reference in my project since that is only source for reference.
So the bottom line is either I couldn't get the exact meaning of the 3rd paragraph of the link I mentioned above or that link does not explain well.
Anyway, thank you for taking interest in my problem.
Have a nice day!
--------------
Vaibhav...
|
|
|
|
|
Vaibhav Sanghavi wrote:
Then #import "Dll path" no_namespace
Then I am declaring the required inteface pointer and then calling CoCreateInstance();
I'm curious to know why you are using #import but not making use of the generated Smart Pointer interface.
I find it easier to use the smart pointers.
e.g
<br />
#import "craxdrt.tlb" no_namespace named_guids <br />
<br />
<br />
IApplicationPtr m_Application;<br />
<br />
HRESULT hr = m_Application.CreateInstance(__uuidof(Application));<br />
<br />
m_Application->OpenReport(reportName);<br />
<br />
Michael
CP Blog [^]
|
|
|
|
|
Hi,
I'm using MSHFlexgrid and I need to use a "custom" autoresize.
* if the text is to long to fit in the cell cut off the text and put "partoftext..." in the cell. if the user clicks on the cell he will, off course, see the whole cell.
My first idea was to get the width of the cell (OK) and the width of the text (GetCellFontWidth() ?) and then work from there (I do keep in mind that one is in twips and the other in points)
problem is that m_flexArray.GetCellFontWidth(); always returns 0.00000
m_flexArray.GetCellFontSize(); does returns a value, but in cases of Times New Roman and stuff it doesn't do me any good does it?
can anybody give me any clues on how to solve this?
(yes, it's not really an autoresize )
tnx for your help!!
"If I don't see you in this world, I'll see you in the next one... and don't be late." ~ Jimi Hendrix
|
|
|
|
|
class A
{
public:
virtual fun();
}
class B:A
{
public:
fun();
}
main()
{
B b;
b.fun();// this will call class B's function.
//But i want to call function fun() of class A with the same object ( of B).
//any way ??
}
|
|
|
|
|
xcavin wrote:
any way ??
Yep.
b.A::fun();
That should successfully call the base function.
Happy Programming and may God Bless!
"Your coding practices might be buggy, but your code is always right."
Internet::WWW::CodeProject::bneacetp
|
|
|
|
|
Hi
You can typecast the object of B to A and call the function
So just change the last line of your code to
((A)b).fun(); // this will call class A's function.
--------------
Vaibhav...
|
|
|
|
|
i wish to make some registry entry at the time of installing my software and use the entries later in my sofware..
should i make the entries in HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE? basically, i want to know which is the appropriate path.
ask_you
|
|
|
|
|
It depends. If you want all users of that machine to be able to use you software then you need to saved it on HKEY_LOCAL_MACHINE. But if for currently logon user only, then save it to HKEY_CURRENT_USER.
|
|
|
|
|
|
Could you please help me on this one... I have to Read Cookies along with the Contents. How will I be able to do that?! What Class/Methods are Involve?! Thanks in Advance!!!
|
|
|
|
|
Maybe this link will help:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;241492
|
|
|
|
|
|
How about getting all Cookies in the Cookies Directory?! im sorry, im a noob here... thanks again!!!
|
|
|
|
|
Liger_Zero_X wrote:
How about getting all Cookies in the Cookies Directory?
Use FindFirstUrlCacheEntry() , and pass "cookie:" as the first parameter.
--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ
----
Pinky, are you pondering what I'm pondering?
I think so Brain, but if we shaved our heads, we'd look like weasels!
|
|
|
|
|
I am trying to do some simple inheritance with a few classes but keep running into an error at compile time. It is error C2504, 'undefined base class'. What does this mean. My classes are defined, I think they are anyway. This is what it looks like.
class a{
};
class b : public a{
};
I am including the files as well. I am just kind of stumped.
Thanks Brian.
|
|
|
|
|
Make sure you include the header file of your base class in your derived class.
1. say you defined class a in "a.h" file
class a
{
};
2. In class b header file
#include "a.h"
class b: public a
{
};
Jose Cezar S. Ynion
|
|
|
|
|
I am trying to do some simple inheritance with a few classes but keep running into an error at compile time. It is error C2504, 'undefined base class'. What does this mean. My classes are defined, I think they are anyway. This is what it looks like.
class a{
;
class b : public a{
};
I am including the files as well. I am just kind of stumped.
Thanks Brian.
|
|
|
|
|
?Don't ask the same question twice. The above is missing a }, so I assume it's not the actual code. Are you including the header for the base class in the HEADER for the derived class ?
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Yes, I am including the header files. Here is some of the original code.
#ifndef ABSTRACTFACTORY_H
#define ABSTRACTFACTORY_H
#include "concAbstFactory.h"
#include "abstractFactory.h"
#include "productA.h"
#include "productB.h"
using namespace std;
class abstractFactory{
public:
abstractFactory(){}
productA makeProductA(){
return productA();
}
productB makeProductB(){
return productB();
}
};
#endif
#ifndef CONCABSTFACTORY_H
#define CONCABSTFACTORY_H
#include "abstractFactory.h"
#include "productA.h"
#include "productB.h"
using namespace std;
class concAbstFactory : abstractFactory{
public:
concAbstFactory(){
cout << "Building concAbstFactory" << endl;
}
};
#endif
|
|
|
|
|
Sirrius wrote:
#include "concAbstFactory.h"
There's the culprit. Get rid of that line and the sun will being to shine once more
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Strange. What was so wrong with that. "concAbstFactory.h" is another class that I am going to need to derive other classes from later. Hmmm.
Getting rid of it did help though. Thanks for your eagle eye.
Brian.
|
|
|
|
|
Sirrius wrote:
Strange. What was so wrong with that.
Ok, say we're trying to compile abstractFactory.h... The compiler starts the pass, and hits the #include "concAbstFactory.h" statement, so opens the file and starts to process it, where it finds the line #include "abstractFactory.h" . When it opens this file, it gets caught by your #ifndef (since the file is already included), and skips over the file. Returning to the concAbstFactory.h file, it tries to process the class definition but since it hasn't reaches the declaration of abstractFactory yet, it complains that the base class is not defined, which is correct. So basically, the compiler is seeing the lines in this order:
#ifndef ABSTRACTFACTORY_H
#define ABSTRACTFACTORY_H
#include "concAbstFactory.h"
#ifndef CONCABSTFACTORY_H
#define CONCABSTFACTORY_H
#include "abstractFactory.h
/* abstractFactory.h */
#ifndef ABSTRACTFACTORY_H
#endif // Skips over everything in between since the definition is now true
/* concAbstFactory.h */
#include "productA.h"
#include "productB.h"
using namespace std;
class concAbstFactory : abstractFactory
...etc... See the problem?
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Hi Sirrius,
The problem was very well described by Ryan.
The solution to fix your compilation error is to delete both #include statements.
Here is an example of a simple yet correct way to include header files like your are trying to do:
File ClassA.h:
#ifndef CLASSA_H
#define CLASSA_H
#include "ClassB.h"
#include "ClassA.h"
class a
{ ... };
#endif
File ClassB.h:
#ifndef CLASSB_H
#define CLASSB_H
#include "ClassA.h"
class b : public a
{ ... };
#endif
If you want to derive other classes from concAbstFactory then simply include "concAbstFactory.h" in the header files for those new derived classes. Your base classes should not have any knowledge of your derived classes.
Hope this helps.
Eric
|
|
|
|