- ベストアンサー
プログラムを実行して不具合の出たプリンタを直したい
よろしくお願いします。 『印刷をするプログラム』を書いて実行した結果、 PCからのスキャン、プリンタ本体での、スキャン、コピーが出来なくなりました。 チェックディスク、システムの復元、ドライバーの入れ替え、などをしたのですが直りません。 多分、自作プログラムの実行により『プリンタ』か、『PC』のプログラムに、なんらかの異常が出たと思うのですが、プログラムを直せば良いのか、リカバリするのか、修復する方法が見つかりません。 詳しい方、アドバイスをよろしくお願いします。 自作のメモ帳にコーディングしたソースです。 //印刷関数 int MyPrint(HWND hWnd) { int i; PRINTDLG pd; DOCINFO di; TEXTMETRIC tm; char *lpszBuf = TEXT("ここが印刷される"); memset(&pd, 0, sizeof(PRINTDLG)); //PRINTDLG構造体の定義 pd.lStructSize = sizeof(PRINTDLG); pd.hwndOwner = hWnd; pd.hDevMode = NULL; pd.hDevNames = NULL; pd.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC | PD_NOPAGENUMS | PD_NOSELECTION | PD_HIDEPRINTTOFILE; pd.nMinPage = 1; pd.nMaxPage = 1; pd.nFromPage = 1; pd.nToPage = 1; pd.nCopies = 1; if(PrintDlg(&pd) == 0) return -1; memset(&di, 0, sizeof(DOCINFO)); //DOCINFO構造体の定義 di.cbSize = sizeof(DOCINFO); di.lpszDocName = TEXT("テスト"); StartDoc(pd.hDC, &di); //印刷ジョブ StartPage(pd.hDC); GetTextMetrics(pd.hDC, &tm); for(i = 0; i < 5; i++){ //< 50印刷部数 SetTextColor(pd.hDC, RGB(0, 0, 0)); TextOut(pd.hDC, 5, 5 + (tm.tmHeight * i + 20), lpszBuf, (int)strlen(lpszBuf)); /*for(i = 0; i < 5; i++){ SetTextColor(pd.hDC, RGB(255, 0, 0)); TextOut(pd.hDC, 5, 5 + (tm.tmHeight * i + 20), lpszBuf, (int)strlen(lpszBuf));*/ } EndPage(pd.hDC); EndDoc(pd.hDC); DeleteDC(pd.hDC); return 0; }
- みんなの回答 (2)
- 専門家の回答
お礼
御礼が遅くなってすみません。 いろいろと試してみたのですが、直りませんでした。 リカバリもだめでした、これから修理に出そうと思っています。 ありがとうございました。
補足
アドバイス有難うございます。 早速、プリンターの削除と追加をしてみます。 プリンターの電源については、いつも切った状態で、使う時だけ電源を入れるようにしています。 >for 文の中で、「改ページ」に相当する命令は・・?。 『猫でもわかる…第2版』を参考にしているのですが、『改ページ』についての命令文は解説してありませんでした。 ただ『複数のページにわたって印刷するには』 1、StartPage()を実行 2、印刷したいことをプリンタのデバイスコンテキストに出力 3、EndPage()を実行 と解説してあります。 質問の時のソースは、実行結果が、『ここが印刷される』と、縦に10行、表示されるだけです。 >for(i = 0; i < 5; i++){ //< 50印刷部数 は、『5行にわたって印刷される』の意味で、5ページに渡っての意味ではありませんでした。 私の解釈ミスでした。(すみません。) それから、フリーのソフトを教えていただき、有難うございます。 早速使ってみます。 結果報告は、お礼のほうにしたいと思っています。