CHARFORMAT

リッチエディットコントロールにおける文字の書式に関する情報を格納します。

RichEdit 2.0: CHARFORMAT2構造体はリッチエディット2.0のためにCHARFORMAT構造体を拡張したものです。リッチエディット2.0以降ではEM_GETCHARFORMATメッセージおよびEM_SETCHARFORMATメッセージでどちらの構造体でも使用することができます。

#define  LF_FACESIZE     32

typedef struct _charformat {
    UINT  cbSize;                  // 構造体のサイズ(=60)
    DWORD dwMask;                  // 有効メンバ
    DWORD dwEffects;               // 文字の効果
    LONG  yHeight;                 // 文字の高さ
    LONG  yOffset;                 // ベースラインからのオフセット
    COLORREF  crTextColor;         // 文字の色
    BYTE  bCharSet;                // キャラクタセット
    BYTE  bPitchAndFamily;         // フォントファミリとピッチ
    TCHAR szFaceName[LF_FACESIZE]; // フォント名
} CHARFORMAT;

メンバ

cbSize

構造体のサイズを指定します。ANSI版CHARFORMAT構造体のサイズは60バイトです。(アライメント処理により構造体の境界が4バイト単位に配置されているため、58バイトではなく60バイトになります。) この構造体をリッチエディットコントロールに渡す前にこのメンバを設定しておかなければなりません。

dwMask

有効な情報を持つメンバや設定する属性を指定します。0または以下の値の組み合わせになります。

0x00000001 (CFM_BOLD)
dwEffectsメンバのCFE_BOLD値が有効
0x00000002 (CFM_ITALIC)
dwEffectsメンバのCFE_ITALIC値が有効
0x00000004 (CFM_UNDERLINE)
dwEffectsメンバのCFE_UNDERLINE値が有効
0x00000008 (CFM_STRIKEOUT)
dwEffectsメンバのCFE_STRIKEOUT値が有効
0x00000010 (CFM_PROTECTED)
dwEffectsメンバのCFE_PROTECTED値が有効
0x08000000 (CFM_CHARSET)
bCharSetメンバが有効
0x10000000 (CFM_OFFSET)
yOffsetメンバが有効
0x20000000 (CFM_FACE)
szFaceNameメンバが有効
0x40000000 (CFM_COLOR)
crTextColorメンバとdwEffectsメンバのCFE_AUTOCOLOR値が有効
0x80000000 (CFM_SIZE)
yHeightメンバが有効
dwEffects

文字の効果を指定します。0または以下の値の組み合わせで指定します。dwMaskメンバで指定されている文字効果のみ有効です。

0x0001 (CFE_BOLD)

太字体で表示されます。

0x0002 (CFE_ITALIC)

イタリック体で表示されます。

0x0004 (CFE_UNDERLINE)

アンダーラインを引きます。

0x0008 (CFE_STRIKEOUT)

取り消し線を引きます。

0x0010 (CFE_PROTECTED)

文字が保護されます。保護されている文字が変更されようとするとき、EN_PROTECTED通知メッセージが送られます。

0x2000 (CFE_DISABLED)

RichEdit 2.0以降: 3/4ポイントまたは1ピクセルのオフセットに影が表示されます。

0x40000000 (CFE_AUTOCOLOR)

文字色がGetSysColor関数にCOLOR_WINDOWTEXTを指定したとき取得される色になります。

yHeight

文字の高さをtwip単位で指定します(1twip=1/20point=1/1440inch)。dwMaskメンバでCFM_SIZEが指定されているときのみ有効です。

yOffset

ベースラインからの文字のオフセットを twip 単位で指定します。正数を指定すると上付き文字に、負数を指定すると下付き文字になります。dwMaskメンバでCFM_OFFSETが指定されているときのみ有効です。

crTextColor

文字色を指定します。dwEffectsメンバでCFE_AUTOCOLORを指定している場合はこのメンバは無視されます。dwMaskメンバでCFM_CHARSETが指定されているときのみ有効です。

bCharSet

文字セットの値を指定します。LOGFONT構造体のlfCharSetメンバで指定される値のいずれかを指定することができます。dwMaskメンバでCFM_CHARSETが指定されているときのみ有効です。

bPitchAndFamily

フォントファミリとピッチを指定します。このメンバはLOGFONT構造体のlfPitchAndFamily メンバと同じです。

szFaceName

フォント名を表す文字列を指定します。

解説

この構造体はEM_GETCHARFORMATメッセージおよびEM_SETCHARFORMATメッセージで使用されます。

対応情報

Windows 95 以降 / Windows NT 4.0 以降

変数との対応(ANSI版の場合)

HSP変数 メンバ
メンバ名 オフセット サイズ
cfm.0 cbSize ( = 60 ) 0 4
cfm.1 dwMask 4 4
cfm.2 dwEffects 8 4
cfm.3 yHeight 12 4
cfm.4 yOffset 16 4
cfm.5 crTextColor 20 4
cfm.6
1バイト目 bCharSet 24 1
2バイト目 bPitchAndFamily 25 1
3バイト目 szFaceName 26 32
4バイト目
cfm.7
cfm.14 1バイト目
2バイト目
3バイト目 未使用(アライメント処理)
4バイト目

構造体にbCharSet, bPitchAndFamily, szFaceNameを格納するには

bCharSet = (キャラクタセットの値)
bPitchAndFamily = (フォントファミリの値)
szFaceName = "(フォント名)"
cfm.6 = bCharSet | ( bPitchAndFamily << 8 )
;  poke cfm, 24, bCharSet
;  poke cfm, 25, bPitchAndFamily
;  とすることもできます
(w)poke cfm, 26, szFaceName

構造体からbCharSet, bPitchAndFamily, szFaceNameを取得するには

bCharSet = cfm.6 & $FF
bPitchAndFamily = ( cfm.6 >> 8 ) & $FF
;  peek bCharSet, cfm, 24
;  peek bPitchAndFamily, cfm, 25
;  とすることもできます
(w)peek szFaceName, cfm, 26   ; szFaceNameは文字列変数