• ベストアンサー

DOS画面をプリンタ出力

MS-DOSプロンプトの画面をプリンタに出力されるプログラムを 作ろうと思いました。 #include <iostream.h> main(){ char ppp; cout << "pの入力でプリントします"; cin >> ppp; if (ppp=='p'){ cout << "pが入力された"; ここでプリンタ出力命令 } } プリンタ出力命令はどういう命令文を書ければいいのか 教えてください。

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.1

はっきり言って、ポインタの理解があやふやな今のA__さんには早いと思います。 bcc(もしかして、フリーbcc55コンパイラを使用なさっておられるのかな?)でやるということは、Win32APIを直接呼ぶプログラムを書く必要があります。 これは今のA__さんにはかなり難しいのではないでしょうか? (書けたとしても、他人が書いたも同然で、  まったく意味がわからないと思います。  単に呼び出していると言うだけの世界です。) 今のA__さんの理解できる範囲内で、やるとすれば、 DOSプロンプトの仕組の一つである、 リダイレクト機能を利用するのが簡単かもしれません。 #include <iostream.h> #include <stdlib.h> #include <string> void main(int, char *argv[]) { /* 引数があるかないかによって、「モード」を分ける * 仕組の説明: * p が入力  → 〔自分〕〔ppp〕〔> PRN〕の形式で自分自身を呼び出す * p が非入力 → そのまま終了 */ // 引数がないと、要求モードに入る if (!argv[1]) { cout << "[p] の入力でプリントします。\n$>"; char ppp; cin >> ppp; if (ppp=='p') { cout << "p が入力されました。\n"; // p が押されると、〔自分〕〔ppp〕〔> PRN〕の形式で自分自身を呼び出す string s=string(argv[0])+" "+ppp+" > PRN\0"; system(s.c_str()); } } else { // 〔自分〕〔ppp〕〔> PRN〕の形式で自分自身を呼び出されるとここにくる。 // ここでのこのプログラムの役割は、印刷すべき文字を吐き出すだけ。 cout << argv[1]; } } ここでは、強引にひとつのプログラム(はっきり言って、こんなプログラムは構造的に推奨されません)としましたが、 (1)「入力の要求用 兼 入力されたデータをファイルに残しておくプログラム」 (2)「データファイルを読みこみ、表示するプログラム」 という2つのプログラムを作成し、(1)で p が入力されたときに system("(2)の名前.exe >PRN")としてやるのが より良いプログラム設計といえると思います。

A__
質問者

お礼

C++の初級の勉強のは、まずは文字列の処理とプリントアウトぐらいを 覚えよう と思っていたけど、プリンター出力命令は思ったより 難しいものだと知りました。 でも、プリンター出力は知っておきたいからなんとか理解しようと がんばります。 初心者のための簡単なソースを教えてもらえたのがうれしかったです。 コンパイラはbcc5.5です。 ありがとうございます。

その他の回答 (1)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

DOSならSTDPRNに対応するストリームを開けばできますね。 "prn:"をストリームで開いて書きこめばプリンタに出力されます。 「DOS画面を」ということに固執するとVxDを書かないといけません。 “画面”の出力はドライバの範疇です。

A__
質問者

お礼

言葉が難しくて分からなかったけど、プリンタ出力をする時の キーワードになると思いました。 ありがとうございます。