>>>I'd like to know how to get a window handle (hWnd) in order to pass to Win32 API from VFP 5.0a.
>>>
>>>The below C-code is what I've been read from one of the thread:
>>>
>>>void GetObjectWHandle(ParamBlk *parm)
>>>{
>>> HWND hWnd;
>>> MHANDLE mhWnd;
>>>
>>> mhWnd=_WGetObjectWindow(&(parm->p[0].val));
>>> hWnd=_WhToHwnd(mhWnd);
>>> _RetInt((LONG)hWnd,8);
>>>}
>>>
>>>Then, what is the parameter type sould be specified in the FoxInfo ?
>>>
>>>FoxInfo myFoxInfo[] = {
>>> {"GETHWND",(FPFI) GetObjectWHandle, 1, "I"},
>>>};
>>>
>>>Once the .Fll have been created, what should I pass to it from a VFP form ?
>>>
>>>In Visual FoxPro:
>>>
>>>Set library to fll.fll
>>>hWnd=GETHWND(Thisform) && doesn't work, type miss match
>>>
>>>hWnd=GETHWND(_screen.activeform) && doesn't work. 'ACTIVEFORM' is not && an object
>>>
>>>Thanks in advance.
>>
Hi,
Your code will work with a couple of changes.
#1. Specify the parameter type as "O" for object reference in FoxInfo. This will stop your type mismatch errors.
#2. If I remember correctly, _RetInt() truncates large #'s such as window handles.
I use the following construct instead.
_RetFloat((double)(UINT)lhwnd, 20, 0);
where lhwnd is the variable that holds the object handle to be returned.
Hope this helps,
Ned
Ned
Reality is.