PWJ2591 - 96/06 |
この資料は以下の製品について記述したものです。
この資料は、印刷ダイアログを表示しないで印刷の設定を変える一つの方法を紹介したものです。
ExtDeviceMode 関数を以下のように使用することで実現できます。
BOOL SetPrinterOrientation( HWND hWnd ) /* 印刷方向を変えます。 */
{ /* 引き数 hWnd は ExtDeviceMode の */
/* 第1パラメータで使用します */
char priName[100]; /* WIN.INI からのプリンタ情報の格納領域 */
char priDriver[20]; /* プリンタドライバ名格納領域 */
char *deviceName; /* プリンタ名へのポインター PCL/HP LaserJetなど */
char *driverName; /* ドライバ名へのポインター E_PAGE01 など */
char *portName; /* ポート名へのポインタ LPT1 など */
LPFNDEVMODE lpfuncDevMode; /* ExtDeviceMode の関数へのポインタ */
HINSTANCE driverHandle; /* プリンタドライバモジュールへのインスタンスハンドル */
int DevModeSize; /* プリンタドライバの初期化データのバッファのサイズ */
LPDEVMODE lpdevmode; /* プリンタドライバの初期化データのバッファへのポインタ */
/* プリンタドライバ名を取得 */
GetProfileString("windows","device",",,,",priName,sizeof(priName));
deviceName = strtok(priName,",");
driverName = strtok(NULL,",");
portName = strtok(NULL,",");
lstrcpy(priDriver,driverName);
lstrcat(priDriver,".drv");
/* プリンタドライバのロード */
driverHandle = LoadLibrary(priDriver);
lpfuncDevMode=(LPFNDEVMODE)GetProcAddress(driverHandle,"ExtDeviceMode");
/* DEVMODE 構造体のサイズの取得 */
DevModeSize=(*lpfuncDevMode)(hWnd,driverHandle,NULL,deviceName,portName,
NULL,NULL,(WORD)0);
lpdevmode =(LPDEVMODE)_fmalloc(DevModeSize);
/* ドライバ情報の取得 */
(* lpfuncDevMode)(hWnd,driverHandle,lpdevmode,deviceName,portName,NULL,
NULL,DM_OUT_BUFFER);
/* 以下はテストの為の表示です */
if (lpdevmode->dmOrientation == DMORIENT_PORTRAIT )
{
MessageBox(hWnd,"縦方向から横方向へ変更します","",MB_OK);
lpdevmode->dmOrientation = DMORIENT_LANDSCAPE;
}
else
{
MessageBox(hWnd,"横方向から縦方向へ変更します","",MB_OK);
lpdevmode->dmOrientation = DMORIENT_PORTRAIT;
}
lpdevmode->dmFields = DM_ORIENTATION; /* 印字方向を変える為のフラグ */
/* ドライバ情報の設定 */
(* lpfuncDevMode)(hWnd,driverHandle,lpdevmode,deviceName,portName,
lpdevmode,NULL,DM_IN_BUFFER | DM_OUT_DEFAULT);
/* 指定を DM_IN_PROMPT | DM_OUT_DEFAULT にすると印刷ダイアログ表示します */
_ffree(lpdevmode);
FreeLibrary(driverHandle);
return TRUE;
}
マイクロソフト株式会社 テクニカル サポート
UP |
HOMEPAGE |