« Windowsにおける時刻同期設定 | トップページ | ボジョレーヌーボー解禁、そしてNEO »

2010年11月14日 (日曜日)

Visual Studio 2005 SP1 C++のページ指定印刷

MFCのライブラリにバグがあり、「印刷」ダイアログでページ範囲を指定しても、なぜか最終ページまで印刷されてしまう。
実は、印字対象の最終ページを最大ページ数で上書きしている箇所があるのが原因。

こういう時は、CViewクラスの派生クラスを作り、OnPrepareDC( )をオーバーライドして、強引に、最大ページ数を印刷対象の最終ページにして回避。

以下は、CListViewの例。

void CListViewEx::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
	CListView::OnPrepareDC(pDC, pInfo);
	if(pInfo && !pInfo->m_bPreview && !pInfo->m_pPD->PrintAll())
	{
		pInfo->SetMaxPage(pInfo->GetToPage());
	}
}

|

« Windowsにおける時刻同期設定 | トップページ | ボジョレーヌーボー解禁、そしてNEO »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/162619/50026735

この記事へのトラックバック一覧です: Visual Studio 2005 SP1 C++のページ指定印刷:

« Windowsにおける時刻同期設定 | トップページ | ボジョレーヌーボー解禁、そしてNEO »