• ベストアンサー

CreateFontで回転させて印刷出来ない

こんにちは。maruru01です。 APIのCreateFont関数を使用して文字列を回転させ、それを印刷しようとしたのですが、うまくいきません。 どうもCreateFontの情報がPrinterオブジェクトに伝わってないようです。 オブジェクトをPrinterの替わりにForm1にするとちゃんと回転して表示されます。 どうすればうまくいくのでしょうか。 よろしくお願いします。 使用環境:Windows2000(SP2)、Visual Basic 6.0(SP5) EnterpriseEdition Private Sub Command1_Click()   Dim hdc As Long   Dim FontName As String   Dim FontHeight As Long   Dim hFont As Long   Dim hFontOld As Long   Dim tempStr As String      Const DEFAULT_CHARSET = 1      tempStr = "文字列回転"      hdc = Printer.hdc   FontName = "MS Pゴシック"   FontHeight = 9   hFont = CreateFont(-(FontHeight * 20 / Screen.TwipsPerPixelX), 0, 900, 2700, 0, False, False, False, DEFAULT_CHARSET, False, False, False, False, FontName)   hFontOld = SelectObject(hdc, hFont)      Printer.ScaleMode = vbCentimeters   Printer.CurrentX = 2   Printer.CurrentY = 2   Printer.Print tempStr      DeleteObject SelectObject(hdc, hFontOld)    End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

>どうもCreateFontの情報がPrinterオブジェクトに伝わってないようです。 VBの制限事項です。→参考URL >どうすればうまくいくのでしょうか。 Printer.Printではなく、TextOutを使いましょう。

参考URL:
http://www.microsoft.com/japan/support/kb/articles/J045/7/77.asp
maruru01
質問者

お礼

回答ありがとうございます。 実はTextOutも下のように使ったんですが、やはりうまくいきませんでした。 Result = TextOut(hdc, OffsetX, OffsetY, tempStr, LenB(StrConv(tempStr, vbFromUnicode))) どこが悪いのでしょうか。ちょっと八方塞がりの状態です。 とりあえず、参考URLありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • prome
  • ベストアンサー率32% (64/196)
回答No.3

回転文字の件は確か下記のMLの過去ログで見た記憶があります。 ただ過去ログの番号を忘れました。 そこで紹介されていたコードを下記に載せておきます。 ちなみに私はAPIには疎いので、動作の理屈がわかりませんが。 ------------------------------------------------------ Option Explicit Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" _ (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, _ ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, _ ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, _ ByVal PAF As Long, ByVal F As String) As Long Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" _ (ByVal hDc As Long, ByVal x As Long, ByVal y As Long, _ ByVal lpString As String, ByVal nCount As Long) As Long Private Declare Function SelectObject Lib "gdi32" _ (ByVal hDc As Long, ByVal hObject As Long) As Long Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long Private Sub Form_Paint() Dim Responce Dim FontHandle As Long Dim OldFontHandle As Long Dim ResultCode As Long Dim TargetDcHandle As Long Dim strMsg As String Responce = MsgBox("文字列を印刷しますか", 4, "") '描画対象のデバイスコンテキストをフォームに設定 TargetDcHandle = Form1.hDc '描画文字列の設定 strMsg = "文字列" '論理フォントの作成 FontHandle = CreateFont(48, 24, 400, 0, 0, 0, 0, _ 0, 1, 0, 0, 0, 0, "MS 明朝") '作成した論理フォントを描画対象のデバイスコンテキストに割り当てる OldFontHandle = SelectObject(TargetDcHandle, FontHandle) '文字列を描画する ResultCode = TextOut(TargetDcHandle, 10, 100, strMsg, _ LenB(StrConv(strMsg, vbFromUnicode))) '元のフォントオブジェクトに戻す ResultCode = SelectObject(TargetDcHandle, OldFontHandle) '作成した論理フォントを削除する ResultCode = DeleteObject(FontHandle) If Responce = vbYes Then '描画対象のデバイスコンテキストをプリンタに設定 TargetDcHandle = Printer.hDc '描画文字列の設定 strMsg = "文字列" Printer.Print "" '論理フォントの作成 FontHandle = CreateFont(48, 24, 300, 0, 0, 0, 0, _ 0, 1, 0, 0, 0, 0, "MS 明朝") '作成した論理フォントを描画対象のデバイスコンテキストに割り当てる OldFontHandle = SelectObject(TargetDcHandle, FontHandle) '文字列を印刷する ResultCode = TextOut(TargetDcHandle, 10, 100, strMsg, _ LenB(StrConv(strMsg, vbFromUnicode))) Printer.EndDoc '元のフォントオブジェクトに戻す ResultCode = SelectObject(TargetDcHandle, OldFontHandle) '作成した論理フォントを削除する ResultCode = DeleteObject(FontHandle) End If End Sub

参考URL:
http://dev.sfdata.ne.jp/VB/search.html
maruru01
質問者

お礼

回答ありがとうございます。 実は書いていただいた内容は、私も見たことがあります。 結局、PrinterのLineメソッドを、CreateFontの後に使用していたのが原因のようで、先にLineメソッドで線(四角)を書いて、その後でCreateFontでフォントを作成して、TextOutを使用すると、一応文字列は回転しました。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

今VB4環境で、しかもMSDNが手元にないので、調べる事ができません。 ですので回避方法として、非表示のピクチャボックスに描画して、それをプリントアウトではだめですか? フォームもピクチャボックスも内部では一緒だから、手っ取り早い回避方法だと思いますが。。。 やっぱダメ?

maruru01
質問者

お礼

回答ありがとうございます。 >非表示のピクチャボックスに描画して、それをプリントアウトではだめですか? PrintFormメソッドのことですよね。 実際には絵も一緒に印刷するので、PrintFormでは画質が問題で使えないんです。 なんにしろ、早い回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • グラフィカルパスについて

    グラフィカルパスについて教えてほしいことが2つあるんですが。 (1)1つ目は下記のソースのようにでフォントを作成しないと描画できないないのですが、その理由を教えて下さい。 デフォルトのフォントだとなぜダメなのでしょうか? (2)2つ目はフォントを作成した場合に、SetBkMode()の部分をコメントアウトすると、背景が塗りつぶされ、文字が塗りつぶされませんが、どうしてでしょうか?(このときフォント作成のコメントアウトは解除して下さい) MSDNにFillPath()の説明に「パスの内部を塗りつぶす」とありますが、このとき文字は「内部」の扱いにならないのでしょうか? どれが内部でどれが外部になるのかよく理解できていないだと思います。 // HFONT hFont; char Str[] = "ABCDE"; HDC hdc = GetDC( hWnd ); BeginPath( hdc ); SetBkMode( hdc, TRANSPARENT ); /* hFont = CreateFont( 80, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET ,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS ,DEFAULT_QUALITY, 0 ,NULL ); SelectObject( hdc ,hFont ); */ TextOut( hdc, 0, 0, Str, lstrlen(Str) ); EndPath( hdc ); SelectObject( hdc, CreateHatchBrush(HS_DIAGCROSS ,0xFF) ); FillPath( hdc ); SelectObject( hdc ,GetStockObject( SYSTEM_FONT ) ); // DeleteObject( hFont ); DeleteObject( SelectObject( hdc, GetStockObject(WHITE_BRUSH) ) ); ReleaseDC( hWnd, hdc ); どなたか分かる方いらっしゃいましたらご教授下さい。 よろしくお願いします。

  • フォントの指定 猫でもわかるwindowsプログラミングより

    猫でもわかるwindowsプログラミングの本で勉強している学生なんですが、第2章の2.4フォントの指定のところでプログラムを打ち込んでコンパイルしたのですがなぜか識別子が見つかりませんというエラーがでてコンパイルできません。どなたかわかる方お願いします。 一応プログラム(CALLBACK関数と論理フォント作成の関数のみ)↓ //ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){ static HFONT hFont1, hFont2, hFont3; PAINTSTRUCT ps; HDC hdc; char *szName1 = "○○"; char *szName2 = "▲▲"; switch (msg) { case WM_CREATE: hFont1 = MyCreateFont(40, SHIFTJIS_CHARSET, "HG行書体"); hFont2 = MyCreateFont(40, ANSI_CHARSET, "Fraktur JS"); hFont3 = MyCreateFont(40, SHIFTJIS_CHARSET, "MS 明朝"); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); SelectObject(hdc, hFont1); TextOut(hdc, 0, 0, (LPCTSTR)szName1, (int)strlen(szName1)); SelectObject(hdc, hFont2); TextOut(hdc, 0, 60, (LPCTSTR)szName2, (int)strlen(szName2)); SelectObject(hdc, hFont3); TextOut(hdc, 0, 120, (LPCTSTR)szName1, (int)strlen(szName1)); EndPaint(hWnd, &ps); break; case WM_DESTROY: DeleteObject(hFont1); DeleteObject(hFont2); DeleteObject(hFont3); PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; } //論理フォントの作成 HFONT MyCreateFont(int nHeight, DWORD dwCharSet, LPCTSTR lpName){ return(CreateFont(nHeight, 0, 0, 0, FW_DONTCARE. FALSE, FALSE, FALSE, dwCharSet, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, lpName)); } エラー内容↓ MyCreateFontの識別子が見つかりません。 論理フォントの関数のFALSEの値が構文エラーで参照できない。

  • VB6 APIを使った文字印刷について

    VB6でAPI(TextOut)を使って印刷する必要があるのですが、インターネットで調べたらサンプルがあってそれを参考にさせてもらおうと思っています。 ただ、当方としては、印刷位置と印刷文字サイズをmmで指定したく、色々試しているのですがうまくいきません。お分かりになる方どこがおかしいかご教示願えないでしょうか? サンプルのソースコードを以下に張っておきます。formにCommandボタンを一つ張ってください。 Option Explicit Dim FX As Integer 'フォントの横サイズ Dim FY As Integer 'フォントの縦サイズ Dim cx As Long '表示X座標 Dim cy As Long '表示Y座標 Private Const DEFAULT_CHARSET = 1 Private Const OUT_DEFAULT_PRECIS = 0 Private Const DEFAULT_QUALITY = 0 Private Const DEFAULT_PITCH = 0 Private Const FF_DONTCARE = 0 Private Const LF_FACESIZE = 32 Private Type Size cx As Long cy As Long End Type Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName(LF_FACESIZE) As Byte End Type Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As Size) As Long Private Sub Command1_Click() Printer.Print "" '文字印刷位置縦0mm 文字幅6mm、文字高6mmで印刷 FX = 6: FY = 6 cx = 0: cy = 0 PrintText "testてすと1" '文字印刷位置縦50mm 文字幅6mm、文字高12mmで印刷 FX = 6: FY = 12 cx = 0: cy = 50 PrintText "testてすと2" '縦倍角 '文字印刷位置縦200mm 文字幅12mm、文字高6mmで印刷 FX = 12: FY = 6 cx = 0: cy = 100 PrintText "testてすと3" '横倍角 Printer.EndDoc End Sub Sub PrintText(text As String) Dim LF As LOGFONT Dim IX As Integer Dim TempByteArray() As Byte Dim ByteArrayLimit As Long Dim OldFT As Long Dim NewFT As Long Dim rtn As Long Dim hdc As Long Dim PX As Long Dim PY As Long hdc = Printer.hdc '↓(1)ここで文字印刷位置をmmかTwipに変換しているつもりなのですが・・・ PX = Printer.ScaleX(cx, vbMillimeters, vbTwips) PY = Printer.ScaleY(cy, vbMillimeters, vbTwips) With LF .lfEscapement = 0 '文字の回転角度(角度*10) '↓(2)ここで文字サイズをmmかTwipに変換しているつもりなのですが・・・ .lfHeight = Printer.ScaleY(FY, vbMillimeters, vbTwips) '文字の高さ .lfWidth = Printer.ScaleX(FX, vbMillimeters, vbTwips) '文字の幅 .lfWeight = 400 '文字の太さ .lfItalic = False '斜体 .lfUnderline = False '下線 .lfStrikeOut = False '取り消し線 .lfCharSet = DEFAULT_CHARSET .lfOutPrecision = OUT_DEFAULT_PRECIS .lfClipPrecision = OUT_DEFAULT_PRECIS .lfQuality = DEFAULT_QUALITY .lfPitchAndFamily = DEFAULT_PITCH Or FF_DONTCARE TempByteArray = StrConv("MS ゴシック", vbFromUnicode) ByteArrayLimit = UBound(TempByteArray) For IX = 0 To ByteArrayLimit .lfFaceName(IX) = TempByteArray(IX) Next End With NewFT = CreateFontIndirect(LF) OldFT = SelectObject(hdc, NewFT) TextOut hdc, PX, PY, text, LenB(StrConv(text, vbFromUnicode)) rtn = SelectObject(hdc, OldFT) rtn = DeleteObject(NewFT) End Sub 以上よろしくおねがいします。

  • hPF=SelectObject(hD,hF);は何故エラーに

    HFONT hF,hPF; ・・・・・・・・・・・・・・ hD=BeginPaint(hW,&ps); hF=CreateFont(10,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,  SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,  DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,"System"); hPF=SelectObject(hD,hF);//ここがエラー ・・・・・・・・・・・・・・ において hPF=SelectObject(hD,hF);//ここがエラー を単に SelectObject(hD,hF);//これでエラーでなくなる とすればエラーでなくなります エラー内容は Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland goo.cpp: エラー E2034 goo.cpp 808: 'void *' 型は 'HFONT__ *' 型に変換できない(関数 __stdcall WinProcedure(HWND__ *,unsigned int,unsigned int,long) ) *** 1 errors in Compile *** hPFを後で使いたいので困っています どうしたらエラーがなくなるでしょうか?

  • フォントをカレントディレクトリから読み込む方法

    win32アプリケーションを作成しています。 フォントを、WINDOWS\Fontsからではなく、そのアプリケーションがあるディレクトリから読み込む必要が出てきたので、 hFont = CreateFont(iHeight,0,0,0,FW_DONTCARE, FALSE, FALSE, FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,"MS ゴシック"); を最後の引数だけ変更して、 hFont = CreateFont(iHeight,0,0,0,FW_DONTCARE, FALSE, FALSE, FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,"./hoge.ttf"); のようにしたのですが、読み込めていないようです。 MSDNを見ると、最後の引数はフォント名だとなっているので hFont = CreateFont(iHeight,0,0,0,FW_DONTCARE, FALSE, FALSE, FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,"hoge"); としましたが、やはりうまく行きません。 どのようにすれば、カレントディレクトリのフォントを使用できるのか、わかる方、ご教授お願いします。 環境はvc 2005, XPです。

  • 5^3をAPIで表示するために

    HDC hD; PAINTSTRUCT ps; TEXTMETRIC tm; HDROP hDrop; HFONT hPF,hF; string str; int i_w,i_h; ................................................................ case WM_PAINT: hD=BeginPaint(hW,&ps); SelectObject(hD,GetStockObject(OEM_FIXED_FONT)); GetTextMetrics(hD,&tm); i_w=tm.tmAveCharWidth; i_h=tm.tmHeight; SetTextAlign(hD,TA_LEFT|TA_TOP); ///////////////////////////////////////////////// str="5"; TextOut(hD,0,0,str.c_str(),str.size()); ///////////////////////////////////////////////// hF=CreateFont (i_h/2,i_w/2,0,0,FW_NORMAL,FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS ,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,"System"); hPF=(HFONT)SelectObject(hD,hF); ///////////////////////////////////////////////// str="3"; TextOut(hD,i_w,0,str.c_str(),str.size()); ///////////////////////////////////////////////// SelectObject(hD,hPF); DeleteObject(hF); EndPaint(hW,&ps); return 0; とすればできますがCreateFontによる文字サイズは思うようなサイズにならないことが多くてやってみないとサイズが半分になっているかどうかわかりません 酷い場合には半分のサイズを指定しても全くサイズが変わらない場合もあります 上の例では i_h=18でありi_w=8でありCreateFont後 キャラクタの高さはi_h/2=9となりキャラクタの幅はi_w/2=4になってくれました しかしこの場合はたまたまうまくいったので通常はこうはなりません 確実にもとのサイズの半分(面積比1/4)のキャラクタサイズにする方法を教えてください

  • 画像の90度回転表示の処理時間を短縮したい

    今、PictureBox に読み込んだ画像を90度回転して別の PictureBox に表示していますが、処理にとても時間がかかっています。(480×640ピクセルを右90度変換するのに約3.5秒) もっと処理が早くなる方法があれば教えてください。よろしくお願いします。 ---現在の処理(Picture1 → Picture2)--- Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long Dim p1sw  As Long  'Picture1.ScaleWidth Dim p1sh  As Long  'Picture1.ScaleHeight Dim x1    As Long Dim y1    As Long Dim c    As Long  'カラーコード Dim hDC1  As Long  'Picture1.hDC Dim hDC2  As Long  'Picture2.hDC Dim X    As Long Dim Y    As Long '縦横サイズを逆転する With Picture1   p1sw = .ScaleWidth   p1sh = .ScaleHeight   hDC1 = .hdc End With With Picture2   .Height = Picture1.Width   .Width = Picture1.Height   hDC2 = .hdc End With p1sw = p1sw - 1 p1sh = p1sh - 1 'ピクチャを90度回転 For X = 0 To p1sw         'Picture1のX座標   y1 = X   For Y = 0 To p1sh       'Picture1のY座標     x1 = p1sh - Y     c = GetPixel(hDC1, X, Y) 'カラー情報の取得     '取得したカラーを指定位置に設定する     If c <> -1 Then Call SetPixelV(hDC2, x1, y1, c)   Next Y Next X # OSはWindows95、VB6.0(SP5)を使用しています。

  • API関係の用語で質問です

    'デバイスコンテキストにオブジェクトを選択する Private Declare Function SelectObject Lib "gdi32" _ (ByVal hDC As Long, ByVal hObject As Long) As Long 'グラフィックスオブジェクトを削除しシステムリソースを開放する Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long ―――――――――――――――――――――――――――――――― VBの初心者です 使うAPIとは別に上のようなSelectObjectや DeleteObjectという関数を 使わなければならないようなのですが これはどういう意味なのでしょうか? またこれはどういうことをしているのでしょうか? ほかの例ではDeleteObjectという関数だけを 使ってSelectObjectを使っていないのも見かけました。

  • プリンタの印刷ジョブを削除したい。

    プリンタの印刷ジョブを削除したい。 現在、VB.NET(Visual Studio 2008)で開発を行っています。 SetPrinter関数を使用して、印刷ジョブを全て削除したいのですがSetPrinterに失敗してしまいます。 GetLastErrorの戻り値は「5」でアクセス拒否のようです。 SetPrinterの前にOpenPrinterは成功しており、プリンタの印刷ジョブの情報は取得できています。 なお、同環境でVB6.0で同様のプログラムを作成し実行したところジョブの削除ができました。 類似した現象・解決方法等ご存知でしたら教えてください。 開発環境はWindowsXP、Visual Studio 2008です。 以下、ソースの抜粋です。 '宣言 Private Const DEF_INIT_BUFFER_PERFORM As Integer = 100 Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const PRINTER_ACCESS_ADMINISTER = &H4 Public Const PRINTER_ACCESS_USE = &H8 Public Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE) Public Structure PRINTER_DEFAULTS Public pDatatype As IntPtr Public pDevMode As IntPtr Public DesiredAccess As Integer End Structure <DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)> _ Private Shared Function OpenPrinter( _ ByVal pPrinterName As String, _ ByRef hPrinter As IntPtr, _ ByVal pDefault As PRINTER_DEFAULTS _ ) As Boolean End Function <DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)> _ Private Shared Function SetPrinter( _ ByVal hPrinter As IntPtr, _ ByVal Level As Long, _ ByVal pDefault As IntPtr, _ ByVal Command As Long _ ) As Boolean End Function '実行部 Dim pd As New PRINTER_DEFAULTS pd.DesiredAccess = PRINTER_ALL_ACCESS Dim printerHandle As IntPtr Dim ret As Boolean = OpenPrinter("プリンタ名", printerHandle, pd) Dim err As Integer = Marshal.GetLastWin32Error() 'Falseが返る ret = SetPrinter(printerHandle, CLng(0), IntPtr.Zero, CLng(3)) '5が返る err = Marshal.GetLastWin32Error()

  • ドットプリンタでバーコードの印刷

    こんにちは。いつもお世話になっています。 現在、ドットプリンタにバーコードの印刷を試みていますが、 数値のままの表記になってしまい、うまくいきません。 他の方の質問・回答も検索し、いろいろ試したのですが 状況に変わりがなかったので改めて質問を書かせていただきました。 現在使用しているプリンタは、NECのMultiImpactです。 (VB6.0で作業しています。) 実際に現在組んでいるコードは下記のようなものです。 Public Sub AA()   ~略~   Printer.FontName = "OCR-B 10cpi"   Printer.FontSize = 12   Call Prt_set(10, 200, strNo) '※1   Printer.Font.Charset = 0   Printer.Font = "Code39"   Call Prt_set(280, 240, "*123456*")  '※2   Printer.Font.Charset = 128   Printer.FontName = "OCR-B 10cpi"   Call Prt_set(280, 500, strC) '※3   ~略~ End Sub '指定された位置に印字する Public Sub Prt_set(i As Integer, j As Integer, Moji As String)    Printer.CurrentY = i    Printer.CurrentX = j    Printer.Print Moji End Sub 実行すると、 ※1と※3の文字は正常に出力されますが、※2はそのまま"*123456*"数値(文字列?)で印刷されてしまいます。 初心者のため、見苦しいコードになっているかもしれませんが、どなたかなにか教えていただけないでしょうか。 よろしくお願いします。

このQ&Aのポイント
  • MFC-J6583CDWでA4コピーをする際に、コピーの位置がずれてしまう問題が発生しています。
  • 再起動すると一時的に解消されますが、2回目以降のコピーでは同様の問題が発生します。
  • この問題について、お使いの環境や接続方法、関連するソフト・アプリなどの情報を教えていただけますか?
回答を見る

専門家に質問してみよう