Importing dwmapi.dll
Ian Martinez
olivewarbler at gmail.com
Sat Sep 15 20:49:17 PDT 2012
On Sunday, 16 September 2012 at 02:22:42 UTC, jerro wrote:
> On Sunday, 16 September 2012 at 00:27:19 UTC, Ian Martinez
> wrote:
>> I'm new to D(really new, just learned it today) and I'm making
>> a little program that I want to extend the aero glass into
>> I've written this:
>> struct MARGINS {
>> int cxLeftWidth;
>> int cxRightWidth;
>> int cyTopHeight;
>> int cyBottomHeight;
>> }
>> HRESULT extendaeroglass(HWND handle,int left,int right,int
>> top,int bottom){
>> MARGINS aeromargins = {left,right,top,bottom};
>> HRESULT hr = IDOK;
>> hr = DwmExtendFrameIntoClientArea(handle,aeromargins);
>
> This line should be
>
> hr = DwmExtendFrameIntoClientArea(handle,&aeromargins);
>
>> return hr;
>> }
>> But I can't seem to figure out how to import dwmapi, I googled
>> and there was something that said I'd have to translate the
>> header file(dwmapi.h) which is 532 lines long, which I can't
>> do that well because I'm not that good at D and my C/C++ is
>> even worse and another page said I need to include the .lib
>> file(converted from COFF) in it, which I did and it still
>> won't work:
>> Error:undefined identifier DwmExtendFrameIntoClientArea
>
> The functions need to be declared if you want to use them. For
> c libraries you usually import modules that contain the
> declarations, but when there isn't one already written, you
> need to declare them yourself. You don't need to translate all
> of dwmapi.h, just the parts that you use. For
> DvmExtendFrameIntoClientArea you would do this:
>
> extern(Windows)
> HRESULT DwmExtendFrameIntoClientArea(HWND, MARGINS*);
>
> This tells the compiler that there is a functions with this
> name, parameter types, return type and using Windows name
> mangling and calling convention. The implementation of this
> function needs to be available when linking, which is why the
> .lib file is also needed.
Thank you so much!!
More information about the Digitalmars-d
mailing list