Win32 API 日本語リファレンス
ホームGlobalization › MIMECPINFO

MIMECPINFO

構造体
サイズx64: 572 バイト / x86: 572 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
dwFlagsDWORD4+0+0コードページの特性を示すフラグ群。
uiCodePageDWORD4+4+4コードページ番号。
uiFamilyCodePageDWORD4+8+8このコードページが属するファミリコードページ番号。
wszDescriptionWCHAR128+12+12コードページの説明文字列(Unicode)。
wszWebCharsetWCHAR100+140+140Webコンテンツ用の文字セット名。
wszHeaderCharsetWCHAR100+240+240メールヘッダ用の文字セット名。
wszBodyCharsetWCHAR100+340+340メール本文用の文字セット名。
wszFixedWidthFontWCHAR64+440+440推奨される等幅フォント名。
wszProportionalFontWCHAR64+504+504推奨されるプロポーショナルフォント名。
bGDICharsetBYTE1+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 Structure
import 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: uint8
struct 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