FX自動売買
禁断のケーキ
じゃらん♪
さくらのVPS

公開日
2007-10-12
公開元
灰塵

PC小噺3 - Win32API思ひ付き關數解説

Win32API?

Win32APIつて何ぞ?といふ方は、申し訣有りませんがググつて下さい。此のページでは「Win32APIとは何か」を解説しません。據つて、「Win32APIが何であるか」を知つてゐる必要があります。

また、CreateWindow關數など、餘りに基本的な關數に就いては解説しません。據つて、「或る程度のWindowsプログラミングの知識」も必要になります。敷居が高くなつてしまひ、申し訣御座いません。

ウィンドウ操作とか

SetWindowLong關數・GetWindowLong關數

LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);
LONG GetWindowLong(HWND hWnd, int nIndex);

SetWindowLong

ウィンドウの情報を變更することが出來ます。

hWndにウィンドウハンドル、nIndexに變更する對象、dwNewLongにはnIndexの値に應じた新しい値を渡します。nIndexに就いて、「變更する對象」といふのは、例へばウィンドウスタイルを變更したいならGWL_STYLE定數、ウィンドウプロシージャを對象とするならGWL_WNDPROC定數をnIndexに指定します。また、dwNewLongにはnIndexに應じた適切な値を指定するべきで、例へばnIndexがGWL_STYLEならば、dwNewLongには"WS_"で始るウィンドウスタイルに關する定數を指定する必要があります。

nIndexに指定できる定數

GetWindowLong

ウィンドウの情報を取得することが出來ます。

hWndにウィンドウハンドル、nIndexに取得する對象を渡せば、その對象の値を取得することができます。

MoveWindow關數・SetWindowPos關數

BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL nRepaint);
BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);

MoveWindow

ウィンドウの移動、サイズの變更が出來ます。

hWndにウィンドウハンドル、XとYには新しい位置となる座標、nWidthにはウィンドウの新しい幅、nHeightにウィンドウの新しい高さを渡します。bRepaintをTRUEにすると、變更後にウィンドウが再描畫されます。

SetWindowPos

MoveWindowよりも柔軟に、ウィンドウの移動、サイズの變更が出來ます。

hWndにウィンドウハンドル、hWndInsertAfterに先行するウィンドウハンドル、XとYには新しい位置となる座標、cxに幅、cyに高さ、uFlagsにはオプションを渡します。hWndInsertAfterに指定するのは、先行するウィンドウハンドルですが、大抵の場合は"HWND_"で始る定數を指定し、Z軸の優先度を決めます。uFlagsには"SWP_"で始る定數を、此の關數の動作に關するオプションを指定します。

HWND_で始る定數
SWP_で始る定數

SetWindowRgn關數・GetWindowRgn關數

int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw);
int GetWindowRgn(HWND hWnd, HRGN hRgn);

SetWindowRgn

ウィンドウは指定されたリージョンの範圍外を描畫しなくなります。(丸など、特殊な形のウィンドウを作ることが出來ます)

hWndにウィンドウハンドル、hRgnに目的の形をしたリージョンを渡します。bRedrawをTRUEにすると、ウィンドウの形を變更した後に再描畫が行はれます。

GetWindowRgn

ウィンドウに指定されたリージョンを取得します。

hWndにウィンドウハンドル、hRgnにリージョンを渡します。

ChangeDisplaySettings關數

LONG ChangeDisplaySettings(LPDEVMODE lpDevMode, DWORD dwFlags);

ChangeDisplaySettings

畫面解像度を變更します。

lpDevModeには畫面モードを表すDEVMODE構造體へのポインタを、dwFlagsには變更方法を表すフラグを指定します。

DEVMODE構造體
typedef struct _devicemode{
    BCHAR dmDeviceName[CCHDEVICENAME];
    WORD dmSpecVersion;
    WORD dmDriverVersion;
    WORD dmSize;
    WORD dmDriverExtra;
    DWORD dmFields;
    union {
        struct {
            short dmOrientation;
            short dmPaperSize;
            short dmPaperLength;
            short dmPaperWidth;
        };
        POINTL dmPosition;
    };
    short dmScale;
    short dmCopies;
    short dmDefaultSource;
    short dmPrintQuality;
    short dmColor;
    short dmDuplex;
    short dmYResolution;
    short dmTTOption;
    short dmCollate;
    BCHAR dmFormName[CCHFORMNAME];
    WORD dmLogPixels;
    DWORD dmBitsPerPel;
    DWORD dmPelsWidth;
    DWORD dmPelsHeight;
    DWORD dmDisplayFlags;
    DWORD dmDisplayFrequency;
#if(WINVER >= 0x0400)
    DWORD dmICMMethod;
    DWORD dmICMIntent;
    DWORD dmMediaType;
    DWORD dmDitherType;
    DWORD dmReserved1;
    DWORD dmReserved2;
#if(WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
    DWORD dmPanningWidth;
    DWORD dmPanningHeight;
#endif
#endif /* WINVER >= 0x0400 */
}

迚も大きなサイズの構造體ですが、ChangeDisplaySettings關數で利用するメンバは僅かです。なので今囘はdmSize, dmFields, dmBitsPerPel, dmPelsWidth, dmPelsHeight, dmDisplayFlags, dmDisplayFrequencyのみ説明します。が、どうしても全部のメンバの意味が知りたい方の爲に下の餘談を御覽下さい。簡單な全メンバの説明を記載してあります。

dmSize
之には、DEVMODE構造體そのもののサイズをバイト單位で指定します。sizeof演算子を使ふと良いでせう。
dmFields
之には、DEVMODE構造體の中で、今囘使用するメンバを指定します。使用するメンバを表す定數を論理和で指定します。今囘は、ChangeDisplaySettings關數で利用することのあるメンバを表す定數だけを紹介します。全て知りたい方は餘談を御覽下さい。
DM_BITSPERPEL
dmBitsPerPelメンバを使ひます
DM_PELSWIDTH
dmPelsWidthメンバを使ひます
DM_PELSHEIGHT
dmPelsHeightメンバを使ひます
DM_DISPLAYFLAGS
dmDisplayFlagsメンバを使ひます
DM_DISPLAYFREQUENCY
dmDisplayFrequencyメンバを使ひます
dmBitsPerPel
1色のビット數を指定します。
dmPelsWidth
横解像度を指定します。
dmPelsHeight
縱解像度を指定します。
dmDisplayFlags
ディスプレイモードを表す定數の組み合はせを指定します。以下に示す定數が使用可能です。
DM_GRAYSCALE
ディスプレイは非カラー
DM_INTERLACED
ディスプレイモードはインタレース
dmDisplayFrequency
モード周波數を指定します。

複雜過ぎるかも知れませんが、例へば、畫面解像度だけを切り替へたいときは、dmFieldsの内容を「DM_PELSWIDTH | DM_PELSHEIGHT」にして、dmPelsWidthとdmPelsHeightに解像度を指定して渡せばよいのです。

dwFlagsの取り得る値

FindWindow關數

HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);

FindWindow

指定された文字列と一致するクラス名、ウィンドウ名を持つトップレヴェルウィンドウ(親ウィンドウを持たないウィンドウ)のハンドルを返します。

lpClassNameにクラス名、lpWindowNameにウィンドウ名を渡します。lpWindowNameにNULLを指定すると、あらゆるウィンドウが該當します。

ビットマップ操作とか

BitBlt關數

BOOL BitBlt(
    HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
    HDC hdcSrc, int nXSrc, int nYSrc,
    DWORD dwRop
);

BitBlt

コピー元デヴァイスから選擇した矩形を、別のデヴァイスの選擇した座標に轉送します。

hdcDestに指定するデヴァイスコンテキスト、コピー先デヴァイス、nXDestとnYDestにコピー先長方形の左上を表す座標、nWidthとnHeightにコピー先のサイズ、hdcSrcにコピー元デヴァイス、nXSrcとnYSrcにコピー元長方形の左上を表す座標、dwRopにはラスタオペレーションを示す定數を渡します。

dwRopに指定するラスタオペレーション

StretchBlt關數・SetStretchBltMode關數

BOOL StretchBlt(
    HDC hdcDest,
    int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,
    HDC hdcSrc,
    int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc,
    DWORD dwRop
);
int SetStretchBltMode(HDC hdc, int iStretchMode);

StretchBlt

BitBlt關數を擴張して、轉送するイメージを擴大又は縮小することが出來るやうにしたものです。

hdcDestにコピー先デヴァイス、nXOriginDestとnYOriginDestにコピー先長方形の左上座標、nWidthDestとnHeightDestにコピー先長方形の幅と高さ、hdcSrcにコピー元デヴァイス、nXOriginSrcとnYOriginSrcにコピー元長方形の左上座標、nWidthSrcとnWidthSrcにコピー元長方形の幅と高さ、dwRopにラスタオペレーションを示す定數を渡します。

SetStretchBltMode

StretchBlt關數に於ける、イメージの擴大縮小の方法を設定します。

hdcにデヴァイスコンテキストハンドル、iStretchModeにビットマップ伸縮モードを渡します。

iStretchModeに指定出來る定數

TransparentBlt關數

BOOL TransparentBlt(
    HDC hdcDest,
    int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,
    HDC hdcSrc,
    int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc,
    UINT crTransparent,
);

TransparentBlt

ビットブロック轉送時、特定の色を透過することができます。

最後のcrTransparent以外は、StretchBlt關數と同じ引數です。crTransparentには、コピー元から轉送を無視する透過色を指定します。

AlphaBlend關數

AlphaBlend(
    HDC hdcDest,
    int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,
    HDC hdcSrc,
    int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc,
    BLENDFUNCTION blendFunction
);

AlphaBlend

コピー元とコピー先の色を混ぜます。

之もTransparentBitと同じく、最後の引數blendFunction以外は、StretchBlt關數と同じです。

BLENDFUNCTION構造體
typedef struct _BLENDFUNCTION {
    BYTE BlendOp;
    BYTE BlendFlags;
    BYTE SourceConstantAlpha;
    BYTE AlphaFormat;
}BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;

BLENDFUNCTION構造體は四つのメンバを持ちますが、重要なのはSourceConstantAlphaのみです。此のメンバには、コピー元の畫像をどの程度透明にするかを表す數値、即ち透明度を表します。0だと完全に透明で255だと完全に上書きになります。127を指定すると丁度半透明が實現できます。尚、BlendOpは混合操作を表しますが、現在はAC_SRC_OVERのみしか定義されてゐないのでそれで初期化します。BlendFlagsには常に0を指定します。また、AlphaFormatは、コピー元ビットマップがアルファ値を持つならばAC_SRC_ALPHAを指定しますが、大抵は0を指定します。

スレッド制御とか

CreateThread關數・ExitThread關數・GetExitCodeThread關數

HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes,
    DWORD dwStackSize,
    LPTHREAD_START_ROUTINE lpStartAddress,
    LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId
);
VOID ExitThread(DWORD dwExitCode);
BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode);

CreateThread

新しいスレッドを生成します。尚、CreateThreadで生成されたスレッド内で標準Cライブラリの關數を使つてはなりません。使ふ場合は_beginthread關數を使つてスレッドを生成します。

lpThreadAttributesには、SECURITY_ATTRIBUTES構造體へのポインタを指定しますが、特別な意圖が無い限りは0を、dwStackSizeにはスタックサイズを指定しますが、Windowsは必要に應じてスタックサイズを變更するのでデフォルトを表す0を、lpStartAddresには生成されるスレッドで實行する關數へのポインタを、lpParameterにはスレッド關數に渡す引數を、dwCreationFlagsには通常0を、lpThreadIdにはスレッド識別子を格納するDWORDへのポインタを渡します。

LPTHREAD_START_ROUTINE型の定義
DWORD WINAPI ThreadProc(LPVOID lpParameter);
dwCreationFlagsに指定出來る値

ExitThread

スレッドを破棄します。尚、_beginthread關數で生成したスレッドは_endthread關數で破棄して下さい。

dwExitCodeにこのスレッドの終了コードを指定します。

GetExitCodeThread

指定したスレッドの終了コードを取得します。

hThreadにスレッドハンドルを、lpExitCodeには終了コードを受け取るDWORDへのポインタを指定します。hThreadで指定されたスレッドがExitThreadで設定した終了コードを取得します。

餘談

ここではDEVMODE構造體の中身を解説します。

typedef struct _devicemode{
    BCHAR dmDeviceName[CCHDEVICENAME];
    WORD dmSpecVersion;
    WORD dmDriverVersion;
    WORD dmSize;
    WORD dmDriverExtra;
    DWORD dmFields;
    union {
        struct {
            short dmOrientation;
            short dmPaperSize;
            short dmPaperLength;
            short dmPaperWidth;
        };
        POINTL dmPosition;
    };
    short dmScale;
    short dmCopies;
    short dmDefaultSource;
    short dmPrintQuality;
    short dmColor;
    short dmDuplex;
    short dmYResolution;
    short dmTTOption;
    short dmCollate;
    BCHAR dmFormName[CCHFORMNAME];
    WORD dmLogPixels;
    DWORD dmBitsPerPel;
    DWORD dmPelsWidth;
    DWORD dmPelsHeight;
    DWORD dmDisplayFlags;
    DWORD dmDisplayFrequency;
#if(WINVER >= 0x0400)
    DWORD dmICMMethod;
    DWORD dmICMIntent;
    DWORD dmMediaType;
    DWORD dmDitherType;
    DWORD dmReserved1;
    DWORD dmReserved2;
#if(WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
    DWORD dmPanningWidth;
    DWORD dmPanningHeight;
#endif
#endif /* WINVER >= 0x0400 */
} DEVMODE;
dmDeviceName
デヴァイス名を表す文字列です。
dmSpecVersion
DEVMODE構造體のヴァージョンです。現在のヴァージョンはDM_SPECVERSIONといふ定數として定義されてゐます。
dmDriverVersion
プリンタドライヴァのヴァージョンです。
dmSize
DEVMODE構造體のサイズをバイト單位で格納してゐます。
dmDriverExtra
DEVMODE構造體の後に續くプライヴェートなデータのサイズをバイト單位で格納してゐます。
dmFields
プリンタドライヴァが、DEVMODE構造體の内どのメンバを使用するかを示してゐます。それらは、定數同士の論理和によつて示されます。
定數
その定數によつて、使用されることが明示されるメンバ
DM_ORIENTATION
dmOrientation
DM_PAPERSIZE
dmPaperSize
DM_PAPERLENGTH
dmPaperLength
DM_PAPERWIDTH
dmPaperWidth
DM_POSITION
dmPosition
DM_SCALE
dmScale
DM_COPIES
dmCopies
DM_DEFAULTSOURCE
dmDefaultSource
DM_PRINTQUALITY
dmPrintQuality
DM_COLOR
dmColor
DM_DUPLEX
dmDuplex
DM_YRESOLUTION
dmYResolution
DM_TTOPTION
dmTTOption
DM_COLLATE
dmCollate
DM_FORMNAME
dmFormName
DM_LOGPIXELS
dmLogPixels
DM_BITSPERPEL
dmBitsPerPel
DM_PELSWIDTH
dmPelsWidth
DM_PELSHEIGHT
dmPelsHeight
DM_DISPLAYFLAGS
dmDisplayFlags
DM_DISPLAYFREQUENCY
dmDisplayFrequency
DM_ICMMETHOD
dmICMMethod
DM_ICMINTENT
dmICMIntent
DM_MEDIATYPE
dmMediaType
DM_DITHERTYPE
dmDitherType
DM_PANNINGWIDTH(Win2000及び其れ以降のWindowsのみ)
dmPanningWidth(Win2000及び其れ以降のWindowsのみ)
DM_PANNINGHEIGHT(Win2000及び其れ以降のWindowsのみ)
dmPanningHeight(Win2000及び其れ以降のWindowsのみ)
dmOrientation
用紙の向きです。指定出來る定數は以下の通りです。
DMORIENT_PORTRAIT
縱向き
DMORIENT_LANDSCAPE
横向き
dmPaperSize
用紙のサイズです。通常は以下に示す定數で表せますが、dmPaperLength,dmPaperWidthメンバで指定する場合は中身は0で構ひません。
DMPAPER_LETTER
Letter, 8 1/2 * 11インチ
DMPAPER_LEGAL
Legal, 8 1/2 * 14インチ
DMPAPER_A4
A4シート, 210 * 297mm
DMPAPER_CSHEET
Cシート, 17 * 22インチ
DMPAPER_DSHEET
Dシート, 22 * 34インチ
DMPAPER_ESHEET
Eシート, 34 * 44インチ
DMPAPER_LETTERSMALL
Letter Small, 8 1/2 * 11インチ
DMPAPER_TABLOID
Tabloid, 11 * 17インチ
DMPAPER_LEDGER
Ledger, 17 * 11インチ
DMPAPER_STATEMENT
Statement, 5 1/2 * 8 1/2インチ
DMPAPER_EXECUTIVE
Executive, 7 1/4 * 10 1/2インチ
DMPAPER_A3
A3シート, 297 * 420mm
DMPAPER_A4SMALL
A4 smallシート, 210 * 297mm
DMPAPER_A5
A5シート, 148 * 210mm
DMPAPER_B4
B4シート, 250 * 354mm
DMPAPER_B5
B5シート, 182 * 257mm
DMPAPER_FOLIO
Folio, 8 1/2 * 13インチ
DMPAPER_QUATRO
Quatro, 215 * 275mm
DMPAPER_10X14
10 * 14インチシート
DMPAPER_11X17
11 * 17インチシート
DMPAPER_NOTE
Note, 8 1/2 * 11インチ
DMPAPER_ENV_9
#9 Envelope, 3 7/8 * 8 7/8インチ
DMPAPER_ENV_10
#10 Envelope, 4 1/8 * 9 1/2インチ
DMPAPER_ENV_11
#11 Envelope, 4 1/2 * 10 3/8インチ
DMPAPER_ENV_12
#12 Envelope, 4 3/4 * 11インチ
DMPAPER_ENV_14
#14 Envelope, 5 * 11 1/2インチ
DMPAPER_ENV_DL
DL Envelope, 110 * 220mm
DMPAPER_ENV_C5
C5 Envelope, 162 * 229mm
DMPAPER_ENV_C3
C3 Envelope, 324 * 458mm
DMPAPER_ENV_C4
C4 Envelope, 229 * 324mm
DMPAPER_ENV_C6
C6 Envelope, 114 * 162mm
DMPAPER_ENV_C65
C65 Envelope, 114 * 229mm
DMPAPER_ENV_B4
B4 Envelope, 250 * 353mm
DMPAPER_ENV_B5
B5 Envelope, 176 * 250mm
DMPAPER_ENV_B6
B6 Envelope, 176 * 125mm
DMPAPER_ENV_ITALY
Italy Envelope, 110 * 230mm
DMPAPER_ENV_MONARCH
Monarch Envelope, 3 7/8 * 7 1/2インチ
DMPAPER_ENV_PERSONAL
6 3/4 Envelope, 3 5/8 * 6 1/2インチ
DMPAPER_FANFOLD_US
US Std Fanfold, 14 7/8 * 11インチ
DMPAPER_FANFOLD_STD_GERMAN
German Std Fanfold, 8 1/2 * 12インチ
DMPAPER_FANFOLD_LGL_GERMAN
German Legal Fanfold, 8 1/2 * 13インチ
dmPaperLength
縱向きモードでの用紙の長さを0.1ミリ單位で格納してゐます。
dmPaperWidth
縱向きモードでの用紙の幅を0.1ミリ單位で格納してゐます。
dmScale
印刷出力のスケーリング時のスケーリング係數を指定します。
dmCopies
印刷部數です。
dmDefaultSource
デフォルトの用紙トレイを指定します。以下の定數か、若しくは、DMBIN_USER定數の値以上の、ドライヴァ定義値を指定します。
DMBIN_ONLYONE
單一用紙ソース
DMBIN_LOWER
下用紙トレイ
DMBIN_MIDDLE
中用紙トレイ
DMBIN_MANUAL
手差し用紙フィーダ
DMBIN_ENVELOPE
封筒フィーダ
DMBIN_ENVMANUAL
手差し封筒フィーダ
DMBIN_AUTO
自動用紙トレイ選擇
DMBIN_TRACTOR
トラクタフィーダ
DMBIN_SMALLFMT
小型用紙ソース
DMBIN_LARGEFMT
大型用紙ソース
DMBIN_LARGECAPACITY
大容量用紙トレイ
DMBIN_CASSETTE
用紙カセット
dmPrintQuality
プリンタ解像度です。DPIを示します。デヴァイスに依存しない以下の定數を指定することも可能です。
DMRES_HIGH
高解像度
DMRES_MEDIUM
中解像度
DMRES_LOW
低解像度
DMRES_DRAFT
ドラフト印刷解像度
dmColor
カラープリンタに於て、カラーとモノクロのどちらで印刷するかを指定します。以下の定數で指定できます。
DMCOLOR_CIKIR
カラー
DMCOLOR_MONOCHROME
モノクロ
dmDules
兩面印刷可能なプリンタに於て、兩面印刷をするかどうかを指定します。以下の定數で指定します。
DMDUP_SIMPLEX
兩面印刷しない
DMDUP_HORIZONTAL
横(長邊)
DMDUP_VERTICAL
縱(短邊)
dmYResolution
プリンタの垂直方向の解像度です。DPIを示します。
dmTTOption
TrueTypeフォントの印刷方法を指定します。以下の定數が指定出來ます。
DMTT_BITMAP
TrueTypeフォントをグラフィックとして印刷
DMTT_DOWNLOAD
TrueTypeフォントをソフトフォントとしてダウンロード
DMTT_SUBDEV
TrueTypeフォントをデヴァイスフォントで置き換へる
DMTT_DOWNLOAD_OUTLINE
TrueTypeフォントをアウトラインソフトフォントとしてダウンロード
dmCollate
複數部印刷時、部單位で印刷するかどうかを指定します。以下の定數で指定します。
DMCOLLATE_TRUE
部單位で印刷する
DMCOLLATE_FALSE
部單位で印刷しない
dmFormName
使用する用紙の名前です。
dmLogPixels
論理インチ當りのピクセル數を指定します。
dmBitsPerPel
ディスプレイデヴァイスのカラービット數です。
dmPelsWidth
可視デヴァイス表面幅です。
dmPelsHeight
可視デヴァイス表面高です。
dmDisplayFlags
デヴァイスのディスプレイモードを指定します。以下の定數で指定します。
DM_GRAYSCALE
ディスプレイが非カラーのデヴァイスであることを示す
DM_INTERLACED
ディスプレイモードがインタレースであることを示す
dmDisplayFrequency
特定のモードに於ける、ディスプレイデヴァイスの周波數です。單位はHzです。
dmICMMethod
非ICMアプリケーションに於て、ICMの使用可能不可能を示します。また、ICMアプリケーションに於て、ICMサポートの處理方法を決定します。以下の定數か又は、定數DMICMMETHOD_USERよりも大きな値で指定します。
DMICMMETHOD_NONE
ICM使用不可
DMICMMETHOD_SYSTEM
ICMはWindowsが處理
DMICMMETHOD_DRIVER
ICMはデヴァイスドライヴァが處理
DMICMMETHOD_DEVICE
ICMはデヴァイスが處理
dmICMIntent
非ICMアプリケーションに於てカラーマッチング方法のデフォルトを指定します。以下の定數か、又はDMICM_USER以上のドライヴァ定義値を指定します。
DMICM_SATURATE
色の鮮やかさ優先
DMICM_CONTRAST
コントラスト優先
DMICM_COLORMETRIC
要求通りの色に合はせる
dmMediaType
印刷メディアを指定します。以下の定數か、又はDMMEDIA_USER以上のドライヴァ定義値を指定出來ます。
DMMEDIA_STANDARD
普通紙
DMMEDIA_GLOSSY
光澤紙
DMMEDIA_TRANSPARENCY
透明フィルム
dmDitherType
ディザリング方法を指定します。以下の定數か、又はDMDITHER_USER以上のドライヴァ定義値を指定出來ます。
DMDITHER_NONE
ディザリングしない
DMDITHER_COARSE
粗いブラシでディザリング
DMDITHER_FINE
細かいブラシでディザリング
DMDITHER_LINEART
ラインアートディザリング
DMDITHER_GRAYSCALE
グレースケール使用
dmReserved1, dmReserved2
豫約領域。内容は固定で0です。
dnPanningWidth, dmPanningHeight
Win2000及び其れ以降のWindowsのみサポートしてゐます。NT系では固定で0を指定します。