typedef struct _devicemode { // dvmd
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 には、ドライバがサポートするデバイスの名前を指定します| 定数 | メンバ |
|---|---|
| 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 | Windows NT 5.0 and later: dmPanningWidth |
| DM_PANNINGHEIGHT | Windows NT 5.0 and later: dmPanningHeight |
| 定数 | サイズ |
|---|---|
| DMPAPER_LETTER | Letter、8 1/2 × 11 インチ |
| MPAPER_LEGAL | Legal、8 1/2 × 14 インチ |
| DMPAPER_A4 | A4 シート、210 × 297 mm |
| 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 × 420 mm |
| DMPAPER_A4SMALL | A4 small シート、210 × 297 mm |
| DMPAPER_A5 | A5 シート、148 × 210 mm |
| DMPAPER_B4 | B4 シート、250 × 354 mm |
| DMPAPER_B5 | B5 シート、182 × 257 mm |
| DMPAPER_FOLIO | Folio、8 1/2 × 13 インチ |
| DMPAPER_QUARTO | Quarto、215 × 275 mm |
| 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 × 220 mm |
| DMPAPER_ENV_C5 | C5 Envelope、162 × 229 mm |
| DMPAPER_ENV_C3 | C3 Envelope、324 × 458 mm |
| DMPAPER_ENV_C4 | C4 Envelope、229 × 324 mm |
| DMPAPER_ENV_C6 | C6 Envelope、114 × 162 mm |
| DMPAPER_ENV_C65 | C65 Envelope、114 × 229 mm |
| DMPAPER_ENV_B4 | B4 Envelope、250 × 353 mm |
| DMPAPER_ENV_B5 | B5 Envelope、176 × 250 mm |
| DMPAPER_ENV_B6 | B6 Envelope、176 × 125 mm |
| DMPAPER_ENV_ITALY | Italy Envelope、110 × 230 mm |
| 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 インチ |
| DMPA PER_FANFOLD_LGL_GERMAN | German Legal Fanfold、8 1/2 × 13 インチ |
| 定数 | 解説 |
|---|---|
| DMBIN_ONLYONE | 単一用紙ソース |
| DMBIN_LOWER | 下用紙トレイ |
| DMBIN_MIDDLE | 中用紙トレイ |
| DMBIN_MANUAL | 手差し用紙フィーダ |
| DMBIN_ENVELOPE | 封筒フィーダ |
| DMBIN_ENVMANUAL | 手差し封筒フィーダ |
| DMBIN_AUTO | 自動用紙トレイ選択 |
| DMBIN_TRACTOR | トラクタフィーダ |
| DMBIN_SMALLFMT | 小型用紙ソース |
| DMBIN_LARGEFMT | 大型用紙ソース |
| DMBIN_LARGECAPACITY | 大容量用紙トレイ |
| DMBIN_CASSETTE | 用紙カセット |
| 定数 | 解説 |
|---|---|
| DMRES_HIGH | 高解像度 |
| DMRES_MEDIUM | 中解像度 |
| DMRES_LOW | 低解像度 |
| DMRES_DRAFT | ドラフト印刷解像度 |
| 定数 | 解説 |
|---|---|
| DMDUP_SIMPLEX | 画面印刷しない |
| DMDUP_HORIZONTAL | 横(長辺) |
| DMDUP_VERTICAL | 縦(短辺) |
| 定数 | 解説 |
|---|---|
| DMTT_BITMAP | TrueType フォントをグラフィックとして印刷します ドットマトリックス プリンタのデフォルトの動作です |
| DMTT_DOWNLOAD | TrueType フォントをソフト フォントとしてダウンロードします Printer Control Language (PCL) を使う Hewlett-Packard のプリンタのデフォルトの動作です |
| DMTT_SUBDEV | TrueType フォントをデバイス フォントで置き換えます PostScriptR プリンタのデフォルトの動作です |
| DMTT_DOWNLOAD_OUTLINE | TrueType フォントをアウトラインソフトフォントとしてダウンロードします |
| 定数 | 解説 |
|---|---|
| DM_GRAYSCALE | ディスプレイが非カラーのデバイスであることを指定します このフラグが設定されていないと、カラー デバイスとみなします |
| DM_INTERLACED | ディスプレイモードがインターレースであることを指定します このフラグが設定されていないと、ノンインターレースであるとみなします |
| 定数 | 解説 |
|---|---|
| DMICMMETHOD_NONE | ICM は使用不可です |
| DMICMMETHOD_SYSTEM | ICM は Windows によって処理されます |
| DMICMMETHOD_DRIVER | ICM はデバイスドライバによって処理されます |
| DMICMMETHOD_DEVICE | ICM はデバイスによって処理されます |
| 定数 | 解説 |
|---|---|
| DMICM_SATURATE | カラーマッチングで、色の鮮やかさを優先します ディザリングが望まれない、ビジネス用のグラフに最適です |
| DMICM_CONTRAST | カラーマッチングで、カラーコントラストを優先します ディザリングが望まれる、写真等の画像に最適です |
| DMICM_COLORMETRIC | カラーマッチングで、要求どおりの色に合わせます 正確な色合わせが要求されるときに最適です |
| 定数 | 解説 |
|---|---|
| DMMEDIA_STANDARD | 普通紙 |
| DMMEDIA_GLOSSY | 光沢紙 |
| DMMEDIA_TRANSPARENCY | 透明フィルム |
| 定数 | 解説 |
|---|---|
| DMDITHER_NONE | ディザリングしません |
| DMDITHER_COARSE | 粗いブラシによるディザリング |
| DMDITHER_FINE | 細かいブラシによるディザリング |
| DMDITHER_LINEART | ラインアートディザリング |
| DMDITHER_GRAYSCALE | デバイスは、グレースケールを使う |
#include <windows.h>
#define TITLE TEXT("Kitty on your lap")
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
DOCINFO diInfo = {0};
DEVMODE dmMode = {0};
HDC hdc;
diInfo.cbSize = sizeof (DOCINFO);
diInfo.lpszDocName = TITLE;
dmMode.dmSpecVersion = DM_SPECVERSION;
dmMode.dmSize = sizeof (DEVMODE);
dmMode.dmFields = DM_ORIENTATION;
dmMode.dmOrientation = DMORIENT_LANDSCAPE;
if (!(hdc = CreateDC(NULL , lpCmdLine , NULL , NULL))) {
MessageBox(NULL ,
TEXT("DCが得られません") , lpCmdLine , MB_OK);
return -1;
}
if (StartDoc(hdc , &diInfo) > 0) {
hdc = ResetDC(hdc , &dmMode);
StartPage(hdc);
SetMapMode(hdc , MM_LOMETRIC);
Ellipse(hdc , 0 , 0 , 500 , -500);
TextOut(hdc , 0 , 0 , TITLE , lstrlen(TITLE));
EndPage(hdc);
EndDoc(hdc);
}
DeleteDC(hdc);
return 0;
}
このプログラムは、コマンドライン引数から印刷するプリンタを選択すると