|
hello,
i am created client/server application,in server iam taking video file from the hard disk then sending to client.In client side i am reciving video data and writing into file(test.m4v) then doing decompressio,rendering using AVCODEC lib funtions.(in windows using vc++)
now i am trying without writing into file(test.m4v)directly can i take buffer then decompress it and render it.
tell me what i have to do.
thanks
AMK
|
|
|
|
|
Hi Experts,
How can I create a shell context menu for files,folders,drives and recycle bin? what is the steps I have to follow?
Thanx in advance.
|
|
|
|
|
|
Hello Friends,
I developed a SDI application,in that i splitted the window.
ie:one view & 3 forms.
In one of the my form created a button as Preview.
Im calling printpreview from main window.using CView::OnFile......
But it hangs, can anybody tell mr how to do it.
thanks in advance.
Reagards
Shiva
|
|
|
|
|
When you create SDI/MDI with FormView using wizard, it will tell FormView can use printing support (Maybe that's the problem).
If I am not wrong, there is tutorial how to use print (form view) in code project.
Good Luck
|
|
|
|
|
I created the SDI with the simple View as base class.
I added the forms to it.
But I want to call the OnFilePrintpreview from one of the forms.
One more thing : I want to preview the content of only simple view
not form..
Reagards
Shiva
|
|
|
|
|
See this[^] does any help?
|
|
|
|
|
I can use classwizard->message Maps->message add OnInitDialog,
but in vc8:dialog property->message, no WM_INITDIALOG, why?
|
|
|
|
|
I believe MSFT changed it to Virtual Function since VC6. Check in the Overrides tab.
If it is changed in VC6, I dont know why it's still showing as message map, Anyway it will not make any entries in you message map even if add the message handler
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
See if this helps.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Gents,
now a more serious question.
There is a small application i would like to trick, it opens up the log file with CreateFileA and
uses WriteFile from application.dll file to store the data.
I have already injected my dll into the exe file, and i am able to catch and replace the
CreateFileA - so that i am not pointing to create a filename but i wanted to redirect the
WriteFile entries to the named pipe.
Looks good, the pipe is created but no data is being sent out - i believe because WriteFile is invoked not from exe file, but from application.dll.
Is there any chance for me to hook into that WriteFile ?
Ps.
I thought that when CreateFile is pointed to pipe, the WriteFile also will store the data there via the Handle..even if invoked from separate dll.
|
|
|
|
|
Sometimes this article can help you out: API Hooking Revealed[^]
If you have copy of Programming Application for Windows by Jeffery Richter, it clearly explains about DLL Injection and API Hooking.
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
Sarath,
thats great, but please read my question.
When a program uses CreateFile from itself ( exe ) - i am unable to hook into that (CreateFile).
When it uses a WriteFile ( which is in application.dll ) i am unable to hook ?
Seems like when a Api call is used by the DLL not EXE, hooking is not possible?
Is there any difference ?
|
|
|
|
|
int01h wrote: Seems like when a Api call is used by the DLL not EXE
I think you have hooked all the API's used by the exe only. In your case after hooking the WriteFile() function in the exe, you should take each depended dll of it and do the same.
|
|
|
|
|
I need some information about deriving a non-template class from a template class (I've already thought about whether I really need to do this, and it is the best solution in my case).
I have a base class which is also a template class:
template <class T>
class Base {
public:
Base();
Base(INT);
virtual ~Base();
virtual INT Base<T>::f();
virtual INT Base<T>::g(INT);
INT n;
T* x;
};
and for its methods I make sure to use the necessary syntax, i.e.:
template <class T> INT Base<T>::g(INT num)
{
// (code here)
}
But I also have some classes which are derived from the template class, such as:
class Derived : public Base<INT> {
public:
Derived(): Base() {};
Derived(INT): Base() {};
~Derived();
INT h(FLOAT);
};
When linking, I get error messages saying there are unresolved externals. Specifically, the INT versions of the template class methods are unresolved.
I haven't been able to find enough documentation on everything I need to do when deriving classes from template classes, and am undoubtedly missing something somewhere. Can anyone help?
Thanks!
|
|
|
|
|
Californian2 wrote: template <class t="">
class Base {
public:
Base();
Base(INT);
virtual ~Base();
virtual INT Base<t>::f();
virtual INT Base<t>::g(INT);
INT n;
T* x;
};
the following lines are wrong:
virtual INT Base<t>::f();
virtual INT Base<t>::g(INT);
</t></t>
Is it a typo?
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.
[my articles]
|
|
|
|
|
Hi,
Thanks for responding! I think the lines in my original question were:
virtual INT Base<T>::f();
virtual INT Base<T>::g(INT);
There seems to be some problem with copying the brackets <> to or from the message board.
Thanks for any help you can give!
|
|
|
|
|
You havenot provided any implementation for template base class but for fuction "g".
I dont know the details of implementation but still doubt on the predefined return type (INT) in the template class. You've not using T for any other purpose(except the pointer X).
Anyway the template class generate during compilation and at the time of linking the linker could not find definition for the functions declared for the class. Otherwise you will have to make the virtual function as "pure virtual function".
Are you trying to do something as follows?
<br />
<br />
template <class t=""><br />
class Base<br />
{<br />
public:<br />
Base();<br />
virtual ~Base(){};<br />
virtual T f(){};<br />
virtual T g(T );<br />
int n;<br />
T* x;<br />
};<br />
<br />
template <class t=""><br />
T Base<t>::g(T num)<br />
{<br />
}<br />
<br />
class Derived : public Base<int><br />
{<br />
public:<br />
Derived() : Base<int>() {};<br />
Derived(int): Base<int>() {};<br />
~Derived(){};<br />
int h(float){};<br />
};<br />
</int></int></int></t></class></class>
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
Hi,
Thanks for replying!
Actually, no, that's not what I'm trying to do. I make use of the pointer x within the methods f, g, and h, but I also use other variables which are INT's in all cases (that is, no matter whether x is an INT*, FLOAT*, etc.). So it doesn't really matter whether T shows up again in the class definition.
Also, I actually do have implementations for all of the class methods in my code, I just showed one (g) to make my question shorter.
I happened to post another message at the same time you were posting this one, in which I say my problem may be due to a need for explicit instantiation because my classes are in a static library.
Thank you for your suggestions!
|
|
|
|
|
Californian2 wrote: I happened to post another message at the same time you were posting this one, in which I say my problem may be due to a need for explicit instantiation because my classes are in a static library.
You mean you have provided implementation in some other CPP file (and created as static library)?
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
My template class and the classes which are derived from it are declared in a .h file, and the implementation (including the method, g, which I showed in my question) is done in a separate .cpp file. These files are part of a static library.
I have a separate application which uses the classes from the library. When I link the application, I get the errors I mentioned.
|
|
|
|
|
There it is!!!
If I properly understood you question, C++ not allows you to separate declaration and definition of template methods.
Please See C++ FAQ[^]
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
Yeah, I've heard that too. I did get it to work with separate declaration and definition files in the end, though, so maybe that information is outdated now?
It turned out I needed to use explicit instantiation in my library. In my .cpp file, I added the line:
template class Base<INT>;
I wrote a longer explanation in a news item, below.
Thank you!
|
|
|
|
|
I neglected to mention that my template class and derived class are in a static library, so possibly the problem is that I need to do explicit instantiation of the template class.
However, using template class Base<INT>; gives me warning C4661, no suitable definition provided for explicit template instantiation request.
How do I explicitly instantiate a template class in a library?
|
|
|
|
|
It turns out that using template class Base<INT>; is the answer after all.
For anyone else out there with the same question, here is what finally worked for me. In a .h file, the template class and derived class are declared as follows:
template <class T>
class Base {
public:
Base();
Base(INT);
virtual ~Base();
virtual INT f();
virtual INT g(INT);
INT n;
T* x;
};
class Derived : public Base<INT> {
public:
Derived(): Base() {};
Derived(INT): Base() {};
~Derived();
INT h(FLOAT);
};
The implementation is done in a separate .cpp file. Use explicit instantiation, that is, use the following line in that file:
template class Base<INT>;
and for the template class methods, use:
template <class T> INT Base<T>::f()
{
// (code here)
}
template <class T> INT Base<T>::g(INT num)
{
// (code here)
}
The derived class methods use the usual syntax for any class method.
That's it!
As a side note, the compiler and linker don't complain (and the application runs fine) if I declare the template class methods using either virtual INT Base<T>::g(INT); or virtual INT g(INT); , that is, if the class declaration is either:
template <class T>
class Base {
public:
// CONSTRUCTORS:
Base();
Base(INT);
// DESTRUCTOR:
virtual ~Base();
// METHODS:
virtual INT Base<T>::f();
virtual INT Base<T>::g(INT);
// DATA:
INT n;
T* x;
};
or:
template <class T>
class Base {
public:
Base();
Base(INT);
virtual ~Base();
virtual INT f();
virtual INT g(INT);
INT n;
T* x;
};
I don't know where I picked up the syntax for the first version, though, so I used the second version in the end.
Thanks to those who made comments!
|
|
|
|