Hi all,
I figured out how to load fonts directly from font files, so I'll share my
story and hope this helps someone else!
##########################################
use Win32::API;
# First, export the AddFontResource function:
my $addFontResource = Win32::API->new( 'gdi32', 'AddFontResource', 'P', 'I'
);
# Next, call the function on the desired font file. In my case, the font
file
# is in the same directory as my script:
$addFontResource->Call("Kristen ITC.ttf");
# The font is now in the system font table and can be called by name
("Kristen
# ITC" in this example) as if it were installed in the %windir%\Fonts
folder:
my $kristenITC = Win32::GUI::Font->new
(
-name => "Kristen ITC",
-size => 14,
-bold => 1,
);
##########################################
My problem was actually a fundamental misunderstanding of .lib files versus
.dll files. I was trying to call Win32::API on Gdi32.lib when I should have
been calling it on gdi32.dll! Apparently .lib files just provide
information/references for .dll files. So, when you find a really cool
function in MSDN that references a .lib file (Gdi32.lib in my case), check
to see if you have the .dll version of the file (gdi32.dll in my case).
-Rob
________________________________________
From: Perl Rob [mailto:pe...@co...]
Sent: Friday, July 06, 2007 8:54 PM
To: 'Win32 GUI Users Mailing List'
Subject: Create font object from file?
Hi,
Is it possible to create a Win32::GUI::Font object directly from a font file
(e.g. "arial.ttf")? If not, does anyone have a good copy of Gdi32.lib? It
has a function called AddFontResource() (which I could load with Win32::API)
that's exactly what I'm looking for, but my Gdi32.lib file throws an error
that it's not a valid image file and may be corrupt.
Thanks,
Rob
|