ホーム › Globalization › MIMECPINFO
MIMECPINFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwFlags | DWORD | 4 | +0 | +0 | コードページの特性を示すフラグ群。 |
| uiCodePage | DWORD | 4 | +4 | +4 | コードページ番号。 |
| uiFamilyCodePage | DWORD | 4 | +8 | +8 | このコードページが属するファミリコードページ番号。 |
| wszDescription | WCHAR | 128 | +12 | +12 | コードページの説明文字列(Unicode)。 |
| wszWebCharset | WCHAR | 100 | +140 | +140 | Webコンテンツ用の文字セット名。 |
| wszHeaderCharset | WCHAR | 100 | +240 | +240 | メールヘッダ用の文字セット名。 |
| wszBodyCharset | WCHAR | 100 | +340 | +340 | メール本文用の文字セット名。 |
| wszFixedWidthFont | WCHAR | 64 | +440 | +440 | 推奨される等幅フォント名。 |
| wszProportionalFont | WCHAR | 64 | +504 | +504 | 推奨されるプロポーショナルフォント名。 |
| bGDICharset | BYTE | 1 | +568 | +568 | 対応するGDI文字セット値。 |
各言語での定義
#include <windows.h>
// MIMECPINFO (x64 572 / x86 572 バイト)
typedef struct MIMECPINFO {
DWORD dwFlags;
DWORD uiCodePage;
DWORD uiFamilyCodePage;
WCHAR wszDescription[64];
WCHAR wszWebCharset[50];
WCHAR wszHeaderCharset[50];
WCHAR wszBodyCharset[50];
WCHAR wszFixedWidthFont[32];
WCHAR wszProportionalFont[32];
BYTE bGDICharset;
} MIMECPINFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MIMECPINFO
{
public uint dwFlags;
public uint uiCodePage;
public uint uiFamilyCodePage;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public string wszDescription;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)] public string wszWebCharset;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)] public string wszHeaderCharset;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)] public string wszBodyCharset;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string wszFixedWidthFont;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string wszProportionalFont;
public byte bGDICharset;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MIMECPINFO
Public dwFlags As UInteger
Public uiCodePage As UInteger
Public uiFamilyCodePage As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=64)> Public wszDescription As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=50)> Public wszWebCharset As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=50)> Public wszHeaderCharset As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=50)> Public wszBodyCharset As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public wszFixedWidthFont As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public wszProportionalFont As String
Public bGDICharset As Byte
End Structureimport ctypes
from ctypes import wintypes
class MIMECPINFO(ctypes.Structure):
_fields_ = [
("dwFlags", wintypes.DWORD),
("uiCodePage", wintypes.DWORD),
("uiFamilyCodePage", wintypes.DWORD),
("wszDescription", ctypes.c_wchar * 64),
("wszWebCharset", ctypes.c_wchar * 50),
("wszHeaderCharset", ctypes.c_wchar * 50),
("wszBodyCharset", ctypes.c_wchar * 50),
("wszFixedWidthFont", ctypes.c_wchar * 32),
("wszProportionalFont", ctypes.c_wchar * 32),
("bGDICharset", ctypes.c_ubyte),
]#[repr(C)]
pub struct MIMECPINFO {
pub dwFlags: u32,
pub uiCodePage: u32,
pub uiFamilyCodePage: u32,
pub wszDescription: [u16; 64],
pub wszWebCharset: [u16; 50],
pub wszHeaderCharset: [u16; 50],
pub wszBodyCharset: [u16; 50],
pub wszFixedWidthFont: [u16; 32],
pub wszProportionalFont: [u16; 32],
pub bGDICharset: u8,
}import "golang.org/x/sys/windows"
type MIMECPINFO struct {
dwFlags uint32
uiCodePage uint32
uiFamilyCodePage uint32
wszDescription [64]uint16
wszWebCharset [50]uint16
wszHeaderCharset [50]uint16
wszBodyCharset [50]uint16
wszFixedWidthFont [32]uint16
wszProportionalFont [32]uint16
bGDICharset byte
}type
MIMECPINFO = record
dwFlags: DWORD;
uiCodePage: DWORD;
uiFamilyCodePage: DWORD;
wszDescription: array[0..63] of WideChar;
wszWebCharset: array[0..49] of WideChar;
wszHeaderCharset: array[0..49] of WideChar;
wszBodyCharset: array[0..49] of WideChar;
wszFixedWidthFont: array[0..31] of WideChar;
wszProportionalFont: array[0..31] of WideChar;
bGDICharset: Byte;
end;const MIMECPINFO = extern struct {
dwFlags: u32,
uiCodePage: u32,
uiFamilyCodePage: u32,
wszDescription: [64]u16,
wszWebCharset: [50]u16,
wszHeaderCharset: [50]u16,
wszBodyCharset: [50]u16,
wszFixedWidthFont: [32]u16,
wszProportionalFont: [32]u16,
bGDICharset: u8,
};type
MIMECPINFO {.bycopy.} = object
dwFlags: uint32
uiCodePage: uint32
uiFamilyCodePage: uint32
wszDescription: array[64, uint16]
wszWebCharset: array[50, uint16]
wszHeaderCharset: array[50, uint16]
wszBodyCharset: array[50, uint16]
wszFixedWidthFont: array[32, uint16]
wszProportionalFont: array[32, uint16]
bGDICharset: uint8struct MIMECPINFO
{
uint dwFlags;
uint uiCodePage;
uint uiFamilyCodePage;
wchar[64] wszDescription;
wchar[50] wszWebCharset;
wchar[50] wszHeaderCharset;
wchar[50] wszBodyCharset;
wchar[32] wszFixedWidthFont;
wchar[32] wszProportionalFont;
ubyte bGDICharset;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MIMECPINFO サイズ: 572 バイト(x64)
dim st, 143 ; 4byte整数×143(構造体サイズ 572 / 4 切り上げ)
; dwFlags : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; uiCodePage : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; uiFamilyCodePage : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; wszDescription : WCHAR (+12, 128byte) varptr(st)+12 を基点に操作(128byte:入れ子/配列)
; wszWebCharset : WCHAR (+140, 100byte) varptr(st)+140 を基点に操作(100byte:入れ子/配列)
; wszHeaderCharset : WCHAR (+240, 100byte) varptr(st)+240 を基点に操作(100byte:入れ子/配列)
; wszBodyCharset : WCHAR (+340, 100byte) varptr(st)+340 を基点に操作(100byte:入れ子/配列)
; wszFixedWidthFont : WCHAR (+440, 64byte) varptr(st)+440 を基点に操作(64byte:入れ子/配列)
; wszProportionalFont : WCHAR (+504, 64byte) varptr(st)+504 を基点に操作(64byte:入れ子/配列)
; bGDICharset : BYTE (+568, 1byte) poke st,568,値 / 値 = peek(st,568)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MIMECPINFO
#field int dwFlags
#field int uiCodePage
#field int uiFamilyCodePage
#field wchar wszDescription 64
#field wchar wszWebCharset 50
#field wchar wszHeaderCharset 50
#field wchar wszBodyCharset 50
#field wchar wszFixedWidthFont 32
#field wchar wszProportionalFont 32
#field byte bGDICharset
#endstruct
stdim st, MIMECPINFO ; NSTRUCT 変数を確保
st->dwFlags = 100
mes "dwFlags=" + st->dwFlags