User manual - GUIライブラリマニュアルver.1.01(2012年3月29日)
36
4. サンプルソースコード
4.1 イメージおよび文字の印刷
本サンプルプログラムではライブラリの関数を使用して、GDI 関数である"LineTo"によるイメージを 1
ページ目に印刷し、用紙サイズを変更して文字列を 2 ページ目に印刷します。
TCHAR szUni[] = _T("UnicodeOut テスト");
char szESC_E[] = "\x1b""E";
void Sample(HWND hWnd) // hWnd アプリケーションのウィンドウハンドル
{
HANDLE hPrinter;
HDC hDC, hDCOld;
LPCPDEVMODE pInCDM = NULL; // プリンタデータ入力値
LPCPDEVMODE pCDM = NULL; // プリンタデータ領域
CPDOCINFO doc;
int fMode = CPDM_OUT_BUFFER; // プリンタデータ出力要求
int size;
/***** CpOpenPrinter:指定プリンタをオープンしてハンドルを取得します *****/
// プリンタ名:BuiltIn(内蔵プリンタ) 出力ポート名:BuiltIn(内蔵プリンタ)
if (CpOpenPrinter(_T("BuiltIn"), _T("BuiltIn"), &hPrinter) != TRUE)
return;
/***** CpDocumentProperties:プリンタデータを取得します *****/
// プリンタデータ保存用領域として必要なサイズを取得
size = CpDocumentProperties(hWnd, hPrinter, pCDM, pInCDM, fMode);
if (size < 0) {
CpClosePrinter(hPrinter);
return;
}
// 取得された必要サイズ分の領域を確保
pCDM = (LPCPDEVMODE)malloc(size);
// CPDEVMODE のデフォルト情報を取得
if (CpDocumentProperties(hWnd, hPrinter, pCDM, pInCDM, fMode) < 0){
CpClosePrinter(hPrinter);
free(pCDM);
return;
}
/***** 描画サイズ(長さ)を変更 *****/
// 描画サイズ(長さ)を 200(20[mm])に変更
pCDM->dmPaperLength = 200;
// CpDocumentProperties の引数 fMode の CPDM_IN_PROMPT プリンタプロパティに