図面印刷:デフォルトプリンタが定義されていない

レポート番号 コマンド 発生 修正 修正日 担当
B20130 PLOT/PRINT - 19.16、20.09 2016/02/25 AYO

現象

 図面印刷で「デフォルトプリンタが定義されていません」とメッセージが表示されて
 印刷できないことがある。

原因

 未解決。

対応

 1.デフォルトプリンタの情報取得に失敗した場合、Windowsのプリントダイアログ関数
   のエラーコードをログファイルに出力します。
   ログファイル名
     C:\temp\ACAD_PrintDlg.log
   内容
     Error Code : 0xAAAA (2016/02/25 14:20:05)
     AAAA : エラーコード(16進)
 2.このエラーになると、エラーフラグをオンにして、再度の図面印刷の呼び出しは上記
   のエラーメッセージを表示して図面印刷を中断していました。
   再度図面印刷が呼び出されたときは、デフォルトプリンタ情報を取得しなおすように
   変更しました。

エラーコード一覧

16進 意味
CDERR_DIALOGFAILURE 0xFFFF ダイアログボックスを作成できませんでした。DialogBox 関数に対するコモンダイアログボックス関数の呼び出しに失敗しました。たとえば、コモンダイアログボックス関数を呼び出す際に無効なウィンドウハンドルを指定すると、この値が発生します。
CDERR_STRUCTSIZE 0x0001 該当するコモンダイアログボックス用の初期化構造体の lStructSize メンバが無効です。
CDERR_INITIALIZATION 0x0002 初期化の際にコモンダイアログボックス関数が失敗しました。たとえば、メモリ不足の場合に発生します。
CDERR_NOTEMPLATE 0x0003 該当するコモンダイアログボックス用の初期化構造体の Flags メンバで ENABLETEMPLATE フラグがセットされていますが、対応するテンプレートが正しく提供されませんでした。
CDERR_NOHINSTANCE 0x0004 該当するコモンダイアログボックス用の初期化構造体の Flags メンバで ENABLETEMPLATE フラグがセットされていましたが、対応するインスタンスハンドルが正しく提供されませんでした。
CDERR_LOADSTRFAILURE 0x0005 コモンダイアログボックス関数は、指定された文字列のロードに失敗しました。
CDERR_FINDRESFAILURE 0x0006 リソースを見つけられなかったので、コモンダイアログボックス関数が失敗しました。
CDERR_LOADRESFAILURE 0x0007 コモンダイアログボックス関数は、指定されたリソースのロードに失敗しました。
CDERR_LOCKRESFAILURE 0x0008 コモンダイアログボックス関数は、指定されたリソースのロックに失敗しました。
CDERR_MEMALLOCFAILURE 0x0009 コモンダイアログボックス関数は、内部の構造体用のメモリ割り当てを行えませんでした。
CDERR_MEMLOCKFAILURE 0x000A コモンダイアログボックス関数は、ハンドルに関連付けられているメモリをロックできませんでした。
CDERR_NOHOOK 0x000B 該当するコモンダイアログボックス用の初期化構造体の Flags メンバで ENABLEHOOK フラグがセットされていましたが、対応するフックプロシージャを指すポインタが正しく提供されませんでした。
CDERR_REGISTERMSGFAIL 0x000C コモンダイアログボックス関数が呼び出した RegisterWindowMessage 関数が、エラーコードを返しました。
PDERR_SETUPFAILURE 0x1001 PrintDlg 関数は、必要なリソースのロードに失敗しました。
PDERR_PARSEFAILURE 0x1002 PrintDlg 関数が、WIN.INI ファイルの [devices] セクション内の文字列の解析に失敗しました。
PDERR_RETDEFFAILURE 0x1003 構造体の Flags メンバで PD_RETURNDEFAULT フラグがセットされていますが、hDevMode メンバまたは hDevNames メンバが NULL ではありませんでした。
PDERR_LOADDRVFAILURE 0x1004 PrintDlg 関数は、指定されたプリンタのデバイスドライバのロードに失敗しました。
PDERR_GETDEVMODEFAIL 0x1005 プリンタドライバが、DEVMODE 構造体を初期化できませんでした。( このエラーコードは、Windows 3.0 以降のプリンタドライバにのみ適用されます。)
PDERR_INITFAILURE 0x1006 PrintDlg 関数の初期化中に失敗しましたが、この失敗を記述する具体的な拡張エラーコードがありません。これは、PrintDlg 関数の汎用の既定のエラーコードです。
PDERR_NODEVICES 0x1007 プリンタドライバが見つかりません。
PDERR_NODEFAULTPRN 0x1008 「通常使うプリンタ」が存在しません。
PDERR_DNDMMISMATCH 0x1009 DEVMODE 構造体と DEVNAMES 構造体が、異なったプリンタを指定しています。
PDERR_CREATEICFAILURE 0x100A PrintDlg 関数は、情報コンテキストの作成中に失敗しました。
PDERR_PRINTERNOTFOUND 0x100B WIN.INI ファイルの [devices] セクションが、要求されたプリンタのエントリを保持していませんでした。
PDERR_DEFAULTDIFFERENT 0x100C 構造体の wDefault メンバで DN_DEFAULTPRN フラグをセットして PrintDlg 関数を呼び出しましたが、他の構造体メンバが指定するプリンタと現在の「通常使うプリンタ」が一致しませんでした。DEVNAMES 構造体のメンバを設定した後、ユーザーが「通常使うプリンタ」を変更したときにこのエラーが発生します。既に DEVNAMES 構造体で指定されているプリンタを使うには、DN_DEFAULTPRN フラグをクリアし、もう一度 PrintDlg 関数を呼び出してください。「通常使うプリンタ」を使うには、DEVNAMES 構造体の指定を( 構造体が存在する場合、この構造体も)NULL に置き換えて、もう一度 PrintDlg 関数を呼び出してください。

Copyright© ITOCHU Techno-Solutions Corporation.