UNICODE文字をプリンタ出力するには?

解決


kou1sakamoto  2003-08-05 05:47:09  No: 51899

初めて書き込みさせて頂きます、坂本と申します。

VC++、win32APIについて全くの素人なのですが、仕事でVBからUNICODEを
プリンタ出力する必要性に迫られおり、色々調べて上記コードまで作成したのですが、うまく印刷されません(?に化けてしまう)

以下のようなコードを書いて、DLLとしてVBから呼び出しをしています。

// 唯一の CTestdll2App オブジェクト

CTestdll2App theApp;

void CTestdll2App::PrintUnicodeData()
{

  FILE *fp;          // ファイルポインタ
  wchar_t sFile[MAX_PATH];    // ファイルパス
  wchar_t sBuff[256 * 2];  
  wchar_t sBuffUni[256];

  HDC dcPrint;        // プリンタデバイスコンテキスト
  DOCINFO docInfo ;      // 印刷情報

  // 初期化
  memset(sBuff, 0x00, sizeof(sBuff));
  memset(sBuffUni, 0x00, sizeof(sBuffUni));

  /** ファイル読み込み **/
  wcscpy(sFile, L"unicode.txt" );    // 読込みファイルパス作成
  fp = _wfopen(sFile, L"rb");          // バイナリ読込みモードでファイルオープン
  if(NULL == fp){
    AfxMessageBox(L"ファイルオープンエラー");
    return;
  }
  fgetws(sBuffUni, sizeof(sBuffUni), fp);    // 1行読込み
  //fgets(sBuff, sizeof(sBuff), fp);
  fclose( fp );                // ファイルクローズ

  /** 印刷 **/

  dcPrint = CreateDC( L"WINSPOOL", L"\\\\nl2sv2\\HP1-LBP1810-1", NULL, 0);

  // 初期化
  memset( &docInfo, NULL, sizeof( DOCINFO ));

  StartDoc( dcPrint, &docInfo);      // 印字開始
  StartPage( dcPrint );          
  
  // TextOutWを使用してUnicode.txtから読み込んだ文字列を出力してみる。
    TextOutW(dcPrint, 0, 1, sBuffUni, sizeof(sBuffUni));

  EndDoc( dcPrint );            // 印字終了
  DeleteDC( dcPrint );          // デバイスコンテキストの破棄

  AfxMessageBox(L"印刷しましたよ");
  return;
}

どなたか、ご教授願えないでしょうか?
宜しくお願い致します。


kou1sakamoto  2003-08-05 05:59:18  No: 51900

自己レスです。

環境を書き忘れました。
WindowsXP(Homeエディション)、VB、VC++ともにVisualStudio6.0です。

宜しくお願い致します。


Wanderer  2003-08-05 23:52:11  No: 51901

とりあえず確認なんですけど、プリンタではなく画面に出力した場合は
正常なのでしょうか?

あと、EndPage()が必要だと思います。


kou1sakamoto  2003-08-07 01:30:17  No: 51902

再び自己レスです。

最初のソースにフォントの設定を追加したところ、
UNICODEにしかない文字が正しく印刷されました。

お騒がせしまして申し訳ありませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加