vcl里是怎么封装EnumFontFamilies,EnumFontFamiliesEx,最好能给个例子。
反正不管怎样,如何才能在delphi中得到系统字体信息?????????????

解决方案 »

  1.   

    function EnumFontFamiliesProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
      FontType: Integer; Data:Pointer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} export; {$ENDIF}function EnumFontFamiliesProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
      FontType: Integer; Data:Pointer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} export; {$ENDIF}  procedure AddToList(const aValue:String);
      var
        i, IntValue:Integer;
      begin
        i:=0;
        IntValue := StrToInt(AValue);
        with TStrings(Data) do
        begin
          while (i < Count) do
            if IntValue >= StrToInt(Strings[i]) then Inc(i)
            else Break;
          Insert(i, aValue);
        end;
      end;var
      i: Integer;
      c: String;
    const
      csizes:array[0..MaxStdSizes-1] of Integer=(8,9,10,11,12,14,16,18,20,
                                                 22,24,26,28,36,48,72);
    begin
      result:=0;
      with TStrings(Data) do
      begin
        if ((FontType and TRUETYPE_FONTTYPE) = TRUETYPE_FONTTYPE) or (FontType in [0,2]) then
        begin
          For i := 0 to (MaxStdSizes - 1) do Add(IntToStr(Csizes[i]));
          result := 0
        end;    if ((FontType and RASTER_FONTTYPE) = RASTER_FONTTYPE) then
        with TextMetric do
        begin
          C := IntToStr(MulDiv((tmHeight-tmInternalLeading), 72 , VRES));
          if IndexOf(c) = -1 then AddToList(c);
          result := 1;
        end;
      end
    end;
      

  2.   

    这样调用
    var
      buffer:array[0..255] of Char;
      DC:HDC;
    begin
      with lbxFontSize do
      begin
        Items.Clear;
        DC:=GetDC(0);
        Items.BeginUpdate;
        try
          StrPCopy(Buffer, FFontName);
          vres := GetDeviceCaps(DC, LOGPIXELSY);
          EnumFontFamilies(DC, Buffer, @EnumFontFamiliesProc, LongInt(Items));
        finally
          ReleaseDC(0, DC);
          Items.EndUpdate;
        end;
      end;
      

  3.   

    FFontName是什么?
    还有vres=?