unknown
2008-03-19 04:14:00 UTC
USBプリンタの印刷で困っています。
印刷の最初の段階でエラーになるということです。
知人にテストの為、自作プログラムを送ってテストしてもらったのですが、
印刷がうまく行きません。
私が使っているのはセントロニクス規格のパラレル接続ですが、
知人はUSB接続のCANONのPIXSUSです。
私は同じCANONのBJC400JとEPSON PM760Cで何れも
セントロニクスで接続しています。
USB対策で何かコーディングが必要なのでしょうか。
下記にその抜粋を記述します。
よろしくお願い致します。
VisualC++6
セントロではうまく動作するプログラム
BOOL PrintOnePage(HWND hWnd,int prn_type,int page_size)
{
static DOCINFO di = { sizeof (DOCINFO),TEXT("印刷中です。しばらくお待ち下さい") };
BOOL bSuccess = TRUE;
HDC hdcPrn;
int xPage,yPage;
if(check_prn_sw() == 0){ return(0); } // 印刷しない
if(NULL == (hdcPrn = GetPrnDC())){ return FALSE; }
if(page_size == 0){ page_size = 1; }
xPage = GetDeviceCaps(hdcPrn,HORZRES); // 現在設定されている印刷横サイズ 現在A4の設定の前提
yPage = GetDeviceCaps(hdcPrn,VERTRES); // 現在設定されている印刷縦サイズ
xPage /= page_size;
yPage /= page_size;
if( StartDoc (hdcPrn,&di) > 0) // 印刷ジョブを開始
{
if(StartPage(hdcPrn) > 0)
{
switch(prn_type)
{
case 2: // 入場1枚
prn_parkin_a6(hdcPrn,xPage,yPage);
break;
/**** 省略 ****/
}
if(EndPage(hdcPrn) > 0){ EndDoc(hdcPrn); } // 印刷ジョブを終了
else{ bSuccess = FALSE; }
}
}
else
{
bSuccess = FALSE;
}
DeleteDC(hdcPrn);
return bSuccess;
}
/*** prn_parkin_a6(hdcPrn,xPage,yPage)の各行の印刷は下記関数で *****/
int prn_textex(HDC hdcPrn,int typesw,int futosa,int mojisize,int x,int
y,char *moji)
{
int nHeight,len;
static HFONT hFont;
static HGDIOBJ oldhFont;
char shotaimoji[51];
COLORREF oldcr;
cls_str(shotaimoji,51);
switch(typesw) // 書体選択
{
case 1: // MS明朝
sprintf(shotaimoji,"%s %s","MS","明朝");
break;
case 2: // MSP明朝
sprintf(shotaimoji,"%s %s","MS","P明朝");
break;
case 3: // MSゴチック
sprintf(shotaimoji,"%s %s","MS","ゴチック");
break;
case 4: // MSPゴチック
sprintf(shotaimoji,"%s %s","MS","Pゴチック");
break;
default: // システム指定の書体
break;
}
nHeight = -MulDiv(mojisize,GetDeviceCaps(hdcPrn,LOGPIXELSY),72);
hFont =
CreateFont(nHeight,0,0,0,futosa,0,0,0,SHIFTJIS_CHARSET,OUT_TT_ONLY_PRECIS,
CLIP_TT_ALWAYS,PROOF_QUALITY,FIXED_PITCH |
FF_DONTCARE,shotaimoji);
oldhFont = SelectObject(hdcPrn,hFont);
oldcr = SetTextColor(hdcPrn,XBLACK);
len = lstrlen(moji);
TextOut(hdcPrn,x,y,moji,len);
SetTextColor(hdcPrn,oldcr);
SelectObject(hdcPrn,oldhFont);
DeleteObject(hFont);
return(len);
}
印刷の最初の段階でエラーになるということです。
知人にテストの為、自作プログラムを送ってテストしてもらったのですが、
印刷がうまく行きません。
私が使っているのはセントロニクス規格のパラレル接続ですが、
知人はUSB接続のCANONのPIXSUSです。
私は同じCANONのBJC400JとEPSON PM760Cで何れも
セントロニクスで接続しています。
USB対策で何かコーディングが必要なのでしょうか。
下記にその抜粋を記述します。
よろしくお願い致します。
VisualC++6
セントロではうまく動作するプログラム
BOOL PrintOnePage(HWND hWnd,int prn_type,int page_size)
{
static DOCINFO di = { sizeof (DOCINFO),TEXT("印刷中です。しばらくお待ち下さい") };
BOOL bSuccess = TRUE;
HDC hdcPrn;
int xPage,yPage;
if(check_prn_sw() == 0){ return(0); } // 印刷しない
if(NULL == (hdcPrn = GetPrnDC())){ return FALSE; }
if(page_size == 0){ page_size = 1; }
xPage = GetDeviceCaps(hdcPrn,HORZRES); // 現在設定されている印刷横サイズ 現在A4の設定の前提
yPage = GetDeviceCaps(hdcPrn,VERTRES); // 現在設定されている印刷縦サイズ
xPage /= page_size;
yPage /= page_size;
if( StartDoc (hdcPrn,&di) > 0) // 印刷ジョブを開始
{
if(StartPage(hdcPrn) > 0)
{
switch(prn_type)
{
case 2: // 入場1枚
prn_parkin_a6(hdcPrn,xPage,yPage);
break;
/**** 省略 ****/
}
if(EndPage(hdcPrn) > 0){ EndDoc(hdcPrn); } // 印刷ジョブを終了
else{ bSuccess = FALSE; }
}
}
else
{
bSuccess = FALSE;
}
DeleteDC(hdcPrn);
return bSuccess;
}
/*** prn_parkin_a6(hdcPrn,xPage,yPage)の各行の印刷は下記関数で *****/
int prn_textex(HDC hdcPrn,int typesw,int futosa,int mojisize,int x,int
y,char *moji)
{
int nHeight,len;
static HFONT hFont;
static HGDIOBJ oldhFont;
char shotaimoji[51];
COLORREF oldcr;
cls_str(shotaimoji,51);
switch(typesw) // 書体選択
{
case 1: // MS明朝
sprintf(shotaimoji,"%s %s","MS","明朝");
break;
case 2: // MSP明朝
sprintf(shotaimoji,"%s %s","MS","P明朝");
break;
case 3: // MSゴチック
sprintf(shotaimoji,"%s %s","MS","ゴチック");
break;
case 4: // MSPゴチック
sprintf(shotaimoji,"%s %s","MS","Pゴチック");
break;
default: // システム指定の書体
break;
}
nHeight = -MulDiv(mojisize,GetDeviceCaps(hdcPrn,LOGPIXELSY),72);
hFont =
CreateFont(nHeight,0,0,0,futosa,0,0,0,SHIFTJIS_CHARSET,OUT_TT_ONLY_PRECIS,
CLIP_TT_ALWAYS,PROOF_QUALITY,FIXED_PITCH |
FF_DONTCARE,shotaimoji);
oldhFont = SelectObject(hdcPrn,hFont);
oldcr = SetTextColor(hdcPrn,XBLACK);
len = lstrlen(moji);
TextOut(hdcPrn,x,y,moji,len);
SetTextColor(hdcPrn,oldcr);
SelectObject(hdcPrn,oldhFont);
DeleteObject(hFont);
return(len);
}