#99 Article 1166 Posted at 1998/09/29 00:14:28 by OPRETER (MAP1819) [PROG.WIN]
Subject: おしえて Windowsのえらいひと(^^;;<古い
コモンの印刷ダイアログの表示の方法を教えてください(^^;;
とりあえず、テストとしてSDKヘルプの印刷ダイアログのサンプルコードを
まんまコピーしてやってるんですが、ど~もうまくいかねぇ…
#あ、まだwin32のコンパイル環境そろってないんで、win16環境です(^^;;;
-- ここから --
void pbs_PrtGra(HWND hwnd)
{
PRINTDLG pd;
/* 構造体のすべてのメンバを0に設定 */
memset(&pd, 0, sizeof(PRINTDLG));
/* PRINTDLG構造体の必要なメンバを初期化 */
pd.lStructSize = sizeof(PRINTDLG);
pd.hwndOwner = hwnd;
pd.Flags = PD_RETURNDC;
if (PrintDlg(&pd) != 0) {
Escape(pd.hDC, STARTDOC, 8, "text", NULL);
/* テキストおよび長方形を印刷 */
TextOut(pd.hDC, 50, 50, "Common Dialog Test Page", 23);
Rectangle(pd.hDC, 50, 90, 625, 105);
Escape(pd.hDC, NEWFRAME, 0, NULL, NULL);
Escape(pd.hDC, ENDDOC, 0, NULL, NULL);
DeleteDC(pd.hDC);
if (pd.hDevMode != NULL)
GlobalFree(pd.hDevMode);
if (pd.hDevNames != NULL)
GlobalFree(pd.hDevNames);
}
}
-- ここまで --
メニューから「印刷」を選ぶと、この関数に飛ぶようにしてあります。
ところが、開くには開くんですが、「キャンセル」してプログラムを終了すると、
プログラムが一般保護違反でエラー…
SDKヘルプに「PRINTDLG構造体はstaticかグローバルでなければならない」と
あったんで、宣言している「PRINTDLG pd」にstaticつけたり関数の外に持って
いくと、こんどは common.dll が一般保護違反で落ちる…
いったい何が悪いんやねん…だれかおせーて…
#資料へのポインタでも可です。
ものはついで。もうひとつ。
CDのDISK-IDの取得方法とCDドライブのイジェクトの方法(^^;;
たぶんどっちも MCI コマンドであるとは思うんだけど、手持ちのMCIヘルプには
載ってない…
#これも資料へのポインタでも可です。
OPRETER