comctl32.dll: Running siap and modules under wine, first steps

Alex Villací­s Lasso a_villacis at palosanto.com
Wed Sep 28 12:54:46 CDT 2005


Robert Shearman wrote:

> Alex Villací­s Lasso wrote:
>
>> --- wine-20050830-cvs/dlls/oleaut32/typelib.c   2005-09-21 
>> 10:39:22.000000000 -0500
>> +++ wine-20050830-cvs-patch/dlls/oleaut32/typelib.c     2005-09-24 
>> 20:34:32.000000000 -0500
>> @@ -5207,9 +5207,11 @@
>>     ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
>>     HRESULT result = E_FAIL;
>>
>> -    if (hRefType == -1 &&
>> +    if ((hRefType == -1 &&
>>        (((ITypeInfoImpl*) This)->TypeAttr.typekind   == 
>> TKIND_DISPATCH) &&
>> -       (((ITypeInfoImpl*) This)->TypeAttr.wTypeFlags &  
>> TYPEFLAG_FDUAL))
>> +       (((ITypeInfoImpl*) This)->TypeAttr.wTypeFlags &  
>> TYPEFLAG_FDUAL)) ||
>> +       ((((ITypeInfoImpl*) This)->TypeAttr.typekind   == 
>> TKIND_DISPATCH) &&
>> +             (((ITypeInfoImpl*) This)->TypeAttr.wTypeFlags &  
>> TYPEFLAG_FDISPATCHABLE)))
>>     {
>>          /* when we meet a DUAL dispinterface, we must create the 
>> interface
>>          * version of it.
>>
>> This patch executes the "create interface" code when typekind == 
>> TKIND_DISPATCH
>> and wTypeFlags has TYPEFLAG_FDISPATCHABLE, regardless of the value of 
>> hRefType,
>> in addition to the previous condition. With this patch, the native 
>> oleaut32
>> requirement is removed. The typelib test still passes - not that it 
>> actually
>> tests the change in code (more on this later). 
>
>
>
> This patch looks pretty good, but I can't see the difference between 
> TKIND_DISPATCH and TYPEFLAG_FDISPATCHABLE on MSDN. They look like they 
> mean the same thing. Have you seen a typelib with one and not the 
> other? Also, you can remove all of the casts of This while you're 
> changing that if statement because they are unnecessary.

I need to read the Automation guide throughly. Back when I was trying to 
make this app work, the telltale sign was the "Can't find pRefType for 
ref XXX" right before the crash. Since I was at my home machine, and I 
don't have an Internet connection at home, I could not check whether 
TKIND_DISPATCH and TYPEFLAG_FDISPATCHABLE mean the same thing or should 
be specified together. I can send the (reverse-engineered with OLEVIEW) 
typelib for DBGRID32.OCX, if that might show something.

I already sent the other two patches to wine-patches. I hope they get 
commited.

Alex Villacís Lasso




More information about the wine-devel mailing list