|
Hello Mark, thanks for your reply.
I've just read this at another forum. someone had the same problem as me.
this is a part from public paper from 1997
"An example of incomplete API functionality can be found in the video capture API. Although it is possible to set the video source using a dialog box displayed to the user by calling the capDlgVideoSource function, doing the same from within an application without user mediation is, as far as we know, impossible. "
if this is true, it has never been fixed.
My webcam works when i use the capDlgVideoSource dialog.
But i want it without this.
At this forum someone wrote that the wdm handles more devices. so for me that means i can connect to the driver but if i have more than one device theres no other way getting acces to my webcam using this cap dialog.
the cap functions seems really easy to handle for me
greetings,
Robert
|
|
|
|
|
I don't know what to tell you.
Support for VFW was dropped many years ago. It's still there to support
legacy applications and that's it.
Probably your only choices are:
1) let the user select the device from the diaolg. I've never seen a driver that didn't persist these
settings.
2) Use a more modern video acquisition method.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi.
Just curious if anyone knows an easy way to change the height of a CStatusBar?
Thanks in advance.
Stan the Man
|
|
|
|
|
Stan the man wrote: an easy way
Move your chair closer?
I haven't tried the following, but if you use CStatusBar::GetStatusCtrl, you can then use CStatusCtrl::SetMinHeight, which sounds like it should help.
The msdn example for it has it being used in the OnCreate method of it's parent, which is before everything gets finally positioned, so probably a good time.
Iain.
Iain Clarke appearing in spite of being begged not to by CPallini.
|
|
|
|
|
Hi Iain.
That did it.
Thanks.
Stan the man
|
|
|
|
|
Hi All,
I want to use CFtpConnection to download and upload some files to some server.
But i want to do it in asynchronous way.
What i mean is to give some function address and in the end of upload/download this function will be call.
How can i do it ?
Thanks.
|
|
|
|
|
Great job for a worker thread.
You could use CFtpConnection::GetFile()/CFtpConnection::PutFile() on a separate thread.
As always, for more control over the file transfers, you can use
CFtpConnection::OpenFile()/CInternetFile::Read()/CInternetFile::Write().
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
|
|
Hello everyone,
For dllimport KB from Microsoft,
http://support.microsoft.com/kb/132044/en-us
It is mentioned,
--------------------
If 'func1' exists in another DLL, the linker can't resolve this directly because it has no way of knowing what the address of 'func1' is.
--------------------
My question is, if we are using implicit linking, the address of import function should be in the import library (.lib file) of the DLL and since the import library is as an input parameter to linker, the linker should know the address at link time?
thanks in advance,
George
|
|
|
|
|
George_George wrote: the address of import function should be in the import library (.lib file) of the DLL
import library doesnot have address of the function, it has code to resolve the address at load time.
|
|
|
|
|
Thanks Rajkumar,
I want to learn more about,
1. what are in import library files;
2. how it solves the address at load time.
Any more description or recommended reading please?
regards,
George
|
|
|
|
|
[^] gives the idea i think.
|
|
|
|
|
Thanks Rajkumar,
I have read the link before. My question is,
--------------------
If func1 exists in another DLL, the linker can't resolve this directly because it has no way of knowing what the address of
--------------------
I am not sure whether the address of the function is contained in import library file, which is input to the linker? What is the content/format of import library file?
regards,
George
|
|
|
|
|
George_George wrote: I am not sure whether the address of the function is contained in import library file, which is input to the linker
IMHO, the link can clarify this,
anyway i extract the portion,
So now this code:
__declspec(dllimport) void func1(void);
void main(void)
{
func1();
}
generates this instruction:
call DWORD PTR __imp_func1
There is no thunk and no
jmp
Here
__imp_func1
is the address for
func1's slot in the import address table of the .EXE file. All the addresses are thus known to the linker. The loader only has to update the .EXE file's import address table at load time for everything to work correctly.
loader updated the IAT, and already __declspec(dllimport) generates code to point to the IAT slot....
George_George wrote: What is the content/format of import library file?
start a new thread so that may get noticed by others
Iam not familiar with format, sorry i just care about concepts for similar context.
modified on Monday, February 18, 2008 9:54 AM
|
|
|
|
|
|
George_George wrote: I have followed your comments to start a new thread
I comment, to get noticed your new question by others, i am not familiar with the format of the object file. may be my wrong idea. Any way i assume u got the concept behind "dllimport"
|
|
|
|
|
Sorry, Rajkumar! I may not make myself understood enough, pther than the exact format of import library, I mean how linker utilize the import library to generate two forms of call statement, one for the case with dllimport and one for the case without dllimport.
I am wondering what are contained in the import library so that the linker could utilize it to generat both forms.
regards,
George
|
|
|
|
|
George_George wrote: I mean how linker utilize the import library to generate two forms of call statement
George_George wrote: one for the case with dllimport
how call statement is mapped to indirect pointer to IAT slot is extracted in the previous reply.
George_George wrote: one for the case without dllimport
without dllimport means the function is statically linked, that is linker knows the address of the function,
Without __declspec(dllimport), given this code:
void func1(void);
void main(void)
{
func1();
}
the compiler generates code that looks like this:
call func1
and the linker translates the call into something like this:
call 0x4000000 ; The address of 'func1'.
the address of the function is already known to the linker.
If
func1
exists in another DLL, the linker can't resolve this directly because it has no way of knowing what the address of
func1
is.
and the remaining section decribes the technique used for dllimport.
|
|
|
|
|
Thanks Rajkumar,
Why import library can not decide the address of the import function? Because of the address can not be decide until load time -- DLL rebase or?
regards,
George
|
|
|
|
|
Hello everyone,
Sometimes, we allocate array of zero elements. I am wondering for what regualr purpose will we do that?
I have tested that in Visual Studio 2008, it runs ok.
int main()
{
char* buf = new char [0];
delete[] buf;
return 0;
}
thanks in advance,
George
|
|
|
|
|
It works, but it's Microsoft specific, you may have problem on different platforms.
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
modified on Sunday, February 17, 2008 9:51 AM
|
|
|
|
|
i think it is C++ standard,
§5.3.4/7: "When the value of the expression in a direct-new-declarator is zero, the allocation function is called to allocate an array with no elements."
|
|
|
|
|
You're right. Maybe I was too drunk.
the following one is the non-standard I was (wrongly) addressing
struct A
{
int a[0];
};
Thanks.
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
|
|
|
|