跳轉到內容

Palm OS/C/字型程式設計

來自華夏公益教科書,開放的書籍,開放的世界

定義和使用字型

[編輯 | 編輯原始碼]

使用以下方法使您的應用程式可以使用字型

 FontPtr  font = MemHandleLock( DmGetResource('NFNT', TinyFont));
 FntDefineFont( 0x80, font);

..其中TinyFont是字型資源 ID,可使其可用。

要設定當前字型(由顯式繪圖函式遵守,但不會自動由所有控制元件使用,這些控制元件儲存對它們應使用的字型的獨立引用)

 FntSetFont( 0x80);


根據字型大小計算位置

[編輯 | 編輯原始碼]
  • FntCharsWidth計算傳遞給它的文字的畫素寬度
  • FntCharHeight提供字型的 高度,它是 *升高* 和 *下降* 的總和,不包括您可能希望在文字行之間留出的任何空格
  • FntAverageCharWidth儘管它的名字,但它提供了最寬字元的畫素寬度。


工作示例

[編輯 | 編輯原始碼]

此程式碼段依賴於 字型資源 。

#include <PalmOS.h>
#include "Fonts.h"


UInt32 PilotMain( UInt16 cmd, void *cmdPBP, UInt16 launchFlags)
{
  EventType  event;
  FontPtr    font;
  char       *msg;
  UInt16     msgLen;
  Coord      y;
  Coord      x;

  if ( sysAppLaunchCmdNormalLaunch == cmd)
  {
    font = MemHandleLock( DmGetResource('NFNT', TinyFont));
    FntDefineFont( 0x80, font);
    FntSetFont( 0x80);

    // locate the text in the middle of the screen
    msg    = "Hello, world!";
    msgLen = StrLen( msg);
    x      = (160 - FntCharsWidth(msg, msgLen)) / 2;
    y      = (160 - FntCharHeight()) / 2;
    WinDrawChars( msg, msgLen, x, y);

    do {
      EvtGetEvent( &event, evtWaitForever);

      SysHandleEvent( &event);

    } while (event.eType != appStopEvent);
  }

  return 0;
}

有關可能對 Palm 程式設計師有用的字型的詳細資訊,請參見 Palm OS/小型字型 。

華夏公益教科書