次の方法で共有


CDC クラス

デバイス コンテキスト オブジェクトのクラスを定義します。

構文

class CDC : public CObject

メンバー

パブリック コンストラクター

名前 説明
CDC::CDC CDC オブジェクトを構築します。

パブリック メソッド

名前 説明
CDC::AbortDoc 現在の印刷ジョブを終了し、 StartDoc メンバー関数の最後の呼び出し以降にアプリケーションがデバイスに書き込むすべてのものを消去します。
CDC::AbortPath デバイス コンテキスト内のすべてのパスを閉じて破棄します。
CDC::AddMetaFileComment バッファーから指定された拡張形式のメタファイルにコメントをコピーします。
CDC::AlphaBlend ピクセルが透明または半透明のビットマップを表示します。
CDC::AngleArc 線分と円弧を描画し、現在位置を円弧の終点に移動します。
CDC::Arc 楕円の円弧を描画します。
CDC::ArcTo 楕円の円弧を描画します。この関数は Arcに似ていますが、現在の位置が更新される点が異なります。
CDC::Attach この CDC オブジェクトに Windows デバイス コンテキストをアタッチします。
CDC::BeginPath デバイス コンテキストでパス 角かっこを開きます。
CDC::BitBlt 指定したデバイス コンテキストからビットマップをコピーします。
CDC::Chord コード (楕円と線分の交差で囲まれた閉じた図形) を描画します。
CDC::CloseFigure パス内の開いている図形を閉じます。
CDC::CreateCompatibleDC 別のデバイス コンテキストと互換性のあるメモリ デバイス コンテキストを作成します。 これを使用して、メモリ内のイメージを準備できます。
CDC::CreateDC 特定のデバイスのデバイス コンテキストを作成します。
CDC::CreateIC 特定のデバイスの情報コンテキストを作成します。 これにより、デバイス コンテキストを作成せずに、デバイスに関する情報を迅速に取得できます。
CDC::DeleteDC この CDC オブジェクトに関連付けられている Windows デバイス コンテキストを削除します。
CDC::DeleteTempMap FromHandleによって作成された一時的なCDC オブジェクトを削除するために、CWinAppアイドル時間ハンドラーによって呼び出されます。 また、デバイス コンテキストをデタッチします。
CDC::Detach この CDC オブジェクトから Windows デバイス コンテキストをデタッチします。
CDC::DPtoHIMETRIC デバイス単位を HIMETRIC 単位に変換します。
CDC::DPtoLP デバイスユニットを論理ユニットに変換します。
CDC::Draw3dRect 3 次元の四角形を描画します。
CDC::DrawDragRect ドラッグ時に四角形を消去して再描画します。
CDC::DrawEdge 四角形の端を描画します。
CDC::DrawEscape グラフィックス デバイス インターフェイス (GDI) を介して直接使用できないビデオ ディスプレイの描画機能にアクセスします。
CDC::DrawFocusRect フォーカスを示すために使用するスタイルで四角形を描画します。
CDC::DrawFrameControl フレーム コントロールを描画します。
CDC::DrawIcon アイコンを描画します。
CDC::DrawState 画像を表示し、視覚効果を適用して状態を示します。
CDC::DrawText 指定された四角形に、書式設定されたテキストを描画します。
CDC::DrawTextEx 他の形式を使用して、指定した四角形に書式設定されたテキストを描画します。
CDC::Ellipse 楕円を描きます。
CDC::EndDoc StartDoc メンバー関数によって開始された印刷ジョブを終了します。
CDC::EndPage ページが終了していることをデバイス ドライバーに通知します。
CDC::EndPath パス ブラケットを閉じ、ブラケットによって定義されたパスをデバイス コンテキストに選択します。
CDC::EnumObjects デバイス コンテキストで使用できるペンとブラシを列挙します。
CDC::Escape アプリケーションが GDI を介して特定のデバイスから直接使用できない機能にアクセスできるようにします。 また、Windows エスケープ関数へのアクセスも許可します。 アプリケーションによって行われたエスケープ呼び出しは変換され、デバイス ドライバーに送信されます。
CDC::ExcludeClipRect 既存のクリッピング領域から指定した四角形を引いた領域で構成される新しいクリッピング領域を作成します。
CDC::ExcludeUpdateRgn ウィンドウ内の更新された領域をクリッピング領域から除外することで、ウィンドウの無効な領域内での描画を防止します。
CDC::ExtFloodFill 領域を現在のブラシで塗りつぶします。 CDC::FloodFill メンバー関数よりも柔軟性が高くなります。
CDC::ExtTextOut 現在選択されているフォントを使用して、四角形領域内の文字列を書き込みます。
CDC::FillPath 現在のパス内の開いている図形を閉じ、現在のブラシとポリゴンフィル モードを使用してパスの内部を塗りつぶします。
CDC::FillRect 特定のブラシを使用して、指定した四角形を塗りつぶします。
CDC::FillRgn 指定したブラシで特定の領域を塗りつぶします。
CDC::FillSolidRect 単色で四角形を塗りつぶします。
CDC::FlattenPath 選択したパス内の曲線を現在のデバイス コンテキストに変換し、各曲線を一連の線に変換します。
CDC::FloodFill 領域を現在のブラシで塗りつぶします。
CDC::FrameRect 四角形の周囲に罫線を描画します。
CDC::FrameRgn ブラシを使用して、特定の領域の周囲に罫線を描画します。
CDC::FromHandle デバイス コンテキストへのハンドルが指定されている場合は、 CDC オブジェクトへのポインターを返します。 CDC オブジェクトがハンドルにアタッチされていない場合は、一時的なCDC オブジェクトが作成されてアタッチされます。
CDC::GetArcDirection デバイス コンテキストの現在の円弧の方向を返します。
CDC::GetAspectRatioFilter 現在の縦横比フィルターの設定を取得します。
CDC::GetBkColor 現在の背景色を取得します。
CDC::GetBkMode バックグラウンド モードを取得します。
CDC::GetBoundsRect 指定したデバイス コンテキストの現在の累積外接する四角形を返します。
CDC::GetBrushOrg 現在のブラシの原点を取得します。
CDC::GetCharABCWidths 現在のフォントから、指定した範囲内の連続する文字の幅を論理単位で取得します。
CDC::GetCharABCWidthsI 現在の TrueType フォントから、指定した範囲内の連続するグリフ インデックスの幅を論理単位で取得します。
CDC::GetCharacterPlacement 文字列に関するさまざまな情報を取得します。
CDC::GetCharWidth 現在のフォントから、特定の範囲内の連続する文字の小数部の幅を取得します。
CDC::GetCharWidthI 現在のフォントから、指定した範囲の連続するグリフ インデックスの幅を論理座標で取得します。
CDC::GetClipBox 現在のクリッピング境界の周囲で最も狭い外接する四角形の寸法を取得します。
CDC::GetColorAdjustment デバイス コンテキストの色調整値を取得します。
CDC::GetCurrentBitmap 現在選択されている CBitmap オブジェクトへのポインターを返します。
CDC::GetCurrentBrush 現在選択されている CBrush オブジェクトへのポインターを返します。
CDC::GetCurrentFont 現在選択されている CFont オブジェクトへのポインターを返します。
CDC::GetCurrentPalette 現在選択されている CPalette オブジェクトへのポインターを返します。
CDC::GetCurrentPen 現在選択されている CPen オブジェクトへのポインターを返します。
CDC::GetCurrentPosition ペンの現在位置を取得します (論理座標)。
CDC::GetDCBrushColor 現在のブラシの色を取得します。
CDC::GetDCPenColor 現在のペンの色を取得します。
CDC::GetDeviceCaps 特定のディスプレイ デバイスの機能に関する、指定した種類のデバイス固有の情報を取得します。
CDC::GetFontData スケーラブルなフォント ファイルからフォント メトリック情報を取得します。 取得する情報は、フォント ファイルへのオフセットと、返される情報の長さを指定することによって識別されます。
CDC::GetFontLanguageInfo 指定した表示コンテキストで現在選択されているフォントに関する情報を返します。
CDC::GetGlyphOutline 現在のフォントのアウトライン文字のアウトライン曲線またはビットマップを取得します。
CDC::GetGraphicsMode 指定したデバイス コンテキストの現在のグラフィックス モードを取得します。
CDC::GetHalftoneBrush ハーフトーン ブラシを取得します。
CDC::GetKerningPairs 指定したデバイス コンテキストで現在選択されているフォントの文字カーニング ペアを取得します。
CDC::GetLayout デバイス コンテキスト (DC) のレイアウトを取得します。 レイアウトは、左から右 (既定) または右から左 (ミラー化) のいずれかにできます。
CDC::GetMapMode 現在のマッピング モードを取得します。
CDC::GetMiterLimit デバイス コンテキストのマイター制限を返します。
CDC::GetNearestColor 指定されたデバイスが表すことができる指定された論理色に最も近い論理色を取得します。
CDC::GetOutlineTextMetrics TrueType フォントのフォント メトリック情報を取得します。
CDC::GetOutputCharWidth 出力デバイス コンテキストを使用して、現在のフォントから連続する文字グループ内の個々の文字の幅を取得します。
CDC::GetOutputTabbedTextExtent 出力デバイス コンテキストの文字列の幅と高さを計算します。
CDC::GetOutputTextExtent 現在のフォントを使用して、出力デバイス コンテキストのテキスト行の幅と高さを計算して、寸法を決定します。
CDC::GetOutputTextMetrics 出力デバイス コンテキストから現在のフォントのメトリックを取得します。
CDC::GetPath デバイス コンテキストで選択されたパスで見つかった曲線の端点と制御点を定義する座標を取得します。
CDC::GetPixel 指定したポイントにあるピクセルの RGB カラー値を取得します。
CDC::GetPolyFillMode 現在の多角形塗りつぶしモードを取得します。
CDC::GetROP2 現在の描画モードを取得します。
CDC::GetSafeHdc 出力デバイス コンテキスト CDC::m_hDC返します。
CDC::GetStretchBltMode 現在のビットマップ ストレッチ モードを取得します。
CDC::GetTabbedTextExtent 属性デバイス コンテキストの文字列の幅と高さを計算します。
CDC::GetTextAlign テキスト配置フラグを取得します。
CDC::GetTextCharacterExtra 文字間間隔の現在の設定を取得します。
CDC::GetTextColor 現在のテキストの色を取得します。
CDC::GetTextExtent 現在のフォントを使用して、属性デバイス コンテキストのテキスト行の幅と高さを計算して、ディメンションを決定します。
CDC::GetTextExtentExPointI 指定したスペース内に収まる、指定した文字列内の文字数を取得し、それらの各文字のテキスト範囲を配列に格納します。
CDC::GetTextExtentPointI グリフ インデックスの指定した配列の幅と高さを取得します。
CDC::GetTextFace 現在のフォントの書体名を null で終わる文字列としてバッファーにコピーします。
CDC::GetTextMetrics 属性デバイス コンテキストから現在のフォントのメトリックを取得します。
CDC::GetViewportExt ビューポートの x エクステントと y エクステントを取得します。
CDC::GetViewportOrg ビューポートの原点の x 座標と y 座標を取得します。
CDC::GetWindow 表示デバイス コンテキストに関連付けられているウィンドウを返します。
CDC::GetWindowExt 関連付けられたウィンドウの x エクステントと y エクステントを取得します。
CDC::GetWindowOrg 関連付けられたウィンドウの原点の x 座標と y 座標を取得します。
CDC::GetWorldTransform 現在のワールド空間からページ空間への変換を取得します。
CDC::GradientFill 四角形と三角形の構造を、塗りつぶしの色で塗りつぶします。
CDC::GrayString 特定の場所に淡色表示 (灰色) のテキストを描画します。
CDC::HIMETRICtoDP HIMETRIC 単位をデバイス単位に変換します。
CDC::HIMETRICtoLP HIMETRIC 単位を論理単位に変換します。
CDC::IntersectClipRect 現在の領域と四角形の交差部分を形成して、新しいクリッピング領域を作成します。
CDC::InvertRect 四角形の内容を反転します。
CDC::InvertRgn 領域内の色を反転します。
CDC::IsPrinting デバイス コンテキストが印刷に使用されているかどうかを判断します。
CDC::LineTo 現在の位置からポイントまでの線を描画しますが、ポイントは含まれません。
CDC::LPtoDP 論理ユニットをデバイス単位に変換します。
CDC::LPtoHIMETRIC 論理単位を HIMETRIC 単位に変換します。
CDC::MaskBlt 指定されたマスク操作とラスター演算を使用して、ソース ビットマップとコピー先ビットマップのカラー データを結合します。
CDC::ModifyWorldTransform 指定したモードを使用して、デバイス コンテキストのワールド変換を変更します。
CDC::MoveTo 現在の位置を移動します。
CDC::OffsetClipRgn 指定されたデバイスのクリッピング領域を移動します。
CDC::OffsetViewportOrg 現在のビューポートの原点の座標を基準にしてビューポートの原点を変更します。
CDC::OffsetWindowOrg 現在のウィンドウの原点の座標を基準にして、ウィンドウの原点を変更します。
CDC::PaintRgn 選択したブラシで領域を塗りつぶします。
CDC::PatBlt ビット パターンを作成します。
CDC::Pie 円形状のくさびを描画します。
CDC::PlayMetaFile 指定したデバイス上の指定したメタファイルの内容を再生します。 拡張バージョンの PlayMetaFile には、指定された拡張形式のメタファイルに格納されている画像が表示されます。 メタファイルは、何度でも再生できます。
CDC::PlgBlt ソース デバイス コンテキスト内の指定した四角形から、指定されたデバイス コンテキスト内の指定された並列四辺形へのカラー データのビットのビットブロック転送を実行します。
CDC::PolyBezier 1 つ以上のベジエ スプラインを描画します。 現在の位置は使用または更新されません。
CDC::PolyBezierTo 1 つ以上の Bzier スプラインを描画し、現在位置を最後の Bzier スプラインの終点に移動します。
CDC::PolyDraw 一連の線分とベジエ スプラインを描画します。 この関数は、現在の位置を更新します。
CDC::Polygon 線で接続された 2 つ以上のポイント (頂点) で構成される多角形を描画します。
CDC::Polyline 指定した点を結ぶ一連の線分を描画します。
CDC::PolylineTo 1 つまたは複数の直線を描画し、現在の位置を最後の線の終点に移動します。
CDC::PolyPolygon 現在のポリゴンフィル モードを使用して塗りつぶされる 2 つ以上のポリゴンを作成します。 ポリゴンが不整合であるか、重複している可能性があります。
CDC::PolyPolyline 複数の一連の接続された線分を描画します。 現在の位置は、この関数によって使用または更新されません。
CDC::PtVisible 指定したポイントがクリッピング領域内にあるかどうかを指定します。
CDC::RealizePalette 現在の論理パレットのパレット エントリをシステム パレットにマップします。
CDC::Rectangle 現在のペンを使用して四角形を描画し、現在のブラシを使用して塗りつぶします。
CDC::RectVisible 指定した四角形の一部がクリッピング領域内にあるかどうかを判断します。
CDC::ReleaseAttribDC 属性デバイス コンテキスト m_hAttribDC解放します。
CDC::ReleaseOutputDC 出力デバイス コンテキスト m_hDC解放します。
CDC::ResetDC m_hAttribDCデバイス コンテキストを更新します。
CDC::RestoreDC SaveDCで保存された以前の状態にデバイス コンテキストを復元します。
CDC::RoundRect 現在のペンを使用して角を丸めて四角形を描画し、現在のブラシを使用して塗りつぶします。
CDC::SaveDC デバイス コンテキストの現在の状態を保存します。
CDC::ScaleViewportExt 現在の値を基準にしてビューポート範囲を変更します。
CDC::ScaleWindowExt ウィンドウのエクステントを現在の値に対して相対的に変更します。
CDC::ScrollDC ビットの四角形を水平方向および垂直方向にスクロールします。
CDC::SelectClipPath デバイス コンテキストのクリッピング領域として現在のパスを選択し、指定したモードを使用して、新しい領域と既存のクリッピング領域を組み合わせています。
CDC::SelectClipRgn 指定したモードを使用して、指定した領域を現在のクリッピング領域と結合します。
CDC::SelectObject ペンなどの GDI 描画オブジェクトを選択します。
CDC::SelectPalette 論理パレットを選択します。
CDC::SelectStockObject Windows によって提供される定義済みのストック ペン、ブラシ、またはフォントのいずれかを選択します。
CDC::SetAbortProc 印刷ジョブを中止する必要がある場合に Windows が呼び出すプログラマ指定のコールバック関数を設定します。
CDC::SetArcDirection 円弧および四角形関数に使用する描画方向を設定します。
CDC::SetAttribDC 属性デバイス コンテキスト m_hAttribDC設定します。
CDC::SetBkColor 現在の背景色を設定します。
CDC::SetBkMode 背景モードを設定します。
CDC::SetBoundsRect 指定したデバイス コンテキストの境界四角形情報の蓄積を制御します。
CDC::SetBrushOrg デバイス コンテキストで選択された次のブラシの原点を指定します。
CDC::SetColorAdjustment 指定した値を使用して、デバイス コンテキストの色調整値を設定します。
CDC::SetDCBrushColor 現在のブラシの色を設定します。
CDC::SetDCPenColor 現在のペンの色を設定します。
CDC::SetGraphicsMode 指定したデバイス コンテキストの現在のグラフィックス モードを設定します。
CDC::SetLayout デバイス コンテキスト (DC) のレイアウトを変更します。
CDC::SetMapMode 現在のマッピング モードを設定します。
CDC::SetMapperFlags フォント マッパーが論理フォントを物理フォントにマップするときに使用するアルゴリズムを変更します。
CDC::SetMiterLimit デバイス コンテキストのマイター結合の長さの制限を設定します。
CDC::SetOutputDC 出力デバイス コンテキスト m_hDC設定します。
CDC::SetPixel 指定したポイントのピクセルを、指定した色の最も近い近似値に設定します。
CDC::SetPixelV 指定した座標のピクセルを、指定した色の最も近い近似値に設定します。 SetPixelV は、描画されたポイントの色の値を返す必要がないため、 SetPixel よりも高速です。
CDC::SetPolyFillMode 多角形塗りつぶしモードを設定します。
CDC::SetROP2 現在の描画モードを設定します。
CDC::SetStretchBltMode ビットマップ ストレッチ モードを設定します。
CDC::SetTextAlign テキスト配置フラグを設定します。
CDC::SetTextCharacterExtra 文字間の間隔を設定します。
CDC::SetTextColor テキストの色を指定します。
CDC::SetTextJustification 文字列の区切り文字にスペースを追加します。
CDC::SetViewportExt ビューポートの x エクステントと y エクステントを設定します。
CDC::SetViewportOrg ビューポートの原点を設定します。
CDC::SetWindowExt 関連付けられたウィンドウの x エクステントと y エクステントを設定します。
CDC::SetWindowOrg デバイス コンテキストのウィンドウの原点を設定します。
CDC::SetWorldTransform 現在のワールド空間をページ空間変換に設定します。
CDC::StartDoc 新しい印刷ジョブが開始されていることをデバイス ドライバーに通知します。
CDC::StartPage 新しいページが開始されていることをデバイス ドライバーに通知します。
CDC::StretchBlt コピー元の四角形とデバイスからコピー先の四角形にビットマップを移動し、必要に応じて、目的の四角形のサイズに合わせてビットマップを拡大または圧縮します。
CDC::StrokeAndFillPath パス内の開いている図形を閉じ、現在のペンを使用してパスの輪郭を塗りつぶし、現在のブラシを使用してその内部を塗りつぶします。
CDC::StrokePath 現在のペンを使用して、指定したパスをレンダリングします。
CDC::TabbedTextOut 指定した位置に文字列を書き込み、タブ位置の配列で指定された値にタブを展開します。
CDC::TextOut 現在選択されているフォントを使用して、指定した場所に文字列を書き込みます。
CDC::TransparentBlt 指定したソース デバイス コンテキストから宛先デバイス コンテキストにカラー データのビット ブロックを転送し、転送で指定された色を透過的にレンダリングします。
CDC::UpdateColors クライアント領域の現在の色をピクセル単位でシステム パレットに照合することで、デバイス コンテキストのクライアント領域を更新します。
CDC::WidenPath デバイス コンテキストで現在選択されているペンを使用してパスがストロークされた場合に描画される領域として、現在のパスを再定義します。

パブリック演算子

名前 説明
CDC::operator HDC デバイス コンテキストのハンドルを取得します。

パブリック データ メンバー

名前 説明
CDC::m_hAttribDC この CDC オブジェクトによって使用される属性デバイス コンテキスト。
CDC::m_hDC この CDC オブジェクトによって使用される出力デバイス コンテキスト。

解説

CDC オブジェクトは、ディスプレイやプリンターなどのデバイス コンテキストを操作するためのメンバー関数と、ウィンドウのクライアント領域に関連付けられた表示コンテキストを操作するためのメンバーを提供します。

CDC オブジェクトのメンバー関数を使用して、すべての描画を行います。 このクラスは、デバイス コンテキスト操作、描画ツールの操作、タイプ セーフなグラフィックス デバイス インターフェイス (GDI) オブジェクトの選択、色とパレットの操作のためのメンバー関数を提供します。 また、描画属性の取得と設定、マッピング、ビューポートの操作、ウィンドウ範囲の操作、座標の変換、領域の操作、クリッピング、線の描画、単純な図形、楕円、および多角形の描画を行うメンバー関数も提供します。 メンバー関数は、テキストの描画、フォントの操作、プリンターエスケープの使用、スクロール、メタファイルの再生にも用意されています。

CDC オブジェクトを使用するには、オブジェクトを構築し、デバイス コンテキストを使用する Windows 関数を並列するメンバー関数を呼び出します。

Note

Windows 95/98 では、すべての画面座標は 16 ビットに制限されています。 したがって、CDC メンバー関数に渡されるintは、-32768 ~ 32767 の範囲である必要があります。

特定の用途のために、Microsoft Foundation クラス ライブラリには、 CDC から派生したいくつかのクラスが用意されています。 CPaintDC は、 BeginPaintEndPaintへの呼び出しをカプセル化します。 CClientDC は、ウィンドウのクライアント領域に関連付けられた表示コンテキストを管理します。 CWindowDC は、ウィンドウ全体に関連付けられた表示コンテキスト (フレームやコントロールを含む) を管理します。 CMetaFileDC は、デバイス コンテキストをメタファイルに関連付けます。

CDC には、ウィンドウからレイアウトを継承しないデバイス コンテキストのレイアウトを反転するための、 GetLayoutSetLayoutの 2 つのメンバー関数が用意されています。 このような右から左への向きは、アラビア語やヘブライ語などのカルチャ用に記述されたアプリケーションで、文字レイアウトがヨーロッパ標準ではない場合に必要です。

CDCには、CDC オブジェクトの作成時に同じデバイスを参照する、m_hDCm_hAttribDCの 2 つのデバイス コンテキストが含まれています。 CDC すべての出力 GDI 呼び出しを m_hDC し、ほとんどの属性 GDI 呼び出しを m_hAttribDCに転送します。 (属性呼び出しの例は GetTextColorSetTextColor は出力呼び出しです)。

たとえば、フレームワークでは、これら 2 つのデバイス コンテキストを使用して、物理デバイスから属性を読み取りながらメタファイルに出力を送信する CMetaFileDC オブジェクトを実装します。 印刷プレビューは、同様の方法でフレームワークに実装されます。 また、アプリケーション固有のコードでも同様の方法で 2 つのデバイス コンテキストを使用できます。

m_hDCm_hAttribDCの両方のデバイス コンテキストからのテキスト メトリック情報が必要になる場合があります。 この機能を提供する関数のペアを次に示します。

m_hAttribDCを使用する m_hDCを使用する
GetTextExtent GetOutputTextExtent
GetTabbedTextExtent GetOutputTabbedTextExtent
GetTextMetrics GetOutputTextMetrics
GetCharWidth GetOutputCharWidth

CDCの詳細については、「Device Contexts」を参照してください。

継承階層

CObject

CDC

要件

ヘッダー: afxwin.h

CDC::AbortDoc

現在の印刷ジョブを終了し、 StartDoc メンバー関数の最後の呼び出し以降にアプリケーションがデバイスに書き込まれたすべてのデータを消去します。

int AbortDoc();

戻り値

成功した場合は 0 以上、エラーが発生した場合は負の値。 次の一覧は、一般的なエラー値とその意味を示しています。

  • SP_ERROR 一般的なエラー。

  • SP_OUTOFDISK 現在、スプーリングに使用できるディスク領域が不足しているため、空き領域はなくなります。

  • SP_OUTOFMEMORY スプーリングに十分なメモリがありません。

  • SP_USERABORT ユーザーは、印刷マネージャーを使用してジョブを終了しました。

解説

このメンバー関数は、 ABORTDOC プリンターエスケープを置き換えます。

AbortDoc は、以下を終了するために使用する必要があります。

  • SetAbortProcを使用して中止関数を指定しない印刷操作。

  • 最初の NEWFRAME またはエスケープ呼び出しにまだ達していない印刷操作 NEXTBAND

アプリケーションで印刷エラーまたは印刷操作の取り消しが発生した場合、クラス CDCEndDocまたはAbortDocメンバー関数を使用して操作を終了しようとしないでください。 GDI は、エラー値を返す前に操作を自動的に終了します。

アプリケーションがダイアログ ボックスを表示して、ユーザーが印刷操作を取り消せるようにする場合は、ダイアログ ボックスを破棄する前に AbortDoc を呼び出す必要があります。

印刷マネージャーを使用して印刷ジョブを開始した場合、 AbortDoc 呼び出すとスプール ジョブ全体が消去されます。プリンターは何も受信しません。 印刷マネージャーを使用して印刷ジョブを開始しなかった場合は、 AbortDoc が呼び出される前にデータがプリンターに送信されている可能性があります。 この場合、プリンター ドライバーはプリンターをリセットし (可能な場合)、印刷ジョブを閉じます。

CDC::StartDoc の例を参照してください。

CDC::AbortPath

デバイス コンテキスト内のすべてのパスを閉じて破棄します。

BOOL AbortPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

デバイス コンテキストに開いているパス ブラケットがある場合、パス ブラケットは閉じられ、パスは破棄されます。 デバイス コンテキストに閉じたパスがある場合、パスは破棄されます。

CDC::AddMetaFileComment

バッファーから指定された拡張形式のメタファイルにコメントをコピーします。

BOOL AddMetaFileComment(
    UINT nDataSize,
    const BYTE* pCommentData);

パラメーター

nDataSize
コメント バッファーの長さをバイト単位で指定します。

pCommentData
コメントを含むバッファーを指します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

コメントには、写真のソースや作成日など、個人情報を含めることができます。 コメントは、アプリケーション署名で始まり、その後にデータが続く必要があります。 コメントには、位置固有のデータを含めることはできません。 位置固有のデータはレコードの場所を指定します。1 つのメタファイルが別のメタファイルに埋め込まれる可能性があるため、レコードを含めてはなりません。 この関数は、拡張メタファイルでのみ使用できます。

CDC::AlphaBlend

透明または半透明のピクセルを持つビットマップを表示するには、このメンバー関数を呼び出します。

BOOL AlphaBlend(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    BLENDFUNCTION blend);

パラメーター

xDest
コピー先の四角形の左上隅の x 座標を論理単位で指定します。

yDest
コピー先の四角形の左上隅の y 座標を論理単位で指定します。

nDestWidth
コピー先の四角形の幅を論理単位で指定します。

nDestHeight
コピー先の四角形の高さを論理単位で指定します。

pSrcDC
ソース デバイス コンテキストへのポインター。

xSrc
ソース四角形の左上隅の x 座標を論理単位で指定します。

ySrc
ソース四角形の左上隅の y 座標を論理単位で指定します。

nSrcWidth
ソース四角形の幅を論理単位で指定します。

nSrcHeight
ソース四角形の高さを論理単位で指定します。

blend
BLENDFUNCTION構造体を指定します。

戻り値

成功した場合は TRUE。それ以外の場合は FALSE

解説

詳細については、Windows SDK の AlphaBlend に関する記事を参照してください。

CDC::AngleArc

線分と円弧を描画します。

BOOL AngleArc(
    int x,
    int y,
    int nRadius,
    float fStartAngle,
    float fSweepAngle);

パラメーター

x
円の中心の論理 x 座標を指定します。

y
円の中心の論理 y 座標を指定します。

nRadius
円の半径を論理単位で指定します。 この値は正である必要があります。

fStartAngle
x 軸に対する開始角度を度単位で指定します。

fSweepAngle
開始角度に対するスイープ角度を度単位で指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

線分は、現在の位置から円弧の始点まで描画されます。円弧は、指定された半径と中心を持つ円の周長に沿って描画されます。 円弧の長さは、指定された開始角度とスイープ角度によって定義されます。

AngleArc は、現在の位置を円弧の終点に移動します。この関数によって描画される円弧は、現在の変換とマッピング モードによっては楕円のように見える場合があります。 円弧を描画する前に、この関数は現在の位置から円弧の始点までの線分を描画します。円弧は、指定した中心点を中心に指定した半径を持つ虚数円を作成することによって描画されます。 円弧の始点は、円の x 軸から開始角度の度数で反時計回りに測定することによって決定されます。 終了点は、開始点からスイープ角度の度数で反時計回りに測定することで、同様に配置されます。

スイープ角度が 360 度を超える場合、円弧は複数回スイープされます。 この関数は、現在のペンを使用して線を描画します。 図は塗りつぶされていません。

CDC::Arc

楕円の円弧を描画します。

BOOL Arc(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Arc(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

パラメーター

x1
外接する四角形の左上隅の x 座標を (論理単位で) 指定します。

y1
外接する四角形の左上隅の y 座標を (論理単位で) 指定します。

x2
外接する四角形の右下隅の x 座標を (論理単位で) 指定します。

y2
外接する四角形の右下隅の y 座標を (論理単位で) 指定します。

x3
円弧の始点を定義する点の x 座標を指定します (論理単位)。 この点は、円弧上に正確に配置する必要はありません。

y3
円弧の始点を定義する点の y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

x4
円弧の終点を定義する点の x 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

y4
円弧の終点を定義する点の y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

lpRect
外接する四角形を (論理単位で) 指定します。 このパラメーターには、 LPRECT または CRect オブジェクトを渡すことができます。

ptStart
円弧の始点を定義する点の x 座標と y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

ptEnd
円弧の終点を定義する点の x 座標と y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

関数を使用して描画される円弧は、指定された外接する四角形によって定義された楕円のセグメントです。

円弧の実際の始点は、指定した始点を通って外接する四角形の中心から描画された光線が楕円と交差する点です。 円弧の実際の終点は、指定した終了点を通る外接する四角形の中心から描画された光線が楕円と交差する点です。 円弧は反時計回りの方向に描画されます。 円弧は閉じた図形ではないので、塗りつぶされません。 四角形の幅と高さは、どちらも 2 単位より大きく、32,767 単位未満である必要があります。

void CDCView::DrawArc(CDC *pDC)
{
   // Fill the client area with a thin circle. The circle's
   // interior is not filled. The circle's perimeter is
   // blue from 6 o'clock to 3 o'clock and red from 3
   // o'clock to 6 o'clock.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens.
   CPen penBlue;
   CPen penRed;
   CPen *pOldPen;

   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen.

   pOldPen = pDC->SelectObject(&penBlue);

   pDC->Arc(rectClient,
            CPoint(rectClient.right, rectClient.CenterPoint().y),
            CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw from 6 o'clock to 3 o'clock, counterclockwise,
   // in a red pen.
   pDC->SelectObject(&penRed);

   // Keep the same parameters, but reverse start
   // and end points.
   pDC->Arc(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::ArcTo

楕円の円弧を描画します。

BOOL ArcTo(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL ArcTo(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

パラメーター

x1
外接する四角形の左上隅の x 座標を (論理単位で) 指定します。

y1
外接する四角形の左上隅の y 座標を (論理単位で) 指定します。

x2
外接する四角形の右下隅の x 座標を (論理単位で) 指定します。

y2
外接する四角形の右下隅の y 座標を (論理単位で) 指定します。

x3
円弧の始点を定義する点の x 座標を指定します (論理単位)。 この点は、円弧上に正確に配置する必要はありません。

y3
円弧の始点を定義する点の y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

x4
円弧の終点を定義する点の x 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

y4
円弧の終点を定義する点の y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

lpRect
外接する四角形を (論理単位で) 指定します。 RECTデータ構造へのポインターまたはこのパラメーターのCRect オブジェクトを渡すことができます。

ptStart
円弧の始点を定義する点の x 座標と y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。このパラメーターには、 POINT データ構造または CPoint オブジェクトを渡すことができます。

ptEnd
円弧の終点を定義する点の x 座標と y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。このパラメーターには、 POINT データ構造または CPoint オブジェクトを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は CDC::Arcに似ていますが、現在の位置が更新される点が異なります。 ポイント ( x1y1) と ( x2y2) は、外接する四角形を指定します。 指定された外接する四角形によって形成される楕円は、円弧の曲線を定義します。円弧は、外接する四角形の中心から (*x3*, y3) までの放射状線と交差する点から反時計回りに延びています (既定の円弧の方向)。 円弧は、外接する四角形の中心から ( x4y4) までの放射状線と交差する位置で終了します。 始点と終点が同じ場合は、完全な楕円が描画されます。

現在の位置から円弧の始点までの線が描画されます。エラーが発生しない場合、現在位置は円弧の終点に設定されます。円弧は現在のペンを使用して描画されます。入力されていません。

CDC::Attach

このメンバー関数を使用して、CDC オブジェクトにhDCをアタッチします。

BOOL Attach(HDC hDC);

パラメーター

hDC
Windows デバイス コンテキスト。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

hDCは、m_hDC、出力デバイス コンテキスト、および属性デバイス コンテキストm_hAttribDCの両方に格納されます。

CDC::BeginPath

デバイス コンテキストでパス 角かっこを開きます。

BOOL BeginPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

パス ブラケットを開いた後、アプリケーションは GDI 描画関数の呼び出しを開始して、パス内のポイントを定義できます。 アプリケーションは、 EndPath メンバー関数を呼び出すことによって、開いているパス 角かっこを閉じます。 アプリケーションが BeginPathを呼び出すと、以前のパスはすべて破棄されます。

パス内のポイントを定義する描画関数の一覧については、Windows SDK の BeginPath を参照してください。

// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
   // Describe a 24-point truetype font of normal weight
   LOGFONT lf;
   memset(&lf, 0, sizeof(lf));
   lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
   lf.lfWeight = FW_NORMAL;
   lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;

   // create and select it
   CFont newFont;
   if (!newFont.CreateFontIndirect(&lf))
      return;
   CFont *pOldFont = pDC->SelectObject(&newFont);

   // use a path to record how the text was drawn
   pDC->BeginPath();
   pDC->TextOut(10, 10, _T("Outline this!"));
   pDC->EndPath();

   // Find out how many points are in the path. Note that
   // for long strings or complex fonts, this number might be
   // gigantic!
   int nNumPts = pDC->GetPath(NULL, NULL, 0);
   if (nNumPts == 0)
      return;

   // Allocate memory to hold points and stroke types from
   // the path.
   LPPOINT lpPoints = NULL;
   LPBYTE lpTypes = NULL;
   try
   {
      lpPoints = new POINT[nNumPts];
      lpTypes = new BYTE[nNumPts];
   }
   catch (CException *pe)
   {
      delete[] lpPoints;
      lpPoints = NULL;
      delete[] lpTypes;
      lpTypes = NULL;
      pe->Delete();
   }
   if (lpPoints == NULL || lpTypes == NULL)
      return;

   // Now that we have the memory, really get the path data.
   nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);

   // If it worked, draw the lines. Windows 98 doesn't support
   // the PolyDraw API, so we use our own member function to do
   // similar work. If you're targeting only later versions of
   // Windows, you can use the PolyDraw() API and avoid the
   // COutlineView::PolyDraw() member function.

   if (nNumPts != -1)
      pDC->PolyDraw(lpPoints, lpTypes, nNumPts);

   // Release the memory we used
   delete[] lpPoints;
   delete[] lpTypes;

   // Put back the old font
   pDC->SelectObject(pOldFont);

   return;
}

CDC::BitBlt

ソース デバイス コンテキストからこの現在のデバイス コンテキストにビットマップをコピーします。

BOOL BitBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    DWORD dwRop);

パラメーター

x
コピー先の四角形の左上隅の論理 x 座標を指定します。

y
コピー先の四角形の左上隅の論理 y 座標を指定します。

nWidth
コピー先の四角形とソース ビットマップの幅 (論理単位) を指定します。

nHeight
コピー先の四角形とソース ビットマップの高さを (論理単位で) 指定します。

pSrcDC
ビットマップのコピー元となるデバイス コンテキストを識別する CDC オブジェクトへのポインター。 ソースを含まないラスター演算dwRop指定する場合は、NULLする必要があります。

xSrc
ソース ビットマップの左上隅の論理 x 座標を指定します。

ySrc
ソース ビットマップの左上隅の論理 y 座標を指定します。

dwRop
実行するラスター オペレーションを指定します。 ラスター演算コードは、GDI が現在のブラシ、可能なソース ビットマップ、およびコピー先ビットマップを含む出力操作で色を結合する方法を定義します。 dwRopのラスター演算コードとその説明の一覧については、Windows SDK のBitBltを参照してください

ラスター演算コードの完全な一覧については、Windows SDK の ラスター演算コード を参照してください。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

アプリケーションは、ウィンドウまたはクライアント領域をバイト境界上に配置して、 BitBlt 操作がバイトアライン四角形で確実に行われるようにすることができます。 (ウィンドウ クラスを登録するときに、 CS_BYTEALIGNWINDOW または CS_BYTEALIGNCLIENT フラグを設定します)。

BitBlt バイトアライン四角形に対する操作は、バイトアラインされていない四角形に対する BitBlt 操作よりもかなり高速です。 独自のデバイス コンテキストのバイトアラインメントなどのクラス スタイルを指定する場合は、Microsoft Foundation クラスに依存せずにウィンドウ クラスを登録する必要があります。 グローバル関数 AfxRegisterWndClassを使用します。

GDI は nWidthnHeightを変換します。変換先のデバイス コンテキストを使用して 1 回、ソース デバイス コンテキストを使用して 1 回変換します。 結果のエクステントが一致しない場合、GDI は Windows StretchBlt 関数を使用して、必要に応じてソース ビットマップを圧縮または拡張します。

変換先、ソース、およびパターンのビットマップの色形式が同じでない場合、 BitBlt 関数は、変換元とパターンのビットマップを変換先と一致するように変換します。 変換先ビットマップの前景色と背景色が変換に使用されます。

BitBlt関数は、モノクロ ビットマップを色に変換するときに、白ビット (1) を背景色に、黒ビット (0) を前景色に設定します。 宛先デバイス コンテキストの前景色と背景色が使用されます。 色をモノクロに変換するには、 BitBlt 背景色に一致するピクセルを白に設定し、他のすべてのピクセルを黒に設定します。 BitBlt では、カラー デバイス コンテキストの前景色と背景色を使用して、色からモノクロに変換します。

すべてのデバイス コンテキストが BitBltをサポートしているわけではありません。 特定のデバイス コンテキストで BitBltがサポートされているかどうかを確認するには、 GetDeviceCaps メンバー関数を使用して RASTERCAPS インデックスを指定します。

CDC::CreateCompatibleDC の例を参照してください。

CDC::CDC

CDC オブジェクトを構築します。

CDC();

CDC::Chord

コード (楕円と線分の交差で囲まれた閉じた図形) を描画します。

BOOL Chord(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Chord(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

パラメーター

x1
コードの外接する四角形の左上隅の x 座標を指定します (論理単位)。

y1
コードの外接する四角形の左上隅の y 座標を (論理単位で) 指定します。

x2
コードの外接する四角形の右下隅の x 座標を (論理単位で) 指定します。

y2
コードの外接する四角形の右下隅の y 座標を (論理単位で) 指定します。

x3
和音の始点を定義する点の x 座標を指定します (論理単位)。

y3
和音の始点を定義する点の y 座標を論理単位で指定します。

x4
和音の終点を定義する点の x 座標を論理単位で指定します。

y4
和音の終点を定義する点の y 座標を論理単位で指定します。

lpRect
外接する四角形を (論理単位で) 指定します。 このパラメーターには、 LPRECT または CRect オブジェクトを渡すことができます。

ptStart
和音の始点を定義する点の x 座標と y 座標を論理単位で指定します。 この点は、コードに正確に横たわっている必要はありません。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

*ptEnd*
和音の終点を定義する点の x 座標と y 座標を論理単位で指定します。 この点は、コードに正確に横たわっている必要はありません。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

( x1y1)、( x2y2) パラメーターは、コードの一部である楕円を囲む四角形の左上隅と右下隅をそれぞれ指定します。 ( x3y3)、( x4y4) パラメーターは、楕円と交差する線の端点を指定します。 コードは、選択したペンを使用して描画され、選択したブラシを使用して塗りつぶされます。

Chord関数によって描画される図は最大で拡張されますが、右と下の座標は含まれません。 これは、図形の高さが y2 - y1 され、図形の幅が x2 - x1されることを意味します。

void CDCView::DrawChord(CDC *pDC)
{
   // Fill the client area with a circle. The circle is
   // blue and filled with blue, but has a chord cut out
   // of it from 3 o'clock to 6 o'clock. That chord is
   // red and filled with a red diagonal hatch.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens and similar brushes.
   CPen penBlue, penRed;
   CBrush brushBlue, brushRed;
   CBrush *pOldBrush;
   CPen *pOldPen;

   brushBlue.CreateSolidBrush(RGB(0, 0, 255));
   brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen with a solid blue fill.
   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

   pDC->Chord(rectClient,
              CPoint(rectClient.right, rectClient.CenterPoint().y),
              CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw the remaining quarter chord from 6 o'clock
   // to 3 o'clock, counterclockwise, in a red pen
   // with the hatched brush.
   pDC->SelectObject(&penRed);
   pDC->SelectObject(&brushRed);

   // Keep the same parameters, but reverse start and
   // end points.
   pDC->Chord(rectClient,
              CPoint(rectClient.CenterPoint().x, rectClient.right),
              CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::CloseFigure

パス内の開いている図形を閉じます。

BOOL CloseFigure();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、現在の位置から図の最初のポイント (通常は、 MoveTo メンバー関数の最新の呼び出しで指定されたポイント) に線を描画して図形を閉じ、線結合スタイルを使用して線を接続します。 CloseFigureの代わりにLineToメンバー関数を使用して図形を閉じる場合は、結合の代わりにエンド キャップを使用してコーナーを作成します。 CloseFigure は、デバイス コンテキストに開いているパス ブラケットがある場合にのみ呼び出す必要があります。

パス内の図は、この関数を使用して明示的に閉じていなければ開いています。 (図の現在の点と始点が同じでも、図形を開くことができます。 CloseFigure 後にパスに追加された直線または曲線は、新しい図形を開始します。

CDC::CreateCompatibleDC

pDCで指定されたデバイスと互換性のあるメモリ デバイス コンテキストを作成します。

BOOL CreateCompatibleDC(CDC* pDC);

パラメーター

pDC
デバイス コンテキストへのポインター。 pDCNULL場合、この関数は、システム表示と互換性のあるメモリ デバイス コンテキストを作成します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

メモリ デバイス コンテキストは、表示サーフェイスを表すメモリブロックです。 互換性のあるデバイスの実際のデバイスサーフェイスにコピーする前に、メモリ内のイメージを準備するために使用できます。

メモリ デバイス コンテキストが作成されると、GDI は自動的に 1 対 1 のモノクロストック ビットマップを選択します。 GDI 出力関数は、ビットマップが作成され、そのコンテキストに選択されている場合にのみ、メモリ デバイス コンテキストで使用できます。

この関数は、ラスター演算をサポートするデバイスの互換性のあるデバイス コンテキストを作成する場合にのみ使用できます。 デバイス コンテキスト間のビット ブロック転送については、 CDC::BitBlt メンバー関数を参照してください。 デバイス コンテキストでラスター演算がサポートされているかどうかを確認するには、メンバー関数CDC::GetDeviceCapsRC_BITBLTラスター機能を参照してください。

// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
   // load IDB_BITMAP1 from our resources
   CBitmap bmp;
   if (bmp.LoadBitmap(IDB_BITMAP1))
   {
      // Get the size of the bitmap
      BITMAP bmpInfo;
      bmp.GetBitmap(&bmpInfo);

      // Create an in-memory DC compatible with the
      // display DC we're using to paint
      CDC dcMemory;
      dcMemory.CreateCompatibleDC(pDC);

      // Select the bitmap into the in-memory DC
      CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);

      // Find a centerpoint for the bitmap in the client area
      CRect rect;
      GetClientRect(&rect);
      int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
      int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;

      // Copy the bits from the in-memory DC into the on-
      // screen DC to actually do the painting. Use the centerpoint
      // we computed for the target offset.
      pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
                  0, 0, SRCCOPY);

      dcMemory.SelectObject(pOldBitmap);
   }
   else
   {
      TRACE0("ERROR: Where's IDB_BITMAP1?\n");
   }
}

CDC::CreateDC

指定したデバイスのデバイス コンテキストを作成します。

BOOL CreateDC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

パラメーター

lpszDriverName
デバイス ドライバーのファイル名 (拡張子なし) を指定する null で終わる文字列を指します (例: "EPSON")。 このパラメーターに CString オブジェクトを渡すこともできます。

lpszDeviceName
サポートする特定のデバイスの名前 ("EPSON FX-80" など) を指定する null で終わる文字列を指します。 lpszDeviceName パラメーターは、モジュールが複数のデバイスをサポートしている場合に使用されます。 このパラメーターに CString オブジェクトを渡すこともできます。

lpszOutput
物理出力メディア (ファイルまたは出力ポート) のファイル名またはデバイス名を指定する null で終わる文字列を指します。 このパラメーターに CString オブジェクトを渡すこともできます。

lpInitData
デバイス ドライバーのデバイス固有の初期化データを含む DEVMODE 構造体を指します。 Windows DocumentProperties 関数は、特定のデバイスに対して入力されたこの構造体を取得します。 lpInitDataパラメーターは、デバイス ドライバーがコントロール パネルを介してユーザーによって指定された既定の初期化 (存在する場合) を使用する場合にNULLする必要があります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

DEVMODE構造を使用する場合は、PRINT.Hヘッダー ファイルが必要です。

デバイス名は次の規則に従います。末尾のコロン (:)をお勧めしますが、省略可能です。 Windows は、コロンで終わるデバイス名がコロンなしで同じ名前と同じポートにマップされるように、終端のコロンを除去します。 ドライバー名とポート名には、先頭または末尾のスペースを含めることはできません。 GDI 出力関数を情報コンテキストと共に使用することはできません。

CDC::CreateIC

指定したデバイスの情報コンテキストを作成します。

BOOL CreateIC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

パラメーター

lpszDriverName
デバイス ドライバーのファイル名 (拡張子なし) を指定する null で終わる文字列を指します (例: "EPSON")。 このパラメーターには、 CString オブジェクトを渡すことができます。

lpszDeviceName
サポートする特定のデバイスの名前 ("EPSON FX-80" など) を指定する null で終わる文字列を指します。 lpszDeviceName パラメーターは、モジュールが複数のデバイスをサポートしている場合に使用されます。 このパラメーターには、 CString オブジェクトを渡すことができます。

lpszOutput
物理出力メディア (ファイルまたはポート) のファイル名またはデバイス名を指定する null で終わる文字列を指します。 このパラメーターには、 CString オブジェクトを渡すことができます。

lpInitData
デバイス ドライバーのデバイス固有の初期化データを指します。 lpInitDataパラメーターは、デバイス ドライバーがコントロール パネルを介してユーザーによって指定された既定の初期化 (存在する場合) を使用する場合にNULLする必要があります。 デバイス固有の初期化のデータ形式については、 CreateDC を参照してください。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

情報コンテキストは、デバイス コンテキストを作成せずにデバイスに関する情報を取得する高速な方法を提供します。

デバイス名は次の規則に従います。末尾のコロン (:)をお勧めしますが、省略可能です。 Windows は、コロンで終わるデバイス名がコロンなしで同じ名前と同じポートにマップされるように、終端のコロンを除去します。 ドライバー名とポート名には、先頭または末尾のスペースを含めることはできません。 GDI 出力関数を情報コンテキストと共に使用することはできません。

CDC::DeleteDC

一般に、この関数は呼び出さないでください。デストラクターが行います。

BOOL DeleteDC();

戻り値

関数が正常に完了した場合は 0 以外。それ以外の場合は 0。

解説

DeleteDC メンバー関数は、現在のCDC オブジェクトのm_hDCに関連付けられている Windows デバイス コンテキストを削除します。 この CDC オブジェクトが特定のデバイスの最後のアクティブなデバイス コンテキストである場合は、デバイスによって使用されるすべてのストレージ リソースとシステム リソースが解放されます。

デバイス コンテキストでオブジェクトが選択されている場合、アプリケーションは DeleteDC を呼び出さないでください。 オブジェクトを削除する前に、まずデバイス コンテキストから選択する必要があります。

アプリケーションは、 CWnd::GetDCを呼び出してハンドルを取得したデバイス コンテキストを削除しないでください。 代わりに、デバイス コンテキストを解放するために CWnd::ReleaseDC を呼び出す必要があります。 この機能をラップするために、 CClientDC クラスと CWindowDC クラスが用意されています。

DeleteDC関数は、通常、CreateDCCreateIC、またはCreateCompatibleDCで作成されたデバイス コンテキストを削除するために使用されます。

CPrintDialog::GetPrinterDC の例を参照してください。

CDC::DeleteTempMap

CWinAppアイドル時間ハンドラーによって自動的に呼び出DeleteTempMapFromHandleによって作成された一時的なCDC オブジェクトは削除されますが、CDC オブジェクトに一時的に関連付けられているデバイス コンテキスト ハンドル (hDC) は破棄されません。

static void PASCAL DeleteTempMap();

CDC::Detach

この関数を呼び出して、CDC オブジェクトからm_hDC (出力デバイス コンテキスト) をデタッチし、m_hDCm_hAttribDCの両方をNULLに設定します。

HDC Detach();

戻り値

Windows デバイス コンテキスト。

CDC::DPtoHIMETRIC

この関数は、 HIMETRIC サイズを OLE に指定し、ピクセルを HIMETRICに変換する場合に使用します。

void DPtoHIMETRIC(LPSIZE lpSize) const;

パラメーター

lpSize
SIZE構造体またはCSize オブジェクトを指します。

解説

デバイス コンテキスト オブジェクトのマッピング モードが MM_LOENGLISHMM_HIENGLISHMM_LOMETRIC、または MM_HIMETRICの場合、変換は物理インチのピクセル数に基づきます。 マッピング モードが他の非制約モードの 1 つである場合 (たとえば、 MM_TEXT)、変換は論理インチのピクセル数に基づいています。

CDC::DPtoLP

デバイスユニットを論理ユニットに変換します。

void DPtoLP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;

パラメーター

lpPoints
POINT構造体またはCPoint オブジェクトの配列を指します。

nCount
配列内のポイントの数。

lpRect
RECT構造体またはCRect オブジェクトを指します。 このパラメーターは、1 つの四角形をデバイス ポイントから論理ポイントに変換する単純なケースに使用されます。

lpSize
SIZE構造体またはCSize オブジェクトを指します。

解説

この関数は、デバイスの座標系から GDI の論理座標系に、各ポイントの座標またはサイズの次元をマップします。 変換は、現在のマッピング モードと、デバイスのウィンドウとビューポートの原点とエクステントの設定によって異なります。

CDC::Draw3dRect

このメンバー関数を呼び出して、3 次元の四角形を描画します。

void Draw3dRect(
    LPCRECT lpRect,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

void Draw3dRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

パラメーター

lpRect
外接する四角形を (論理単位で) 指定します。 RECT構造体へのポインターまたはこのパラメーターのCRect オブジェクトを渡すことができます。

clrTopLeft
3 次元四角形の左上の色を指定します。

clrBottomRight
3 次元四角形の下辺と右側の色を指定します。

x
3 次元四角形の左上隅の論理 x 座標を指定します。

y
3 次元四角形の左上隅の論理 y 座標を指定します。

cx
3 次元の四角形の幅を指定します。

cy
3 次元四角形の高さを指定します。

解説

四角形は、 clrTopLeft で指定された色の上と左の辺と、 clrBottomRightで指定された色の下辺と右側で描画されます。

void CDCView::Draw3dRect(CDC *pDC)
{
   // get the client area
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels on all sides
   rect.DeflateRect(20, 20);

   // draw a rectangle with red top and left sides, and
   // green right and bottom sides.
   pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));

   // This call to the four-integer override would draw
   // the same rectangle with a little less convenience:

   // pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
   //    RGB(255, 0, 0), RGB(0, 255, 0));
}

CDC::DrawDragRect

ドラッグ四角形を再描画するには、このメンバー関数を繰り返し呼び出します。

void DrawDragRect(
    LPCRECT lpRect,
    SIZE size,
    LPCRECT lpRectLast,
    SIZE sizeLast,
    CBrush* pBrush = NULL,
    CBrush* pBrushLast = NULL);

パラメーター

lpRect
RECT構造体または四角形の論理座標を指定するCRect オブジェクトを指します。この場合は、再描画する四角形の終了位置を指定します。

size
外側の境界線の左上隅から四角形の内側の境界線の左上隅 (つまり、境界線の太さ) への変位を指定します。

lpRectLast
RECT構造体または四角形の位置の論理座標を指定するCRect オブジェクトを指します。この場合は、再描画する四角形の元の位置を指します。

sizeLast
外側の境界線の左上隅から、再描画する元の四角形の内側の境界線の左上隅 (つまり、罫線の太さ) への変位を指定します。

pBrush
ブラシ オブジェクトへのポインター。 既定のハーフトーン ブラシを使用するには、 NULL に設定します。

pBrushLast
最後に使用したブラシ オブジェクトへのポインター。 既定のハーフトーン ブラシを使用するには、 NULL に設定します。

解説

視覚的なフィードバックを提供するために、マウスの位置をサンプリングするときにループで呼び出します。 DrawDragRectを呼び出すと、前の四角形が消去され、新しい四角形が描画されます。 たとえば、ユーザーが画面上で四角形をドラッグすると、 DrawDragRect は元の四角形を消去し、新しい四角形を新しい位置に再描画します。 既定では、 DrawDragRect ハーフトーン ブラシを使用して四角形を描画し、ちらつきをなくし、滑らかに動く四角形の外観を作成します。

DrawDragRectを初めて呼び出す場合は、lpRectLast パラメーターをNULLする必要があります。

CDC::DrawEdge

このメンバー関数を呼び出して、指定した型とスタイルの四角形の端を描画します。

BOOL DrawEdge(
    LPRECT lpRect,
    UINT nEdge,
    UINT nFlags);

パラメーター

lpRect
四角形の論理座標を含む RECT 構造体へのポインター。

nEdge
描画する内側と外側のエッジの種類を指定します。 このパラメーターは、1 つの内側の境界線フラグと 1 つの外側の境界線フラグの組み合わせである必要があります。 パラメーターの型の表については、Windows SDK の DrawEdge を参照してください。

nFlags
描画する罫線の種類を指定するフラグ。 パラメーターの値の表については、Windows SDK の DrawEdge を参照してください。 対角線の場合、 BF_RECT フラグは四角形パラメーターで囲まれたベクトルの終点を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::DrawEscape

グラフィックス デバイス インターフェイス (GDI) を介して直接使用できないビデオ ディスプレイの描画機能にアクセスします。

int DrawEscape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData);

パラメーター

nEscape
実行するエスケープ関数を指定します。

nInputSize
lpszInputData パラメーターが指すデータのバイト数を指定します。

lpszInputData
指定したエスケープに必要な入力構造体を指します。

戻り値

関数の結果を指定します。 成功した場合は 0 より大きく、実装のみをチェックする QUERYESCSUPPORT 描画エスケープを除き、エスケープが実装されていない場合は 0、エラーが発生した場合は 0 未満です。

解説

アプリケーションが DrawEscapeを呼び出すと、 nInputSize および lpszInputData によって識別されるデータは、指定されたディスプレイ ドライバーに直接渡されます。

CDC::DrawFocusRect

四角形にフォーカスがあることを示すために使用するスタイルで四角形を描画します。

void DrawFocusRect(LPCRECT lpRect);

パラメーター

lpRect
描画する四角形の論理座標を指定する RECT 構造体または CRect オブジェクトを指します。

解説

これはブール型の XOR (^) 関数であるため、同じ四角形で 2 回目にこの関数を呼び出すと、表示から四角形が削除されます。 この関数によって描画された四角形はスクロールできません。 この関数によって描画された四角形を含む領域をスクロールするには、最初に DrawFocusRect を呼び出してディスプレイから四角形を削除してから、領域をスクロールしてから、もう一度 DrawFocusRect 呼び出して新しい位置に四角形を描画します。

注意事項

DrawFocusRect は、 MM_TEXT モードでのみ機能します。 他のモードでは、この関数はフォーカスの四角形を正しく描画しませんが、エラー値を返しません。

CDC::DrawFrameControl

このメンバー関数を呼び出して、指定した型とスタイルのフレーム コントロールを描画します。

BOOL DrawFrameControl(
    LPRECT lpRect,
    UINT nType,
    UINT nState);

パラメーター

lpRect
四角形の論理座標を含む RECT 構造体へのポインター。

nType
描画するフレーム コントロールの種類を指定します。 このパラメーターの使用可能な値の一覧については、Windows SDK の DrawFrameControluType パラメーターを参照してください。

nState
フレーム コントロールの初期状態を指定します。 Windows SDK の DrawFrameControluState パラメーターに記述されている 1 つ以上の値を指定できます。 nStateDFCS_ADJUSTRECT使用して、外接する四角形を調整して、プッシュ ボタンの周囲の端を除外します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

場合によっては、 nStatenType パラメーターに依存します。 次の一覧は、4 つの nType 値と nStateの関係を示しています。

  • DFC_BUTTON

    • DFCS_BUTTON3STATE 3 状態ボタン

    • DFCS_BUTTONCHECK チェック ボックス

    • DFCS_BUTTONPUSH [プッシュ] ボタン

    • DFCS_BUTTONRADIO ラジオボタン

    • DFCS_BUTTONRADIOIMAGE ラジオ ボタンの画像 (非四角の画像が必要)

    • DFCS_BUTTONRADIOMASK ラジオ ボタンのマスク (非四角にはマスクが必要)

  • DFC_CAPTION

    • DFCS_CAPTIONCLOSE [閉じる] ボタン

    • DFCS_CAPTIONHELP [ヘルプ] ボタン

    • DFCS_CAPTIONMAX 最大化ボタン

    • DFCS_CAPTIONMIN 最小化ボタン

    • DFCS_CAPTIONRESTORE [復元] ボタン

  • DFC_MENU

    • DFCS_MENUARROW サブメニューの矢印

    • DFCS_MENUBULLET 弾丸

    • DFCS_MENUCHECK チェック マーク

  • DFC_SCROLL

    • DFCS_SCROLLCOMBOBOX コンボ ボックスのスクロール バー

    • DFCS_SCROLLDOWN スクロール バーの下矢印

    • DFCS_SCROLLLEFT スクロール バーの左矢印

    • DFCS_SCROLLRIGHT スクロール バーの右矢印

    • DFCS_SCROLLSIZEGRIP ウィンドウの右下隅にあるサイズ グリップ

    • DFCS_SCROLLUP スクロール バーの上矢印

このコードは、ウィンドウの右下隅にサイズ グリッパーを描画します。 これは、スタイルがなく、通常はサイズ グリッパーを提供する他のコントロール (ステータス バーなど) が含まれていないダイアログ ボックスの OnPaint ハンドラーに適しています。

void CDCView::DrawFC(CDC *pDC)
{
   CRect rc;
   GetClientRect(&rc);

   rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
   rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);

   pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}

CDC::DrawIcon

現在の CDC オブジェクトによって表されるアイコンをデバイスに描画します。

BOOL DrawIcon(
    int x,
    int y,
    HICON hIcon);

BOOL DrawIcon(
    POINT point,
    HICON hIcon);

パラメーター

x
アイコンの左上隅の論理 x 座標を指定します。

y
アイコンの左上隅の論理 y 座標を指定します。

hIcon
描画するアイコンのハンドルを識別します。

point
アイコンの左上隅の論理 x 座標と y 座標を指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

関数が正常に完了した場合は 0 以外。それ以外の場合は 0。

解説

この関数は、アイコンの左上隅を、 xyで指定された場所に配置します。 場所は、デバイス コンテキストの現在のマッピング モードの影響を受けます。

アイコン リソースは、関数 CWinApp::LoadIconCWinApp::LoadStandardIcon、または CWinApp::LoadOEMIconを使用して、以前に読み込まれている必要があります。 この関数を使用する前に、 MM_TEXT マッピング モードを選択する必要があります。

CWnd::IsIconic の例を参照してください。

CDC::DrawState

このメンバー関数を呼び出して画像を表示し、無効または既定の状態などの状態を示す視覚効果を適用します。

Note

DSS_NORMALを除くすべてのnFlag状態では、視覚効果が適用される前に画像がモノクロに変換されます。

BOOL DrawState(
    CPoint pt,
    CSize size,
    HBITMAP hBitmap,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    CBitmap* pBitmap,
    UINT nFlags,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    HICON hIcon,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    HICON hIcon,
    UINT nFlags,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    LPCTSTR lpszText,
    UINT nFlags,
    BOOL bPrefixText = TRUE,
    int nTextLen = 0,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    LPCTSTR lpszText,
    UINT nFlags,
    BOOL bPrefixText = TRUE,
    int nTextLen = 0,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    DRAWSTATEPROC lpDrawProc,
    LPARAM lData,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    DRAWSTATEPROC lpDrawProc,
    LPARAM lData,
    UINT nFlags,
    CBrush* pBrush = NULL);

パラメーター

pt
イメージの場所を指定します。

size
イメージのサイズを指定します。

hBitmap
ビットマップへのハンドル。

nFlags
イメージの種類と状態を指定するフラグ。 可能なnFlagsの種類と状態については、Windows SDK のDrawStateを参照してください。

hBrush
ブラシのハンドル。

pBitmap
CBitmap オブジェクトを指すポインターです。

pBrush
CBrush オブジェクトを指すポインターです。

hIcon
アイコンにへのハンドル。

lpszText
テキストへのポインター。

bPrefixText
アクセラレータニーモニックを含む可能性があるテキスト。 lData パラメーターは文字列のアドレスを指定し、nTextLen パラメーターは長さを指定します。 nTextLenが 0 の場合、文字列は null で終わると見なされます。

nTextLen
lpszTextが指すテキスト文字列の長さ。 nTextLenが 0 の場合、文字列は null で終わると見なされます。

lpDrawProc
イメージのレンダリングに使用されるコールバック関数へのポインター。 このパラメーターは、 nFlags のイメージの種類が DST_COMPLEX場合に必要です。 これは省略可能であり、イメージの種類がDST_TEXT場合にNULLできます。 他のすべてのイメージの種類では、このパラメーターは無視されます。 コールバック関数の詳細については、Windows SDK の DrawStateProc 関数を参照してください。

lData
イメージに関する情報を指定します。 このパラメーターの意味は、イメージの種類によって異なります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::DrawText

このメンバー関数を呼び出して、指定された四角形のテキストを書式設定します。 その他の書式設定オプションを指定するには、 CDC::DrawTextExを使用します。

virtual int DrawText(
    LPCTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat);

int DrawText(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat);

パラメーター

lpszString
描画する文字列をポイントします。 nCountが -1 の場合、文字列は null で終わる必要があります。

nCount
文字列内の文字の数を指定します。 nCountが -1 の場合、lpszStringは null で終わる文字列への長いポインターであると見なされ、DrawTextは自動的に文字数を計算します。

lpRect
テキストを書式設定する四角形 (論理座標) を含む RECT 構造体または CRect オブジェクトを指します。

str
描画する指定した文字を含む CString オブジェクト。

nFormat
テキストの書式設定方法を指定します。 Windows SDK のDrawTextuFormat パラメーターに記述されている値の任意の組み合わせを指定できます。 (ビットごとの OR 演算子を使用して結合):

Note

一部の uFormat フラグの組み合わせにより、渡された文字列が変更される可能性があります。 DT_END_ELLIPSISまたはDT_PATH_ELLIPSISDT_MODIFYSTRINGを使用すると、文字列が変更され、CStringオーバーライドのアサーションが発生する可能性があります。 DT_CALCRECTDT_EXTERNALLEADINGDT_INTERNALDT_NOCLIPDT_NOPREFIXの値は、DT_TABSTOP値と共に使用できません。

戻り値

関数が成功した場合のテキストの高さ。

解説

タブを適切なスペースに展開し、テキストを指定された四角形の左、右、または中央に配置し、テキストを指定された四角形内に収まる行に分割することで、テキストの書式を設定します。 書式設定の種類は、 nFormatで指定します。

このメンバー関数は、デバイス コンテキストで選択されているフォント、テキストの色、背景色を使用してテキストを描画します。 DT_NOCLIP形式を使用しない限り、DrawTextはテキストをクリップして、指定した四角形の外側にテキストが表示されないようにします。 DT_SINGLELINE形式を指定しない限り、すべての書式設定は複数行であると見なされます。

選択したフォントが指定した四角形に対して大きすぎる場合、 DrawText メンバー関数は小さいフォントを置き換えようとしません。

DT_CALCRECT フラグを指定すると、テキストを描画するために必要な幅と高さを反映するように、lpRectで指定された四角形が更新されます。

TA_UPDATECPテキスト配置フラグが設定されている場合 (CDC::SetTextAlign参照)、DrawTextは、指定された四角形の左側ではなく、現在の位置からテキストを表示します。 DrawText は、 TA_UPDATECP フラグが設定されているときにテキストを折り返しません (つまり、 DT_WORDBREAK フラグは無効になります)。

テキストの色は、 CDC::SetTextColorによって設定できます。

CDC::DrawTextEx

指定された四角形のテキストを書式設定します。

virtual int DrawTextEx(
    LPTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

int DrawTextEx(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

パラメーター

lpszString
描画する文字列をポイントします。 nCountが -1 の場合、文字列は null で終了する必要があります。

nCount
文字列内の文字の数を指定します。 nCountが -1 の場合、lpszStringは null で終わる文字列への長いポインターであると見なされ、DrawTextは自動的に文字数を計算します。

lpRect
テキストを書式設定する四角形 (論理座標) を含む RECT 構造体または CRect オブジェクトを指します。

str
描画する指定した文字を含む CString オブジェクト。

nFormat
テキストの書式設定方法を指定します。 Windows SDK のDrawTextuFormat パラメーターに記述されている値の任意の組み合わせを指定できます。 (ビットごとの を使用して結合するOR 演算子):

Note

一部の uFormat フラグの組み合わせにより、渡された文字列が変更される可能性があります。 DT_END_ELLIPSISまたはDT_PATH_ELLIPSISDT_MODIFYSTRINGを使用すると、文字列が変更され、CStringオーバーライドのアサーションが発生する可能性があります。 DT_CALCRECTDT_EXTERNALLEADINGDT_INTERNALDT_NOCLIPDT_NOPREFIXの値は、DT_TABSTOP値と共に使用できません。

lpDTParams
その他の書式設定オプションを指定する DRAWTEXTPARAMS 構造体へのポインター。 このパラメーターは、NULL に設定できます。

解説

タブを適切なスペースに展開し、テキストを指定された四角形の左、右、または中央に配置し、テキストを指定された四角形内に収まる行に分割することで、テキストの書式を設定します。 書式設定の種類は、 nFormatlpDTParamsで指定します。 詳細については、「Windows SDK の CDC::DrawTextDrawTextEx 」を参照してください。

テキストの色は、 CDC::SetTextColorによって設定できます。

CDC::Ellipse

楕円を描きます。

BOOL Ellipse(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Ellipse(LPCRECT lpRect);

パラメーター

x1
楕円の外接する四角形の左上隅の論理 x 座標を指定します。

y1
楕円の外接する四角形の左上隅の論理 y 座標を指定します。

x2
楕円の外接する四角形の右下隅の論理 x 座標を指定します。

y2
楕円の外接する四角形の右下隅の論理 y 座標を指定します。

lpRect
楕円の外接する四角形を指定します。 このパラメーターに CRect オブジェクトを渡すこともできます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

楕円の中心は、 x1y1x2y2、または lpRectで指定された外接する四角形の中心です。 楕円は現在のペンで描画され、その内部は現在のブラシで塗りつぶされます。

この関数によって描画される図は、右と下の座標まで拡張されますが、含まれません。 これは、図形の高さが y2 - y1 され、図形の幅が x2 - x1されることを意味します。

外接する四角形の幅または高さが 0 の場合、楕円は描画されません。

CDC::EndDoc

StartDoc メンバー関数の呼び出しによって開始された印刷ジョブを終了します。

int EndDoc();

戻り値

関数が成功した場合は 0 以上、エラーが発生した場合は負の値。

解説

このメンバー関数は、 ENDDOC プリンターエスケープを置き換え、正常な印刷ジョブが完了した直後に呼び出す必要があります。

アプリケーションで印刷エラーまたは印刷操作の取り消しが発生した場合は、 EndDoc または AbortDocを使用して操作を終了しないでください。 GDI は、エラー値を返す前に操作を自動的に終了します。

この関数はメタファイル内では使用しないでください。

CDC::StartDoc の例を参照してください。

CDC::EndPage

アプリケーションがページへの書き込みを完了したことをデバイスに通知します。

int EndPage();

戻り値

関数が成功した場合は 0 以上、エラーが発生した場合は負の値。

解説

このメンバー関数は、通常、新しいページに進むデバイス ドライバーを指示するために使用されます。

このメンバー関数は、 NEWFRAME プリンターエスケープを置き換えます。 NEWFRAMEとは異なり、この関数は常にページの印刷後に呼び出されます。

CDC::StartDoc の例を参照してください。

CDC::EndPath

パス ブラケットを閉じ、ブラケットによって定義されたパスをデバイス コンテキストに選択します。

BOOL EndPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::BeginPath の例を参照してください。

CDC::EnumObjects

デバイス コンテキストで使用できるペンとブラシを列挙します。

int EnumObjects(
    int nObjectType,
    int (CALLBACK* lpfn)(
    LPVOID,
    LPARAM),
    LPARAM lpData);

パラメーター

nObjectType
オブジェクトの種類を指定します。 値を OBJ_BRUSH または OBJ_PENできます。

lpfn
アプリケーション指定のコールバック関数のプロシージャ インスタンス アドレスです。 以下の「解説」セクションを参照してください。

lpData
アプリケーションが提供するデータを指します。 データは、オブジェクト情報と共にコールバック関数に渡されます。

戻り値

callback 関数によって返される最後の値を指定します。 その意味はユーザー定義です。

解説

渡したコールバック関数は、特定の型のオブジェクトごとに、そのオブジェクトの情報と共に呼び出されます。 それ以上オブジェクトが存在しないか、コールバック関数が 0 を返すまで、システムはコールバック関数を呼び出します。

Microsoft Visual C++ の新機能を使用すると、 EnumObjectsに渡される関数として通常の関数を使用できます。 EnumObjectsに渡されるアドレスは、EXPORTおよび Pascal 呼び出し規則を使用してエクスポートされた関数へのポインターです。 保護モード アプリケーションでは、Windows MakeProcInstance 関数を使用してこの関数を作成したり、 FreeProcInstance Windows 関数で使用した後に関数を解放したりする必要はありません。

また、アプリケーションのモジュール定義ファイルの EXPORTS ステートメントに関数名をエクスポートする必要はありません。 代わりに、次のように EXPORT 関数修飾子を使用できます。

int CALLBACK EXPORT AFunction (LPSTR, LPSTR);

エイリアスを付けずに名前でエクスポートするための適切なエクスポート レコードをコンパイラが出力する場合。 これはほとんどのニーズに適しています。 序数による関数のエクスポートやエクスポートのエイリアス化など、一部の特殊なケースでは、モジュール定義ファイルで EXPORTS ステートメントを使用する必要があります。

Microsoft Foundation プログラムをコンパイルするには、通常、 /GA/GEs コンパイラ オプションを使用します。 /Gw コンパイラ オプションは、Microsoft Foundation クラスでは使用されません。 (Windows 関数 MakeProcInstanceを使用する場合は、返された関数ポインターを FARPROC からこの API で必要な型に明示的にキャストする必要があります)。コールバック登録インターフェイスがタイプ セーフになりました (特定のコールバックに適した種類の関数を指す関数ポインターを渡す必要があります)。

また、すべてのコールバック関数は、コールバック境界を越えて例外をスローできないため、Windows に戻る前に Microsoft Foundation 例外をトラップする必要があります。 例外の詳細については、 Exceptionsに関する記事を参照してください。

// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
   LOGPEN *pPen = (LOGPEN *)lpLogObject;

   switch (pPen->lopnStyle)
   {
   case PS_SOLID:
      TRACE0("PS_SOLID:      ");
      break;
   case PS_DASH:
      TRACE0("PS_DASH:       ");
      break;
   case PS_DOT:
      TRACE0("PS_DOT:        ");
      break;
   case PS_DASHDOT:
      TRACE0("PS_DASHDOT:    ");
      break;
   case PS_DASHDOTDOT:
      TRACE0("PS_DASHDOTDOT: ");
      break;
   case PS_NULL:
      TRACE0("PS_NULL:       ");
      break;
   case PS_INSIDEFRAME:
      TRACE0("PS_INSIDEFRAME:");
      break;
   default:
      TRACE0("unk style:");
   }

   TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
   return TRUE;
}

// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
   CPrintDialog dlg(FALSE);
   dlg.GetDefaults();
   HDC hdc = dlg.GetPrinterDC();

   if (hdc != NULL)
   {
      CDC dc;
      dc.Attach(hdc);
      VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
   }
}

CDC::Escape

このメンバー関数は、Win32 プログラミングでは事実上廃止されています。

virtual int Escape(
    int nEscape,
    int nCount,
    LPCSTR lpszInData,
    LPVOID lpOutData);

int Escape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData,
    int nOutputSize,
    LPSTR lpszOutputData);

パラメーター

nEscape
実行するエスケープ関数を指定します。

エスケープ関数の完全な一覧については、Windows SDK の Escape を参照してください。

nCount
lpszInDataが指すデータのバイト数を指定します。

lpszInData
このエスケープに必要な入力データ構造を指します。

lpOutData
このエスケープから出力を受け取る構造体を指します。 データが返されない場合、 lpOutData パラメーターは NULL されます。

nInputSize
lpszInputData パラメーターが指すデータのバイト数を指定します。

lpszInputData
指定したエスケープに必要な入力構造体を指します。

nOutputSize
lpszOutputData パラメーターが指すデータのバイト数を指定します。

lpszOutputData
このエスケープから出力を受け取る構造体を指します。 データが返されない場合は、このパラメーターを NULL する必要があります。

戻り値

関数が成功した場合、実装のみをチェックする QUERYESCSUPPORT エスケープを除き、正の値が返されます。 エスケープが実装されていない場合、ゼロが返されます。 エラーが発生した場合は、負の値が返されます。 一般的なエラー値を次に示します。

  • SP_ERROR 一般的なエラー。

  • SP_OUTOFDISK 現在、スプーリングに使用できるディスク領域が不足しているため、空き領域はなくなります。

  • SP_OUTOFMEMORY スプーリングに十分なメモリがありません。

  • SP_USERABORT ユーザーは、印刷マネージャーを使用してジョブを終了しました。

解説

元のプリンターエスケープのうち、Win32 アプリケーションでは QUERYESCSUPPORT のみがサポートされています。 他のすべてのプリンター エスケープは古く、16 ビット アプリケーションとの互換性のためにのみサポートされています。

Win32 プログラミングの場合、 CDC は、対応するプリンター エスケープに代わる 6 つのメンバー関数を提供するようになりました。

さらに、 CDC::GetDeviceCaps では、他のプリンターエスケープよりも優先される Win32 インデックスがサポートされています。 詳細については、Windows SDK の GetDeviceCaps に関する記事を参照してください。

このメンバー関数を使用すると、アプリケーションは GDI を介して直接使用できない特定のデバイスの機能にアクセスできます。

アプリケーションで定義済みのエスケープ値を使用する場合は、最初のバージョンを使用します。 アプリケーションでプライベート エスケープ値が定義されている場合は、2 番目のバージョンを使用します。 2 番目のバージョンの詳細については、Windows SDK の ExtEscape を参照してください。

CDC::ExcludeClipRect

既存のクリッピング領域から指定した四角形を引いた領域で構成される新しいクリッピング領域を作成します。

int ExcludeClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int ExcludeClipRect(LPCRECT lpRect);

パラメーター

x1
四角形の左上隅の論理 x 座標を指定します。

y1
四角形の左上隅の論理 y 座標を指定します。

x2
四角形の右下隅の論理 x 座標を指定します。

y2
四角形の右下隅の論理 y 座標を指定します。

lpRect
四角形を指定します。 CRect オブジェクトにすることもできます。

戻り値

新しいクリッピング領域の種類を指定します。 次のいずれかの値を指定できます。

  • COMPLEXREGION 領域に重複する罫線があります。

  • ERROR リージョンは作成されませんでした。

  • NULLREGION リージョンが空です。

  • SIMPLEREGION 領域に重複する罫線はありません。

解説

x2 - x1の絶対値で指定される四角形の幅は、32,767 単位を超えてはなりません。 この制限は、四角形の高さにも適用されます。

CDC::ExcludeUpdateRgn

ウィンドウ内の更新された領域を、 CDC オブジェクトに関連付けられたクリッピング領域から除外することで、ウィンドウの無効な領域内での描画を防止します。

int ExcludeUpdateRgn(CWnd* pWnd);

パラメーター

pWnd
ウィンドウが更新されるウィンドウ オブジェクトをポイントします。

戻り値

除外されるリージョンの種類。 次のいずれかの値を指定できます。

  • COMPLEXREGION 領域に重複する罫線があります。

  • ERROR リージョンは作成されませんでした。

  • NULLREGION リージョンが空です。

  • SIMPLEREGION 領域に重複する罫線はありません。

CDC::ExtFloodFill

表示サーフェスの領域を現在のブラシで塗りつぶします。

BOOL ExtFloodFill(
    int x,
    int y,
    COLORREF crColor,
    UINT nFillType);

パラメーター

x
塗りつぶしを開始するポイントの論理 x 座標を指定します。

y
塗りつぶしを開始するポイントの論理 y 座標を指定します。

crColor
塗りつぶす境界または領域の色を指定します。 crColorの解釈は、nFillTypeの値によって異なります。

nFillType
実行する塗りつぶしの種類を指定します。 次のいずれかの値を指定する必要があります。

  • FLOODFILLBORDER 塗りつぶし領域は、 crColorで指定された色で囲まれている。 このスタイルは、 FloodFillによって実行される塗りつぶしと同じです。

  • FLOODFILLSURFACE 塗りつぶし領域は、 crColorで指定された色によって定義されます。 塗りつぶしは、色が検出されている限り、すべての方向に外側に続きます。 このスタイルは、多色の境界で領域を塗りつぶす場合に便利です。

戻り値

関数が成功した場合は 0 以外。塗りつぶしを完了できなかった場合、指定されたポイントに crColor で指定された境界色がある場合 ( FLOODFILLBORDER が要求された場合)、指定されたポイントに crColor で指定された色がない場合 ( FLOODFILLSURFACE が要求された場合)、またはポイントがクリッピング領域の外側にある場合は 0。

解説

このメンバー関数は、nFillTypeで塗りつぶしの種類を指定できるため、FloodFillよりも柔軟性が高くなります。

nFillTypeFLOODFILLBORDERに設定されている場合、領域は、crColorで指定された色によって完全に囲まれていると見なされます。 関数は、 xy で指定されたポイントから始まり、色の境界までのすべての方向に塗りつぶされます。

nFillTypeFLOODFILLSURFACEに設定されている場合、関数はxおよびyで指定されたポイントから始まり、すべての方向に進み、crColorで指定された色を含むすべての隣接する領域を塗りつぶします。

ラスター表示テクノロジをサポートするメモリ デバイス コンテキストとデバイスのみが ExtFloodFillをサポートします。 詳細については、 GetDeviceCaps メンバー関数を参照してください。

CDC::ExtTextOut

現在選択されているフォントを使用して四角形領域内に文字列を書き込むには、このメンバー関数を呼び出します。

virtual BOOL ExtTextOut(
    int x,
    int y,
    UINT nOptions,
    LPCRECT lpRect,
    LPCTSTR lpszString,
    UINT nCount,
    LPINT lpDxWidths);

BOOL ExtTextOut(
    int x,
    int y,
    UINT nOptions,
    LPCRECT lpRect,
    const CString& str,
    LPINT lpDxWidths);

パラメーター

x
指定した文字列の最初の文字の文字セルの論理 x 座標を指定します。

y
指定した文字列の最初の文字の文字セルの先頭の論理 y 座標を指定します。

nOptions
四角形の種類を指定します。 このパラメーターには、次の値のいずれか、両方、またはどちらも指定できます。

  • ETO_CLIPPED テキストが四角形にクリップされることを指定します。

  • ETO_OPAQUE 現在の背景色が四角形に塗りつぶされることを指定します。 ( SetBkColor および GetBkColor メンバー関数を使用して、現在の背景色を設定および照会できます)。

lpRect
四角形の寸法を決定する RECT 構造体を指します。 このパラメーターは、NULL に設定できます。 このパラメーターに CRect オブジェクトを渡すこともできます。

lpszString
描画する指定した文字列をポイントします。 このパラメーターに CString オブジェクトを渡すこともできます。

nCount
文字列の文字数を指定します。

lpDxWidths
隣接する文字セルの原点間の距離を示す値の配列を指します。 たとえば、 lpDxWidths[ i] 論理ユニットは、文字セル i と文字セル i + 1 の原点を分離します。 lpDxWidthsNULLの場合、ExtTextOutは文字間の既定の間隔を使用します。

str
描画する指定した文字を含む CString オブジェクト。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

四角形領域は不透明 (現在の背景色で塗りつぶされる) でき、クリッピング領域にすることができます。

nOptionsが 0 で、lpRectNULLされている場合、関数は四角形領域を使用せずにデバイス コンテキストにテキストを書き込みます。 既定では、現在の位置は関数によって使用または更新されません。 アプリケーションがExtTextOutを呼び出すときに現在の位置を更新する必要がある場合、アプリケーションはTA_UPDATECPに設定されたnFlagsSetTextAlignCDCメンバー関数を呼び出すことができます。 このフラグを設定すると、Windows は後続のExtTextOutの呼び出しでxyを無視し、代わりに現在の位置を使用します。 アプリケーションが TA_UPDATECP を使用して現在の位置を更新する場合、 ExtTextOut は、テキストの前の行の末尾、または lpDxWidths が指す配列の最後の要素で指定された位置のいずれか大きい方に現在位置を設定します。

CDC::FillPath

現在のパス内の開いている図形を閉じ、現在のブラシとポリゴンフィル モードを使用してパスの内部を塗りつぶします。

BOOL FillPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

内部が塗りつぶされると、パスはデバイス コンテキストから破棄されます。

CDC::FillRect

このメンバー関数を呼び出して、指定したブラシを使用して特定の四角形を塗りつぶします。

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

パラメーター

lpRect
塗りつぶす四角形の論理座標を含む RECT 構造体を指します。 このパラメーターに CRect オブジェクトを渡すこともできます。

pBrush
四角形の塗りつぶしに使用するブラシを識別します。

解説

この関数は、左罫線と上罫線を含む四角形全体を塗りつぶしますが、右と下の境界線は塗りつぶしません。

ブラシは、 CBrush メンバー関数 CreateHatchBrushCreatePatternBrushCreateSolidBrushを使用して作成するか、 GetStockObject Windows 関数によって取得する必要があります。

指定した四角形を塗りつぶすとき、 FillRect には四角形の左右の辺は含まれません。 GDI は、現在のマッピング モードに関係なく、右の列と下の行まで四角形を塗りつぶしますが、含まれません。 FillRect は、指定した四角形の topbottomleft、および right メンバーの値を比較します。 bottomtop以下の場合、またはrightleft以下の場合、四角形は描画されません。

FillRectCDC::FillSolidRectに似ていますが、 FillRect はブラシを取るため、単色、ディザリングカラー、ハッチングブラシ、またはパターンで四角形を塗りつぶすために使用できます。 FillSolidRect は単色のみを使用します ( COLORREF パラメーターで示されます)。 FillRect 通常、 FillSolidRectよりも低速です。

CDC::FillRgn

pRgnで指定した領域を、pBrushで指定されたブラシで塗りつぶします。

BOOL FillRgn(
    CRgn* pRgn,
    CBrush* pBrush);

パラメーター

pRgn
塗りつぶす領域へのポインター。 指定された領域の座標は論理単位で指定されます。

pBrush
領域の塗りつぶしに使用するブラシを識別します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

ブラシは、 CBrush メンバー関数 CreateHatchBrushCreatePatternBrushCreateSolidBrushを使用して作成するか、 GetStockObjectで取得する必要があります。

CRgn::CreateRoundRectRgn の例を参照してください。

CDC::FillSolidRect

このメンバー関数を呼び出して、指定した四角形に指定した純色を塗りつぶします。

void FillSolidRect(
    LPCRECT lpRect,
    COLORREF clr);

void FillSolidRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clr);

パラメーター

lpRect
外接する四角形を (論理単位で) 指定します。 RECTデータ構造へのポインターまたはこのパラメーターのCRect オブジェクトを渡すことができます。

clr 四角形の塗りつぶしに使用する色を指定します。

x
四角形の左上隅の論理 x 座標を指定します。

y
コピー先の四角形の左上隅の論理 y 座標を指定します。

cx
四角形の幅を指定します。

cy
四角形の高さを指定します。

解説

FillSolidRectCDC::FillRectによく似ていますが、 FillSolidRect は単色 ( COLORREF パラメーターで示されます) のみを使用しますが、 FillRect はブラシを取るため、単色、ディザリングされた色、斜めブラシ、またはパターンで四角形を塗りつぶすために使用できます。 FillSolidRect 通常、 FillRectよりも高速です。

Note

FillSolidRectを呼び出すと、以前に SetBkColor を使用して設定された背景色は、clrで示される色に設定されます。

CDC::FlattenPath

選択したパス内の曲線を現在のデバイス コンテキストに変換し、各曲線を一連の線に変換します。

BOOL FlattenPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::FloodFill

表示サーフェスの領域を現在のブラシで塗りつぶします。

BOOL FloodFill(
    int x,
    int y,
    COLORREF crColor);

パラメーター

x
塗りつぶしを開始するポイントの論理 x 座標を指定します。

y
塗りつぶしを開始するポイントの論理 y 座標を指定します。

crColor
境界の色を指定します。

戻り値

関数が成功した場合は 0 以外。塗りつぶしを完了できなかった場合、指定されたポイントに crColorで指定された境界色がある場合、またはポイントがクリッピング領域の外側にある場合は、0 が返されます。

解説

エリアは、 crColorで指定された境界付けと見なされます。 FloodFill関数は、xおよびyで指定されたポイントから始まり、色の境界まですべての方向に続きます。

ラスター表示テクノロジをサポートするメモリ デバイス コンテキストとデバイスのみが、 FloodFill メンバー関数をサポートします。 RC_BITBLT機能の詳細については、GetDeviceCaps メンバー関数を参照してください。

ExtFloodFill関数も同様の機能を提供しますが、柔軟性は向上します。

CDC::FrameRect

lpRectで指定された四角形の周囲に罫線を描画します。

void FrameRect(
    LPCRECT lpRect,
    CBrush* pBrush);

パラメーター

lpRect
四角形の左上隅と右下隅の論理座標を含む RECT 構造体または CRect オブジェクトを指します。 このパラメーターに CRect オブジェクトを渡すこともできます。

pBrush
四角形のフレーミングに使用するブラシを識別します。

解説

この関数は、指定されたブラシを使用して境界線を描画します。 罫線の幅と高さは常に 1 論理単位です。

四角形の bottom 座標が top以下の場合、または rightleft以下の場合、四角形は描画されません。

FrameRectによって描画される罫線は、同じ座標を使用してRectangleメンバー関数によって描画される罫線と同じ位置にあります (Rectangleが 1 論理単位幅のペンを使用している場合)。 四角形の内部は、 FrameRectで塗りつぶされません。

CDC::FrameRgn

pBrushで指定したブラシを使用して、pRgnで指定された領域の周囲に罫線を描画します。

BOOL FrameRgn(
    CRgn* pRgn,
    CBrush* pBrush,
    int nWidth,
    int nHeight);

パラメーター

pRgn
罫線で囲む領域を識別する CRgn オブジェクトを指します。 指定された領域の座標は論理単位で指定されます。

pBrush
境界線の描画に使用するブラシを識別する CBrush オブジェクトをポイントします。

nWidth
垂直方向のブラシ ストロークの境界線の幅をデバイス単位で指定します。

nHeight
水平ブラシ ストロークの境界線の高さをデバイス単位で指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CRgn::CombineRgn の例を参照してください。

CDC::FromHandle

デバイス コンテキストへのハンドルが指定されている場合は、 CDC オブジェクトへのポインターを返します。

static CDC* PASCAL FromHandle(HDC hDC);

パラメーター

hDC
Windows デバイス コンテキストへのハンドルが含まれています。

戻り値

ポインターは一時的なものであり、すぐに使用する以外に格納しないでください。

解説

CDC オブジェクトがハンドルにアタッチされていない場合は、一時的なCDC オブジェクトが作成されてアタッチされます。

CPrintDialog::GetPrinterDC の例を参照してください。

CDC::GetArcDirection

デバイス コンテキストの現在の円弧の方向を返します。

int GetArcDirection() const;

戻り値

成功した場合に、現在の円弧の方向を指定します。 有効な戻り値を次に示します。

  • AD_COUNTERCLOCKWISE 反時計回りに描画された円弧と四角形。

  • AD_CLOCKWISE Arcs 四角形を時計回りに描画します。

エラーが発生した場合、戻り値は 0 です。

解説

円弧関数と四角形関数では、円弧の方向が使用されます。

CDC::GetAspectRatioFilter

現在の縦横比フィルターの設定を取得します。

CSize GetAspectRatioFilter() const;

戻り値

現在の縦横比フィルターで使用される縦横比を表す CSize オブジェクト。

解説

縦横比は、デバイスのピクセル幅と高さによって形成される比率です。 デバイスの縦横比に関する情報は、フォントの作成、選択、および表示で使用されます。 Windows には、使用可能なすべてのフォントから特定の縦横比用に設計されたフォントを選択するための特別なフィルター 、縦横比フィルターが用意されています。 フィルターは、 SetMapperFlags メンバー関数で指定された縦横比を使用します。

CDC::GetBkColor

現在の背景色を返します。

COLORREF GetBkColor() const;

戻り値

RGB カラー値。

解説

背景モードが OPAQUE場合、システムは背景色を使用して、スタイル設定された線のギャップ、ブラシのハッチングされた線間のギャップ、および文字セルの背景を埋めます。 また、カラーとモノクロのデバイス コンテキストの間でビットマップを変換するときにも、背景色が使用されます。

CDC::GetBkMode

バックグラウンド モードを返します。

int GetBkMode() const;

戻り値

現在のバックグラウンド モード。 OPAQUE または TRANSPARENTできます。

解説

背景モードでは、テキスト、ハッチング ブラシ、または実線ではないペン スタイルを描画する前に、図面サーフェス上の既存の背景色を削除するかどうかを定義します。

CDC::GetBoundsRect

指定したデバイス コンテキストの現在の累積外接する四角形を返します。

UINT GetBoundsRect(
    LPRECT lpRectBounds,
    UINT flags);

パラメーター

lpRectBounds
現在の外接する四角形を受け取るバッファーを指します。 四角形は論理座標で返されます。

flags
外接する四角形が返された後でクリアするかどうかを指定します。 このパラメーターは 0 または次の値に設定する必要があります。

  • DCB_RESET 返された後、外接する四角形を強制的にクリアします。

戻り値

関数が成功した場合の外接する四角形の現在の状態を指定します。 次の値を組み合わせて使用できます。

  • DCB_ACCUMULATE 外接する四角形の蓄積が発生しています。

  • DCB_RESET 外接する四角形は空です。

  • DCB_SET 外接する四角形は空ではありません。

  • DCB_ENABLE 境界の蓄積がオンになっています。

  • DCB_DISABLE 境界の蓄積はオフです。

CDC::GetBrushOrg

デバイス コンテキストで現在選択されているブラシの原点 (デバイス単位) を取得します。

CPoint GetBrushOrg() const;

戻り値

CPoint オブジェクトとしてのブラシの現在の原点 (デバイス単位)。

解説

最初のブラシの原点は、クライアント領域の (0,0) にあります。 戻り値は、デスクトップ ウィンドウの原点を基準に、デバイス単位でこのポイントを指定します。

CDC::GetCharacterPlacement

文字列に関するさまざまな情報を取得します。

DWORD GetCharacterPlacement(
    LPCTSTR lpString,
    int nCount,
    int nMaxExtent,
    LPGCP_RESULTS lpResults,
    DWORD dwFlags) const;

DWORD GetCharacterPlacement(
    CString& str,
    int nMaxExtent,
    LPGCP_RESULTS lpResults,
    DWORD dwFlags) const;

パラメーター

lpString
処理する文字列へのポインター。

nCount
文字列の長さを指定します。 ANSI バージョンの場合は BYTE カウントであり、Unicode 関数の場合は WORD カウントです。 詳細については、GetCharacterPlacementを参照してください。

nMaxExtent
処理する文字列の最大エクステントを論理単位で指定します。 このエクステントを超えて処理された文字列は無視されます。 並べ替えやグリフの配列に必要な演算は、範囲に含まれている文字だけに適用されます。 このパラメーターは、 GCP_MAXEXTENT 値が dwFlags パラメーターで指定されている場合にのみ使用されます。 入力文字列を処理するときは、エクステントの合計が最大値を超えない限り、各文字と文字のエクステントが出力、エクステント、および他の配列に追加されます。 制限に達すると、処理は停止します。

lpResults
関数の結果を受け取る GCP_Results 構造体へのポインター。

dwFlags
必要な配列に挿入される文字列の処理方法を指定します。 このパラメーターには、GetCharacterPlacementトピックの「dwFlags」セクションに記載されている 1 つ以上の値を指定できます。

str
処理する CString オブジェクトへのポインター。

戻り値

関数が正常に終了した場合は、文字列の幅と高さを論理単位で返します。

関数が失敗した場合は、0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetCharacterPlacementの機能をエミュレートします。

CDC::GetCharABCWidths

現在の TrueType フォントから、指定した範囲内の連続する文字の幅を取得します。

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABC lpabc) const;

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABCFLOAT lpABCF) const;

パラメーター

nFirstChar
文字幅が返される現在のフォントの文字範囲の最初の文字を指定します。

nLastChar
文字幅が返される現在のフォントの文字範囲の最後の文字を指定します。

lpabc
関数が戻るときに文字幅を受け取る ABC 構造体の配列を指します。 この配列には、nFirstCharおよびnLastCharパラメーターで指定された範囲内の文字と同数のABC構造体が含まれている必要があります。

lpABCF
関数が戻るときに文字幅を受け取る ABCFLOAT 構造体の配列を持つアプリケーション提供のバッファーを指します。 この関数によって返される幅は、IEEE 浮動小数点形式です。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

幅は論理単位で返されます。 この関数は TrueType フォントでのみ成功します。

TrueType ラスタライザーは、特定のポイント サイズが選択された後に "ABC" 文字間隔を提供します。 "A" 間隔は、グリフを配置する前に現在の位置に追加される距離です。 "B" 間隔は、グリフの黒部分の幅です。 グリフの右側の空白を考慮して、"C" 間隔が現在の位置に追加されます。 高度な幅の合計は、A + B + C で指定されます。

GetCharABCWidthsメンバー関数が文字の負の "A" または "C" の幅を取得する場合、その文字にはアンダーハングまたはオーバーハングが含まれます。

ABC の幅をフォント デザイン単位に変換するには、アプリケーションで、高さが (LOGFONT 構造体のlfHeight メンバーで指定されている) NEWTEXTMETRIC構造体のntmSizeEM メンバーに格納されている値と等しいフォントを作成する必要があります。 ( ntmSizeEM メンバーの値は、 EnumFontFamilies Windows 関数を呼び出すことによって取得できます)。

既定の文字の ABC 幅は、現在選択されているフォントの範囲外の文字に使用されます。

TrueType 以外のフォントで文字の幅を取得するには、アプリケーションで GetCharWidth Windows 関数を使用する必要があります。

CDC::GetCharABCWidthsI

現在の TrueType フォントから、指定した範囲内の連続するグリフ インデックスの幅を論理単位で取得します。

BOOL GetCharABCWidthsI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPABC lpabc) const;

パラメーター

giFirst
現在のフォントから連続するグリフ インデックスのグループ内の最初のグリフ インデックスを指定します。 このパラメーターは、 pgi パラメーターが NULLされている場合にのみ使用されます。

cgi
グリフ インデックスの数を指定します。

pgi
グリフ インデックスを含む配列へのポインター。 値が NULLの場合は、代わりに giFirst パラメーターが使用されます。 cgi パラメーターは、この配列内のグリフ インデックスの数を指定します。

lpabc
文字幅を受け取る ABC 構造体の配列へのポインター。 この配列には、cgi パラメーターで指定されたグリフ インデックスと同数のABC構造体が含まれている必要があります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetCharABCWidthsIの機能をエミュレートします。

CDC::GetCharWidth

入力デバイス コンテキストである m_hAttribDC を使用して、現在のフォントから連続する文字グループ内の個々の文字の幅を取得します。

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    float* lpFloatBuffer) const;

パラメーター

nFirstChar
現在のフォントの連続する文字グループの最初の文字を指定します。

nLastChar
現在のフォントの連続する文字グループの最後の文字を指定します。

lpBuffer
現在のフォントの連続する文字グループの幅値を受け取るバッファーを指します。

lpFloatBuffer
文字の幅を受け取るバッファーをポイントします。 返される幅は、32 ビット IEEE 浮動小数点形式です。 (幅は文字の基本行に沿って測定されます)。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

たとえば、 nFirstChar が文字 'a' を識別し、 nLastChar 文字 'z' を識別する場合、関数はすべての小文字の幅を取得します。

この関数は、 lpBufferが指すバッファーに値を格納します。 このバッファーは、すべての幅を保持するのに十分な大きさである必要があります。 つまり、指定された例には少なくとも 26 個のエントリが必要です。

連続する文字グループ内の文字が特定のフォントに存在しない場合は、既定の文字の幅値が割り当てられます。

CDC::GetCharWidthI

現在のフォントから、指定した範囲の連続するグリフ インデックスの幅を論理座標で取得します。

BOOL GetCharWidthI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPINT lpBuffer) const;

パラメーター

giFirst
現在のフォントから連続するグリフ インデックスのグループ内の最初のグリフ インデックスを指定します。 このパラメーターは、 pgi パラメーターが NULLされている場合にのみ使用されます。

cgi
グリフ インデックスの数を指定します。

pgi
グリフ インデックスを含む配列へのポインター。 値が NULLの場合は、代わりに giFirst パラメーターが使用されます。 cgi パラメーターは、この配列内のグリフ インデックスの数を指定します。

lpBuffer
幅を受け取るバッファーへのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetCharWidthIの機能をエミュレートします。

CDC::GetClipBox

現在のクリッピング境界の周囲で最も狭い外接する四角形の寸法を取得します。

virtual int GetClipBox(LPRECT lpRect) const;

パラメーター

lpRect
四角形の寸法を受け取る RECT 構造体または CRect オブジェクトを指します。

戻り値

クリッピング領域の種類。 次のいずれかの値を指定できます。

  • COMPLEXREGION クリッピング領域には、重複する境界線があります。

  • ERROR デバイス コンテキストが無効です。

  • NULLREGION クリッピング領域が空です。

  • SIMPLEREGION クリッピング領域には、重複する境界線はありません。

解説

ディメンションは、 lpRectが指すバッファーにコピーされます。

CDC::GetColorAdjustment

デバイス コンテキストの色調整値を取得します。

BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;

パラメーター

lpColorAdjust
COLORADJUSTMENTデータ構造をポイントして、色調整値を受け取ります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::GetCurrentBitmap

現在選択されている CBitmap オブジェクトへのポインターを返します。

CBitmap* GetCurrentBitmap() const;

戻り値

成功した場合は CBitmap オブジェクトへのポインター。それ以外の場合は NULL

解説

このメンバー関数は、一時オブジェクトを返す場合があります。

CDC::GetCurrentBrush

現在選択されている CBrush オブジェクトへのポインターを返します。

CBrush* GetCurrentBrush() const;

戻り値

成功した場合は CBrush オブジェクトへのポインター。それ以外の場合は NULL

解説

このメンバー関数は、一時オブジェクトを返す場合があります。

CDC::GetCurrentFont

現在選択されている CFont オブジェクトへのポインターを返します。

CFont* GetCurrentFont() const;

戻り値

成功した場合は CFont オブジェクトへのポインター。それ以外の場合は NULL

解説

このメンバー関数は、一時オブジェクトを返す場合があります。

CDC::GetCurrentPalette

現在選択されている CPalette オブジェクトへのポインターを返します。

CPalette* GetCurrentPalette() const;

戻り値

成功した場合は CPalette オブジェクトへのポインター。それ以外の場合は NULL

解説

このメンバー関数は、一時オブジェクトを返す場合があります。

CDC::GetCurrentPen

現在選択されている CPen オブジェクトへのポインターを返します。

CPen* GetCurrentPen() const;

戻り値

成功した場合は CPen オブジェクトへのポインター。それ以外の場合は NULL

解説

このメンバー関数は、一時オブジェクトを返す場合があります。

CDC::GetCurrentPosition

現在の位置を取得します (論理座標)。

CPoint GetCurrentPosition() const;

戻り値

CPoint オブジェクトとしての現在の位置。

解説

現在の位置は、 MoveTo メンバー関数を使用して設定できます。

CDC::GetDCBrushColor

現在のブラシの色を取得します。

COLORREF GetDCBrushColor() const;

戻り値

関数が成功した場合、戻り値は現在のブラシの色の COLORREF 値です。

関数が失敗した場合、戻り値は CLR_INVALID

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetDCBrushColorの機能をエミュレートします。

CDC::GetDCPenColor

現在のペンの色を取得します。

COLORREF GetDCPenColor() const;

戻り値

関数が成功した場合、戻り値は現在のペンの色の COLORREF 値です。

関数が失敗した場合、戻り値は CLR_INVALID

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 関数 GetDCPenColorを利用します。

CDC::GetDeviceCaps

表示デバイスに関するさまざまなデバイス固有の情報を取得します。

int GetDeviceCaps(int nIndex) const;

パラメーター

nIndex
返される情報の種類を指定します。 値の一覧については、Windows SDK の GetDeviceCaps を参照してください。

戻り値

関数が成功した場合に要求された機能の値。

CPrintDialog::GetDefaults の例を参照してください。

CDC::GetFontData

スケーラブルなフォント ファイルからフォント メトリック情報を取得します。

DWORD GetFontData(
    DWORD dwTable,
    DWORD dwOffset,
    LPVOID lpData,
    DWORD cbData) const;

パラメーター

dwTable
返されるメトリック テーブルの名前を指定します。 このパラメーターには、Microsoft Corporation によって発行された TrueType Font Files 仕様に記載されているメトリック テーブルのいずれかを指定できます。 このパラメーターが 0 の場合、情報はフォント ファイルの先頭から取得されます。

dwOffset
情報の取得を開始するテーブルの先頭からのオフセットを指定します。 このパラメーターが 0 の場合は、 dwTable パラメーターで指定されたテーブルの先頭から情報が取得されます。 この値がテーブルのサイズ以上の場合、 GetFontData は 0 を返します。

lpData
フォント情報を受け取るバッファーを指します。 この値が NULL場合、関数は、 dwTable パラメーターで指定されたフォント データに必要なバッファーのサイズを返します。

cbData
取得する情報の長さをバイト単位で指定します。 このパラメーターが 0 の場合、 GetFontData は、 dwTable パラメーターで指定されたデータのサイズを返します。

戻り値

関数が成功した場合に lpData が指すバッファーで返されるバイト数を指定します。それ以外の場合は -1。

解説

取得する情報は、フォント ファイルへのオフセットと、返される情報の長さを指定することによって識別されます。

アプリケーションでは、 GetFontData メンバー関数を使用して TrueType フォントをドキュメントと共に保存することがあります。 これを行うために、アプリケーションはフォントを埋め込むことができるかどうかを判断し、フォント ファイル全体を取得し、 dwTabledwOffset、および cbData パラメーターに 0 を指定します。

アプリケーションは、OUTLINETEXTMETRIC構造体のotmfsType メンバーを確認することで、フォントを埋め込むことができるかどうかを判断できます。 otmfsTypeのビット 1 が設定されている場合、フォントの埋め込みは許可されません。 ビット 1 がクリアな場合は、フォントを埋め込むことができます。 ビット 2 が設定されている場合、埋め込みは読み取り専用です。

アプリケーションがこの関数を使用して TrueType 以外のフォントの情報を取得しようとすると、 GetFontData メンバー関数は -1 を返します。

CDC::GetFontLanguageInfo

指定した表示コンテキストで現在選択されているフォントに関する情報を返します。

DWORD GetFontLanguageInfo() const;

戻り値

戻り値は、現在選択されているフォントの特性を識別します。 使用可能な値の完全な一覧については、 GetFontLanguageInfoを参照してください。

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetFontLanguageInfoの機能をエミュレートします。

CDC::GetGlyphOutline

現在のフォントのアウトライン文字のアウトライン曲線またはビットマップを取得します。

DWORD GetGlyphOutline(
    UINT nChar,
    UINT nFormat,
    LPGLYPHMETRICS lpgm,
    DWORD cbBuffer,
    LPVOID lpBuffer,
    const MAT2* lpmat2) const;

パラメーター

nChar
情報を返す文字を指定します。

nFormat
関数が情報を返す形式を指定します。 次のいずれかの値または 0 を指定できます。

意味
GGO_BITMAP グリフ ビットマップを返します。 関数が戻ると、 lpBuffer が指すバッファーには、行が doubleword 境界で始まる 1 ビット/ピクセルビットマップが含まれます。
GGO_NATIVE デバイス単位を使用して、ラスタライザーのネイティブ形式の曲線データ ポイントを返します。 この値を指定すると、 lpmat2 で指定された変換はすべて無視されます。

nFormatの値が 0 の場合、関数はGLYPHMETRICS構造体を埋めますが、グリフ アウトライン データは返しません。

lpgm
文字セル内のグリフの配置を記述する GLYPHMETRICS 構造体を指します。

cbBuffer
関数がアウトライン文字に関する情報をコピーするバッファーのサイズを指定します。 この値が 0 で、 nFormat パラメーターが GGO_BITMAP 値または GGO_NATIVE 値である場合、関数はバッファーの必要なサイズを返します。

lpBuffer
関数がアウトライン文字に関する情報をコピーするバッファーを指します。 nFormatGGO_NATIVE値を指定した場合、情報はTTPOLYGONHEADERおよびTTPOLYCURVE構造体の形式でコピーされます。 この値が NULL で、 nFormatGGO_BITMAP 値または GGO_NATIVE 値である場合、この関数はバッファーの必要なサイズを返します。

lpmat2
文字の変換マトリックスを含む MAT2 構造体を指します。 nFormatGGO_NATIVE値が指定されている場合でも、このパラメーターをNULLすることはできません。

戻り値

cbBufferが 0 またはlpBufferNULLされている場合に取得された情報に必要なバッファーのサイズ (バイト単位)。 それ以外の場合は、関数が成功した場合は正の値、エラーがある場合は -1 になります。

解説

アプリケーションでは、ビットマップ形式で取得した文字を、 lpmat2が指す構造で 2 対 2 の変換行列を指定することで回転できます。

グリフアウトラインは、一連の輪郭として返されます。 各輪郭は、 TTPOLYGONHEADER 構造によって定義され、その後に記述に必要な数の TTPOLYCURVE 構造が続きます。 すべてのポイントは POINTFX 構造体として返され、相対移動ではなく絶対位置を表します。 TTPOLYGONHEADER構造体のpfxStartメンバーによって与えられる開始点は、輪郭の輪郭が始まるポイントです。 後続の TTPOLYCURVE 構造には、ポリライン レコードまたはスプライン レコードのいずれかを指定できます。 ポリライン レコードは一連のポイントです。点の間に描画される線は、文字の輪郭を表します。 スプライン レコードは、TrueType で使用される 2 次曲線 (つまり、2 次 b スプライン) を表します。

CDC::GetGraphicsMode

指定したデバイス コンテキストの現在のグラフィックス モードを取得します。

int GetGraphicsMode() const;

戻り値

成功した場合の現在のグラフィックス モードを返します。 このメソッドが返すことができる値の一覧については、 GetGraphicsModeを参照してください。

失敗した場合は 0 を返します。

拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

このメソッドは、Windows GDI 関数の GetGraphicsModeをラップします。

CDC::GetHalftoneBrush

このメンバー関数を呼び出して、ハーフトーン ブラシを取得します。

static CBrush* PASCAL GetHalftoneBrush();

戻り値

成功した場合は CBrush オブジェクトへのポインター。それ以外の場合は NULL

解説

ハーフトーン ブラシは、ディザリングされたパターンを作成するために、前景色と背景色が交互に表示されるピクセルを示します。 次の図は、ハーフトーン ブラシによって作成されたディザリング パターンの例を示しています。

ディザリングされたペン ストロークの構成方法を示す図。

この図は、黒の背景色と黄色の前景色を、黒と黄色のピクセルを交互にしてパターンに結合して、ディザリングされたペン ストロークを作成する方法を示しています。

CDC::GetKerningPairs

指定したデバイス コンテキストで現在選択されているフォントの文字カーニング ペアを取得します。

int GetKerningPairs(
    int nPairs,
    LPKERNINGPAIR lpkrnpair) const;

パラメーター

nPairs
lpkrnpairが指すKERNINGPAIR構造体の数を指定します。 この関数は、 nPairsで指定された数を超えるカーニング ペアをコピーしません。

lpkrnpair
関数が戻るときにカーニング ペアを受け取る KERNINGPAIR 構造体の配列を指します。 この配列には、 nPairsで指定された数以上の構造体が含まれている必要があります。 このパラメーターが NULLの場合、この関数はフォントのカーニング ペアの合計数を返します。

戻り値

取得するカーニング ペアの数を指定します。関数が成功した場合は、フォント内のカーニング ペアの合計数を指定します。 関数が失敗した場合、またはフォントのカーニング ペアがない場合は、0 が返されます。

CDC::GetLayout

このメンバー関数を呼び出して、プリンターやメタファイルなどのデバイス コンテキストのテキストとグラフィックスのレイアウトを決定します。

DWORD GetLayout() const;

戻り値

成功した場合、現在のデバイス コンテキストのレイアウト フラグ。 それ以外の場合は GDI_ERROR。 拡張エラー情報については、 GetLastErrorを呼び出します。 レイアウト フラグの一覧については、「 CDC::SetLayout」を参照してください。

解説

既定のレイアウトは左から右です。

CDC::GetMapMode

現在のマッピング モードを取得します。

int GetMapMode() const;

戻り値

マッピング モード。

解説

マッピング モードの詳細については、 SetMapMode メンバー関数を参照してください。

Note

SetLayoutを呼び出して DC を右から左のレイアウトに変更すると、マッピング モードSetLayout自動的にMM_ISOTROPICに変更されます。 その結果、後続の GetMapMode 呼び出しは MM_ISOTROPICを返します。

CDC::GetMiterLimit

デバイス コンテキストのマイター制限を返します。

float GetMiterLimit() const;

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

マイター制限は、マイター結合を持つジオメトリラインを描画するときに使用されます。

CDC::GetNearestColor

指定した論理色に最も一致する純色を返します。

COLORREF GetNearestColor(COLORREF crColor) const;

パラメーター

crColor
照合する色を指定します。

戻り値

デバイスが表すことができる crColor 値に最も近い純色を定義する RGB (赤、緑、青) の色値。

解説

指定されたデバイスは、この色を表すことができる必要があります。

CDC::GetOutlineTextMetrics

TrueType フォントのメトリック情報を取得します。

UINT GetOutlineTextMetrics(
    UINT cbData,
    LPOUTLINETEXTMETRIC lpotm) const;

パラメーター

lpotm
OUTLINETEXTMETRIC構造体の配列を指します。 このパラメーターが NULL場合、関数は取得したメトリック データに必要なバッファーのサイズを返します。

cbData
情報が返されるバッファーのサイズをバイト単位で指定します。

lpotm
OUTLINETEXTMETRIC構造体を指します。 このパラメーターが NULL場合、関数は取得したメトリック情報に必要なバッファーのサイズを返します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

OUTLINETEXTMETRIC構造体には、TrueType 形式で提供されるほとんどのフォント メトリック情報 (TEXTMETRIC構造体を含む) が含まれています。 OUTLINETEXTMETRIC構造体の最後の 4 つのメンバーは、文字列へのポインターです。 アプリケーションでは、他のメンバーに必要な領域に加えて、これらの文字列の領域を割り当てる必要があります。 文字列のサイズに対するシステムによる制限がないため、メモリを割り当てる最も簡単な方法は、GetOutlineTextMetrics関数の最初の呼び出しでlpotmに NULL を指定して必要なサイズを取得することです。

CDC::GetOutputCharWidth

出力デバイス コンテキストを使用して、 m_hDCし、現在のフォントから連続する文字グループ内の個々の文字の幅を取得します。

BOOL GetOutputCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

パラメーター

nFirstChar
現在のフォントの連続する文字グループの最初の文字を指定します。

nLastChar
現在のフォントの連続する文字グループの最後の文字を指定します。

lpBuffer
現在のフォントの連続する文字グループの幅値を受け取るバッファーを指します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

たとえば、 nFirstChar が文字 'a' を識別し、 nLastChar 文字 'z' を識別する場合、関数はすべての小文字の幅を取得します。

この関数は、 lpBufferが指すバッファーに値を格納します。 このバッファーは、すべての幅を保持するのに十分な大きさである必要があります。つまり、指定された例には少なくとも 26 個のエントリが必要です。

連続する文字グループ内の文字が特定のフォントに存在しない場合は、既定の文字の幅値が割り当てられます。

CDC::GetOutputTabbedTextExtent

このメンバー関数を呼び出して、出力デバイス コンテキストである m_hDC を使用して文字列の幅と高さを計算します。

CSize GetOutputTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetOutputTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

パラメーター

lpszString
測定する文字列を指します。 このパラメーターに CString オブジェクトを渡すこともできます。

nCount
lpszStringによって指文字列のを指定します。

nTabPositions
lpnTabStopPositionsが指す配列内のタブ位置の数を指定します。

lpnTabStopPositions
タブストップ位置を論理単位で含む整数の配列を指します。 タブ位置は、昇順で並べ替える必要があります。最小の x 値は、配列の最初の項目である必要があります。 戻るタブは使用できません。

str
測定する指定した文字を含む CString オブジェクト。

戻り値

CSize オブジェクト内の文字列の次元 (論理単位)。

解説

文字列に 1 つ以上のタブ文字が含まれている場合、文字列の幅は、 lpnTabStopPositionsで指定されたタブ位置に基づいています。 この関数は、現在選択されているフォントを使用して文字列の次元を計算します。

現在のクリッピング領域は、 GetOutputTabbedTextExtent 関数によって返される幅と高さをオフセットしません。

一部のデバイスでは通常のセル配列に文字が配置されないため (つまり、文字をカーニングします)、文字列内の文字のエクステントの合計が文字列の範囲と等しくない可能性があります。

nTabPositionsが 0 で、lpnTabStopPositionsNULLの場合、タブは 8 つの平均文字幅に展開されます。 nTabPositionsが 1 の場合、タブ位置は、lpnTabStopPositionsポイントする配列の最初の値で指定された距離で区切ります。 lpnTabStopPositionsが 1 つ以上の値を指している場合、配列内の各値に対して、nTabPositionsで指定された数までタブ位置が設定されます。

CDC::GetOutputTextExtent

このメンバー関数を呼び出して、出力デバイス コンテキストを使用し、 m_hDCし、現在のフォントを使用してテキスト行の幅と高さを計算します。

CSize GetOutputTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetOutputTextExtent(const CString& str) const;

パラメーター

lpszString
文字の文字列を指します。 このパラメーターに CString オブジェクトを渡すこともできます。

nCount
lpszStringによって指文字列のを指定します。

str
測定する指定した文字を含む CString オブジェクト。

戻り値

CSize オブジェクトで返される文字列の次元 (論理単位)。

解説

現在のクリッピング領域は、 GetOutputTextExtentによって返される幅と高さに影響しません。

一部のデバイスでは通常のセル配列に文字が配置されないため (つまり、カーニングが実行されます)、文字列内の文字のエクステントの合計が文字列の範囲と等しくない可能性があります。

CDC::GetOutputTextMetrics

出力デバイス コンテキストである m_hDCを使用して、現在のフォントのメトリックを取得します。

BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;

パラメーター

lpMetrics
メトリックを受け取る TEXTMETRIC 構造をポイントします。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::GetPath

デバイス コンテキストで選択されたパスで見つかった曲線の端点と制御点を定義する座標を取得します。

int GetPath(
    LPPOINT lpPoints,
    LPBYTE lpTypes,
    int nCount) const;

パラメーター

lpPoints
POINTデータ構造の配列、または線の端点と曲線コントロール ポイントが配置されているCPointオブジェクトを指します。

lpTypes
頂点の型が配置されているバイトの配列を指します。 値は次のいずれかです。

  • PT_MOVETOlpPointsの対応するポイントが不整合な図形を開始することを指定します。

  • PT_LINETOlpPointsの前の点と対応する点が線の終点であることを指定します。

  • PT_BEZIERTOlpPoints内の対応する点が、Bzier 曲線のコントロール ポイントまたは終了点であることを指定します。

PT_BEZIERTO 型は常に 3 つのセットで発生します。 その直前のパス内の点によって、Bzier 曲線の始点が定義されます。 最初の 2 つの PT_BEZIERTO ポイントは制御ポイント、3 番目の PT_BEZIERTO ポイントは終点 (ハードコーディングされている場合) です。

PT_LINETO型またはPT_BEZIERTO型を次のフラグと組み合わせて (ビットごとの演算子 OR を使用して)、対応するポイントが図の最後のポイントであり、図形を閉じる必要があることを示すことができます。

  • PT_CLOSEFIGURE 対応する線または曲線を描画した後、図形が自動的に閉じられることを指定します。 図は、直線または曲線の終点から最後の PT_MOVETOに対応する点まで直線を描画することによって閉じられます。

nCount
lpPoints配列に配置できるPOINTデータ構造の合計数を指定します。 この値は、 lpTypes 配列に配置できるバイト数と同じである必要があります。

戻り値

nCount パラメーターが 0 以外の場合は、列挙されたポイントの数。 nCountが 0 の場合、パス内のポイントの合計数 (およびGetPathはバッファーに何も書き込みしません)。 nCountが 0 以外で、パス内のポイント数より小さい場合、戻り値は -1 になります。

解説

デバイス コンテキストには、閉じたパスが含まれている必要があります。 パスのポイントは論理座標で返されます。 ポイントはデバイス座標のパスに格納されるため、 GetPath 現在の変換の逆関数を使用して、ポイントをデバイス座標から論理座標に変更します。 パス内のすべての曲線を線分に変換するために、 FlattenPath メンバー関数を GetPathする前に呼び出すこともできます。

CDC::BeginPath の例を参照してください。

CDC::GetPixel

x および *y* で指定されたポイントにあるピクセルの RGB カラー値を取得します。

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

パラメーター

x
調べるポイントの論理 x 座標を指定します。

y
調べるポイントの論理 y 座標を指定します。

point
調べるポイントの論理 x 座標と y 座標を指定します。

戻り値

いずれかのバージョンの関数の場合、指定されたポイントの色の RGB カラー値。 座標でクリッピング領域のポイントが指定されていない場合は -1 になります。

解説

ポイントはクリッピング領域に存在する必要があります。 ポイントがクリッピング領域にない場合、関数は効果を持たず、-1 を返します。

一部のデバイスでは、GetPixel 関数がサポートされていません。 詳細については、GetDeviceCaps メンバー関数のRC_BITBLT ラスター機能を参照してください。

GetPixelメンバー関数には 2 つの形式があります。 1 つ目は 2 つの座標値を受け取ります。2 つ目は、 POINT 構造体または CPoint オブジェクトを受け取ります。

CDC::GetPolyFillMode

現在の多角形塗りつぶしモードを取得します。

int GetPolyFillMode() const;

戻り値

関数が成功した場合の現在の多角形塗りつぶしモード ( ALTERNATE または WINDING)。

解説

多角形充填モードの説明については、 SetPolyFillMode メンバー関数を参照してください。

CDC::GetROP2

現在の描画モードを取得します。

int GetROP2() const;

戻り値

描画モード。 描画モードの値の一覧については、 SetROP2 メンバー関数を参照してください。

解説

描画モードでは、ペンの色と塗りつぶされたオブジェクトの内部を、表示画面に既に表示されている色と組み合わせる方法を指定します。

CDC::GetSafeHdc

このメンバー関数を呼び出して、出力デバイス コンテキスト m_hDC取得します。

HDC GetSafeHdc() const;

戻り値

デバイス コンテキスト ハンドル。

解説

このメンバー関数は、null ポインターでも機能します。

CDC::GetStretchBltMode

現在のビットマップ ストレッチ モードを取得します。

int GetStretchBltMode() const;

戻り値

戻り値は、関数が成功した場合の現在のビットマップ ストレッチ モード ( STRETCH_ANDSCANSSTRETCH_DELETESCANS、または STRETCH_ORSCANS ) を指定します。

解説

ビットマップ ストレッチ モードでは、 StretchBlt メンバー関数によって拡張または圧縮されたビットマップから情報を削除する方法を定義します。

通常、 STRETCH_ANDSCANS モードと STRETCH_ORSCANS モードは、モノクロ ビットマップで前景ピクセルを保持するために使用されます。 STRETCH_DELETESCANS モードは、通常、カラー ビットマップの色を保持するために使用されます。

CDC::GetTabbedTextExtent

属性デバイス コンテキストである m_hAttribDC を使用して、文字列の幅と高さを計算するには、このメンバー関数を呼び出します。

CSize GetTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

パラメーター

lpszString
文字列を指します。 このパラメーターに CString オブジェクトを渡すこともできます。

nCount
lpszStringによって指文字列のを指定します。

nTabPositions
lpnTabStopPositionsが指す配列内のタブ位置の数を指定します。

lpnTabStopPositions
タブストップ位置を論理単位で含む整数の配列を指します。 タブ位置は、昇順で並べ替える必要があります。最小の x 値は、配列の最初の項目である必要があります。 戻るタブは使用できません。

str
描画する指定した文字を含む CString オブジェクト。

戻り値

CSize オブジェクト内の文字列の次元 (論理単位)。

解説

文字列に 1 つ以上のタブ文字が含まれている場合、文字列の幅は、 lpnTabStopPositionsで指定されたタブ位置に基づいています。 この関数は、現在選択されているフォントを使用して文字列の次元を計算します。

現在のクリッピング領域は、 GetTabbedTextExtent 関数によって返される幅と高さをオフセットしません。

一部のデバイスでは通常のセル配列に文字が配置されないため (つまり、文字をカーニングします)、文字列内の文字のエクステントの合計が文字列の範囲と等しくない可能性があります。

nTabPositionsが 0 で、lpnTabStopPositionsNULLの場合、タブは平均文字幅の 8 倍に展開されます。 nTabPositionsが 1 の場合、タブ位置は、lpnTabStopPositionsポイントする配列の最初の値で指定された距離で区切ります。 lpnTabStopPositionsが 1 つ以上の値を指している場合、配列内の各値に対して、nTabPositionsで指定された数までタブ位置が設定されます。

CDC::GetTextAlign

デバイス コンテキストのテキスト配置フラグの状態を取得します。

UINT GetTextAlign() const;

戻り値

テキスト配置フラグの状態。 戻り値は、次の 1 つ以上の値です。

  • TA_BASELINE x 軸の配置と、外接する四角形内の選択したフォントのベースラインを指定します。

  • TA_BOTTOM x 軸と外接する四角形の下端の配置を指定します。

  • TA_CENTER y 軸と外接する四角形の中心の配置を指定します。

  • TA_LEFT y 軸と外接する四角形の左側の配置を指定します。

  • TA_NOUPDATECP 現在位置が更新されないように指定します。

  • TA_RIGHT y 軸と外接する四角形の右側の配置を指定します。

  • TA_TOP x 軸と外接する四角形の上端の配置を指定します。

  • TA_UPDATECP 現在位置が更新されることを指定します。

解説

テキスト配置フラグは、 TextOut および ExtTextOut メンバー関数が文字列の開始点に関連してテキストの文字列を配置する方法を決定します。 テキスト配置フラグは必ずしも単一ビット フラグではなく、0 に等しい場合があります。 フラグが設定されているかどうかをテストするには、アプリケーションで次の手順に従う必要があります。

  1. ビットごとの OR (|) 演算子をフラグとその関連フラグに適用します。次のようにグループ化されます。

    • TA_LEFTTA_CENTERTA_RIGHT

    • TA_BASELINETA_BOTTOMTA_TOP

    • TA_NOUPDATECP および TA_UPDATECP

  2. C++ ビットごとの AND (&) 演算子を結果と GetTextAlignの戻り値に適用します。

  3. この結果とフラグの等価性をテストします。

CDC::GetTextCharacterExtra

文字間間隔の現在の設定を取得します。

int GetTextCharacterExtra() const;

戻り値

文字間の間隔の量。

解説

GDI は、デバイス コンテキストにテキスト行を書き込むときに、区切り文字を含む各文字にこの間隔を追加します。

文字間間隔の既定値は 0 です。

CDC::GetTextColor

現在のテキストの色を取得します。

COLORREF GetTextColor() const;

戻り値

RGB カラー値としての現在のテキストの色。

解説

テキストの色は、GDI テキスト出力メンバー関数 TextOutExtTextOut、および TabbedTextOutを使用して描画される文字の前景色です。

CDC::GetTextExtent

このメンバー関数を呼び出して、現在のフォントを使用してテキスト行の幅と高さを計算し、寸法を決定します。

CSize GetTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetTextExtent(const CString& str) const;

パラメーター

lpszString
文字の文字列を指します。 このパラメーターに CString オブジェクトを渡すこともできます。

nCount
文字列の文字数を指定します。

str
指定した文字を含む CString オブジェクト。

戻り値

CSize オブジェクト内の文字列の次元 (論理単位)。

解説

情報は、属性デバイス コンテキスト m_hAttribDCから取得されます。

既定では、 GetTextExtent は、ディメンションを取得するテキストが水平線に沿って設定されていることを前提としています (つまり、エスケープは 0 です)。 0 以外のエスケープを指定するフォントを作成する場合は、文字列の寸法を取得するためにテキストの角度を明示的に変換する必要があります。

現在のクリッピング領域は、 GetTextExtentによって返される幅と高さに影響しません。

一部のデバイスでは通常のセル配列に文字が配置されないため (つまり、カーニングが実行されます)、文字列内の文字のエクステントの合計が文字列の範囲と等しくない可能性があります。

CDC::GetTextExtentExPointI

指定したスペース内に収まる、指定した文字列内の文字数を取得し、それらの各文字のテキスト範囲を配列に格納します。

BOOL GetTextExtentExPointI(
    LPWORD pgiIn,
    int cgi,
    int nMaxExtent,
    LPINT lpnFit,
    LPINT alpDx,
    LPSIZE lpSize) const;

パラメーター

pgiIn
エクステントを取得するグリフ インデックスの配列へのポインター。

cgi
pgiInが指す配列内のグリフの数を指定します。

nMaxExtent
書式設定された文字列の最大許容幅を論理単位で指定します。

lpnFit
nMaxExtentで指定されたスペースに収まる最大文字数のカウントを受け取る整数へのポインター。 lpnFitNULLされると、nMaxExtentは無視されます。

alpDx
部分グリフ エクステントを受け取る整数の配列へのポインター。 配列内の各要素は、グリフ インデックス配列の先頭と、 nMaxExtentで指定された空間に収まるグリフの 1 つの間の距離を論理単位で指定します。 この配列には、 cgiで指定されたグリフ インデックスと同数の要素が必要ですが、この関数は、 lpnFitで指定された数のグリフ インデックスに対してのみ、配列をエクステントで埋めます。 lpnDxNULLの場合、関数は文字列の部分的な幅を計算しません。

lpSize
グリフ インデックス配列の次元を論理単位で受け取る SIZE 構造体へのポインター。 この値を NULL にすることはできません。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetTextExtentExPointIの機能をエミュレートします。

CDC::GetTextExtentPointI

グリフ インデックスの指定した配列の幅と高さを取得します。

BOOL GetTextExtentPointI(
    LPWORD pgiIn,
    int cgi,
    LPSIZE lpSize) const;

パラメーター

pgiIn
エクステントを取得するグリフ インデックスの配列へのポインター。

cgi
pgiInが指す配列内のグリフの数を指定します。

lpSize
グリフ インデックス配列の次元を論理単位で受け取る SIZE 構造体へのポインター。 この値を NULL にすることはできません。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、関数 GetTextExtentPointIの機能をエミュレートします。

CDC::GetTextFace

このメンバー関数を呼び出して、現在のフォントの書体名をバッファーにコピーします。

int GetTextFace(
    int nCount,
    LPTSTR lpszFacename) const;

int GetTextFace(CString& rString) const;

パラメーター

nCount
バッファーのサイズをバイト単位で指定します。 タイプフェイス名がこのパラメーターで指定されたバイト数より長い場合、名前は切り捨てられます。

lpszFacename
書体名のバッファーをポイントします。

rString
CString オブジェクトへの参照です。

戻り値

バッファーにコピーされたバイト数 。終端の null 文字は含まれません。 エラーが発生した場合は 0 です。

解説

書体名は、null で終わる文字列としてコピーされます。

CDC::GetTextMetrics

属性デバイス コンテキストを使用して、現在のフォントのメトリックを取得します。

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;

パラメーター

lpMetrics
メトリックを受け取る TEXTMETRIC 構造をポイントします。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::GetViewportExt

デバイス コンテキストのビューポートの x エクステントと y エクステントを取得します。

CSize GetViewportExt() const;

戻り値

CSize オブジェクトとしての x エクステントと y エクステント (デバイス単位)。

CDC::GetViewportOrg

デバイス コンテキストに関連付けられたビューポートの原点の x 座標と y 座標を取得します。

CPoint GetViewportOrg() const;

戻り値

CPoint オブジェクトとしてのビューポートの原点 (デバイス座標)。

CDC::GetWindow

表示デバイス コンテキストに関連付けられているウィンドウを返します。

CWnd* GetWindow() const;

戻り値

成功した場合は CWnd オブジェクトへのポインター。それ以外の場合は NULL

解説

これは高度な関数です。 たとえば、このメンバー関数は、印刷時や印刷プレビュー時にビュー ウィンドウを返さない場合があります。 出力に関連付けられているウィンドウが常に返されます。 指定された DC を使用する出力関数は、このウィンドウに描画されます。

CDC::GetWindowExt

デバイス コンテキストに関連付けられているウィンドウの x エクステントと y エクステントを取得します。

CSize GetWindowExt() const;

戻り値

CSize オブジェクトとしての x エクステントと y エクステント (論理単位)。

CDC::GetWindowOrg

デバイス コンテキストに関連付けられたウィンドウの原点の x 座標と y 座標を取得します。

CPoint GetWindowOrg() const;

戻り値

CPoint オブジェクトとしてのウィンドウの原点 (論理座標)。

CDC::GetWorldTransform

現在のワールド空間からページ空間への変換を取得します。

BOOL GetWorldTransform(XFORM& rXform) const;

パラメーター

rXform
現在のワールド空間からページ空間への変換を受け取る XFORM 構造体への参照。

戻り値

成功した場合は 0 以外の値を返します。

失敗した場合は 0 を返します。

拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

このメソッドは、Windows GDI 関数の GetWorldTransformをラップします。

CDC::GradientFill

このメンバー関数を呼び出して、四角形と三角形の構造体を、一方の側から他方に滑らかにフェードする色で塗りつぶします。

BOOL GradientFill(
    TRIVERTEX* pVertices,
    ULONG nVertices,
    void* pMesh,
    ULONG nMeshElements,
    DWORD dwMode);

パラメーター

pVertices
それぞれが三角形の頂点を定義する TRIVERTEX 構造体の配列へのポインター。

nVertices
頂点の数。

pMesh
三角形モードの GRADIENT_TRIANGLE 構造体の配列、または四角形モードの GRADIENT_RECT 構造体の配列。

nMeshElements
pMesh内の要素 (三角形または四角形) の数。

dwMode
グラデーション塗りつぶしモードを指定します。 使用可能な値の一覧については、Windows SDK の GradientFill に関するページを参照してください。

戻り値

成功した場合は TRUE。それ以外の場合は FALSE

解説

詳細については、Windows SDK の GradientFill に関する記事を参照してください。

CDC::GrayString

メモリ ビットマップにテキストを書き込み、ビットマップを淡色表示し、ビットマップをディスプレイにコピーして、特定の場所に淡色表示 (灰色) テキストを描画します。

virtual BOOL GrayString(
    CBrush* pBrush,
    BOOL (CALLBACK* lpfnOutput)(
    HDC,
    LPARAM,
    int),
    LPARAM lpData,
    int nCount,
    int x,
    int y,
    int nWidth,
    int nHeight);

パラメーター

pBrush
淡色表示 (灰色表示) に使用するブラシを識別します。

lpfnOutput
文字列を描画するアプリケーション指定のコールバック関数のプロシージャ インスタンス アドレスを指定します。 詳細については、Windows OutputFunc callback 関数の説明を参照してください。 このパラメーターが NULLの場合、システムは Windows TextOut 関数を使用して文字列を描画し、 lpData は出力する文字列への長いポインターであると見なされます。

lpData
出力関数に渡されるデータへの遠方ポインターを指定します。 lpfnOutputNULLされている場合、lpDataは、出力する文字列への長いポインターである必要があります。

nCount
出力する文字数を指定します。 このパラメーターが 0 の場合、 GrayString は文字列の長さを計算します ( lpData が文字列へのポインターであると仮定します)。 nCountが 1 で、lpfnOutputが指す関数が 0 を返す場合、イメージは表示されますが、淡色表示されません。

x
文字列を囲む四角形の開始位置の論理 x 座標を指定します。

y
文字列を囲む四角形の開始位置の論理 y 座標を指定します。

nWidth
文字列を囲む四角形の幅 (論理単位) を指定します。 nWidthが 0 の場合、GrayStringは、lpDataが文字列へのポインターであると仮定して、領域の幅を計算します。

nHeight
文字列を囲む四角形の高さを (論理単位で) 指定します。 nHeightが 0 の場合、GrayStringは、lpDataが文字列へのポインターであると仮定して、領域の高さを計算します。

戻り値

文字列が描画される場合は 0 以外、 TextOut 関数またはアプリケーション提供の出力関数が 0 を返した場合、またはメモリが不足して淡色表示用のメモリ ビットマップを作成できなかった場合は 0。

解説

この関数は、選択したブラシと背景に関係なくテキストを暗くします。 GrayStringメンバー関数は、現在選択されているフォントを使用します。 この関数を使用する前に、 MM_TEXT マッピング モードを選択する必要があります。

アプリケーションは、 GrayString メンバー関数を呼び出さずに、単色の灰色をサポートするデバイスで淡色 (灰色) の文字列を描画できます。 システムカラー COLOR_GRAYTEXT は、無効なテキストを描画するために使用される単色の灰色のシステムカラーです。 アプリケーションは、 GetSysColor Windows 関数を呼び出して、 COLOR_GRAYTEXTの色の値を取得できます。 色が 0 (黒) 以外の場合、アプリケーションは SetTextColor メンバー関数を呼び出してテキストの色を色の値に設定し、文字列を直接描画できます。 取得した色が黒の場合、アプリケーションはテキストを暗く (灰色) するために GrayString を呼び出す必要があります。

lpfnOutputNULLされている場合、GDI は Windows TextOut関数を使用し、lpDataは出力する文字への遠いポインターであると見なされます。 出力する文字を TextOut メンバー関数で処理できない場合 (たとえば、文字列はビットマップとして格納されます)、アプリケーションは独自の出力関数を指定する必要があります。

コールバックの境界を越えて例外をスローできないため、Windows に戻る前に、すべてのコールバック関数で Microsoft Foundation 例外をトラップする必要があります。 例外の詳細については、 Exceptionsに関する記事を参照してください。

GrayStringに渡されるコールバック関数は、__stdcall呼び出し規約を使用する必要があり、__declspecと共にエクスポートする必要があります。

フレームワークがプレビュー モードの場合、 GrayString メンバー関数の呼び出しは TextOut 呼び出しに変換され、コールバック関数は呼び出されません。

CDC::HIMETRICtoDP

この関数は、 HIMETRIC サイズを OLE からピクセルに変換する場合に使用します。

void HIMETRICtoDP(LPSIZE lpSize) const;

パラメーター

lpSize
SIZE構造体またはCSize オブジェクトを指します。

解説

デバイス コンテキスト オブジェクトのマッピング モードが MM_LOENGLISHMM_HIENGLISHMM_LOMETRIC 、または MM_HIMETRICの場合、変換は物理インチのピクセル数に基づきます。 マッピング モードが他の非制約モードの 1 つである場合 (たとえば、 MM_TEXT)、変換は論理インチのピクセル数に基づいています。

CDC::HIMETRICtoLP

この関数を呼び出して、 HIMETRIC 単位を論理単位に変換します。

void HIMETRICtoLP(LPSIZE lpSize) const;

パラメーター

lpSize
SIZE構造体またはCSize オブジェクトを指します。

解説

この関数は、OLE から HIMETRIC サイズを取得し、それらをアプリケーションの自然なマッピング モードに変換する場合に使用します。

変換を行うには、最初に HIMETRIC 単位をピクセルに変換してから、デバイス コンテキストの現在のマッピング単位を使用してこれらの単位を論理単位に変換します。 デバイスのウィンドウとビューポートの範囲が結果に影響を与える点に注意してください。

CDC::IntersectClipRect

現在の領域と、 x1y1x2、および y2で指定された四角形の交差部分を形成して、新しいクリッピング領域を作成します。

int IntersectClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int IntersectClipRect(LPCRECT lpRect);

パラメーター

x1
四角形の左上隅の論理 x 座標を指定します。

y1
四角形の左上隅の論理 y 座標を指定します。

x2
四角形の右下隅の論理 x 座標を指定します。

y2
四角形の右下隅の論理 y 座標を指定します。

lpRect
四角形を指定します。 このパラメーターには、 CRect オブジェクトまたは RECT 構造体へのポインターを渡すことができます。

戻り値

新しいクリッピング領域の種類。 次のいずれかの値を指定できます。

  • COMPLEXREGION 新しいクリッピング領域には、重複する境界線があります。

  • ERROR デバイス コンテキストが無効です。

  • NULLREGION 新しいクリッピング領域が空です。

  • SIMPLEREGION 新しいクリッピング領域には、重複する境界線はありません。

解説

GDI は、それ以降のすべての出力を新しい境界内に収まるようにクリップします。 幅と高さは 32,767 を超えてはなりません。

CDC::InvertRect

指定した四角形の内容を反転します。

void InvertRect(LPCRECT lpRect);

パラメーター

lpRect
反転する四角形の論理座標を含む RECT を指します。 このパラメーターに CRect オブジェクトを渡すこともできます。

解説

反転は論理 NOT 演算であり、各ピクセルのビットを反転します。 モノクロディスプレイでは、この関数は白ピクセルを黒と黒のピクセルを白にします。 カラー ディスプレイでは、反転はディスプレイの色の生成方法によって異なります。 同じ四角形で InvertRect を 2 回呼び出すと、表示が前の色に戻ります。

四角形が空の場合、何も描画されません。

void CDCView::DoInvertRect(CDC *pDC)
{
   // invert rect from 20,20 to 50,50
   CRect rect(20, 20, 50, 50);
   pDC->InvertRect(rect);

   // inverting again restores to normal
   ::Sleep(1000);
   pDC->InvertRect(rect);
}

CDC::InvertRgn

pRgnで指定した領域内の色を反転します。

BOOL InvertRgn(CRgn* pRgn);

パラメーター

pRgn
反転する領域を識別します。 領域の座標は論理単位で指定されます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

モノクロディスプレイでは、この関数は白ピクセルを黒と黒のピクセルを白にします。 カラー ディスプレイでは、反転はディスプレイの色の生成方法によって異なります。

CDC::IsPrinting

デバイス コンテキストが印刷に使用されているかどうかを判断します。

BOOL IsPrinting() const;

戻り値

CDC オブジェクトがプリンター DC の場合は 0 以外、それ以外の場合は 0。

CDC::LineTo

現在の位置から、 x および y (または point) で指定された点までの線を描画します(含まない)。

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

パラメーター

x
線の終点の論理 x 座標を指定します。

y
線の終点の論理 y 座標を指定します。

point
線の終点を指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

線が描画される場合は 0 以外。それ以外の場合は 0。

解説

線は、選択したペンで描画されます。 現在の位置は、 xy 、または pointに設定されます。

CRect::CenterPoint の例を参照してください。

CDC::LPtoDP

論理ユニットをデバイス単位に変換します。

void LPtoDP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;

パラメーター

lpPoints
ポイントの配列を指します。 配列内の各ポイントは、 POINT 構造体または CPoint オブジェクトです。

nCount
配列内のポイントの数。

lpRect
RECT構造体またはCRect オブジェクトを指します。 このパラメーターは、四角形を論理単位からデバイス単位にマッピングする一般的なケースに使用されます。

lpSize
SIZE構造体またはCSize オブジェクトを指します。

解説

この関数は、GDI の論理座標系からデバイスの座標系に、各ポイントの座標またはサイズの寸法をマップします。 変換は、現在のマッピング モードと、デバイスのウィンドウとビューポートの原点とエクステントの設定によって異なります。

ポイントの x 座標と y 座標は、-32,768 ~ 32,767 の範囲の 2 バイト符号付き整数です。 マッピング モードでこれらの制限を超える値が発生する場合、システムは値をそれぞれ -32,768 と 32,767 に設定します。

CDC::LPtoHIMETRIC

論理単位を HIMETRIC 単位に変換するには、この関数を呼び出します。

void LPtoHIMETRIC(LPSIZE lpSize) const;

パラメーター

lpSize
SIZE構造体またはCSize オブジェクトを指します。

解説

この関数は、アプリケーションの自然なマッピング モードから変換 HIMETRIC サイズを OLE に指定する場合に使用します。 デバイスのウィンドウとビューポートのエクステントが結果に影響します。

変換を行うには、まず、デバイス コンテキストの現在のマッピング単位を使用して論理ユニットをピクセルに変換し、次にこれらの単位を HIMETRIC 単位に変換します。

CDC::m_hAttribDC

この CDC オブジェクトの属性デバイス コンテキスト。

HDC m_hAttribDC;

解説

既定では、このデバイス コンテキストは m_hDC と同じです。 一般に、デバイス コンテキストから情報を要求する CDC GDI 呼び出しは、 m_hAttribDCに送信されます。 これら 2 つのデバイス コンテキストの使用方法の詳細については、 CDC クラスの説明を参照してください。

CDC::m_hDC

この CDC オブジェクトの出力デバイス コンテキスト。

HDC m_hDC;

解説

既定では、 m_hDCm_hAttribDC と等しく、他のデバイス コンテキストは CDC でラップされます。 一般に、出力を作成 CDC GDI 呼び出しは、 m_hDC デバイス コンテキストに移動します。 m_hDCm_hAttribDCを初期化して、さまざまなデバイスを指すことができます。 これら 2 つのデバイス コンテキストの使用方法の詳細については、 CDC クラスの説明を参照してください。

CDC::MaskBlt

指定されたマスク操作とラスター演算を使用して、ソース ビットマップとコピー先ビットマップのカラー データを結合します。

BOOL MaskBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    CBitmap& maskBitmap,
    int xMask,
    int yMask,
    DWORD dwRop);

パラメーター

x
コピー先の四角形の左上隅の論理 x 座標を指定します。

y
コピー先の四角形の左上隅の論理 y 座標を指定します。

nWidth
コピー先の四角形とソース ビットマップの幅を論理単位で指定します。

nHeight
コピー先の四角形とソース ビットマップの高さを論理単位で指定します。

pSrcDC
ビットマップのコピー元となるデバイス コンテキストを識別します。 dwRop パラメーターでソースを含まないラスター演算を指定する場合は、0 にする必要があります。

xSrc
ソース ビットマップの左上隅の論理 x 座標を指定します。

ySrc
ソース ビットマップの左上隅の論理 y 座標を指定します。

maskBitmap
ソース デバイス コンテキストのカラー ビットマップと組み合わせたモノクロ マスク ビットマップを識別します。

xMask
maskBitmap パラメーターで指定されたマスク ビットマップの水平方向のピクセル オフセットを指定します。

yMask
maskBitmap パラメーターで指定されたマスク ビットマップの垂直方向のピクセル オフセットを指定します。

dwRop
前景と背景の両方の三項ラスター演算コードを指定します。このコードは、ソース データと変換先データの組み合わせを制御するために関数が使用します。 バックグラウンド ラスター演算コードは、この値の上位ワードの上位バイトに格納されます。前景ラスター演算コードは、この値の上位ワードの下位バイトに格納されます。この値の下位ワードは無視され、ゼロにする必要があります。 マクロ MAKEROP4 では、前景ラスター操作コードとバックグラウンド ラスター演算コードの組み合わせが作成されます。 この関数のコンテキストでのフォアグラウンドと背景の説明については、「解説」セクションを参照してください。 一般的なラスター演算コードの一覧については、 BitBlt メンバー関数を参照してください。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

maskBitmapで指定されたマスクの値 1 は、dwRopで指定されたフォアグラウンド ラスター操作コードをその場所に適用する必要があることを示します。 マスクの値が 0 の場合は、 dwRop で指定された背景ラスター操作コードをその場所に適用する必要があることを示します。 ラスター演算でソースが必要な場合、マスク四角形はソースの四角形を覆う必要があります。 そうでない場合、関数は失敗します。 ラスター演算でソースが必要ない場合は、マスク四角形がコピー先の四角形を覆う必要があります。 そうでない場合、関数は失敗します。

この関数が呼び出されたときに、ソース デバイス コンテキストに対して回転またはせん断変換が有効な場合は、エラーが発生します。 ただし、他の種類の変換も許可されます。

変換元、パターン、およびコピー先のビットマップの色形式が異なる場合、この関数はパターンまたはソース形式、またはその両方を変換先の形式に合わせて変換します。 マスク ビットマップがモノクロ ビットマップでない場合は、エラーが発生します。 拡張メタファイルが記録されている場合、ソース デバイス コンテキストが拡張メタファイル デバイス コンテキストを識別すると、エラーが発生します (また、関数は 0 を返します)。 すべてのデバイスが MaskBltをサポートしているわけではありません。 アプリケーションは GetDeviceCaps を呼び出して、デバイスがこの関数をサポートしているかどうかを判断する必要があります。 マスク ビットマップが指定されていない場合、この関数はフォアグラウンド ラスター操作コードを使用して、 BitBltとまったく同じように動作します。 マスク ビットマップ内のピクセル オフセットは、ソース デバイス コンテキストのビットマップ内のポイント (0,0) にマップされます。 これは、マスク ビットマップに一連のマスクが含まれている場合に便利です。アプリケーションは、 MaskBltに送信されるピクセル オフセットと四角形のサイズを調整することで、それらのいずれか 1 つをマスク・ブリッティング・タスクに簡単に適用できます。

CDC::ModifyWorldTransform

指定したモードを使用して、デバイス コンテキストのワールド変換を変更します。

BOOL ModifyWorldTransform(
    const XFORM& rXform,
    DWORD iMode);

パラメーター

rXform
指定されたデバイス コンテキストのワールド変換を変更するために使用される XFORM 構造体への参照。

iMode
変換データが現在のワールド変換を変更する方法を指定します。 このパラメーターで使用できる値の一覧については、 ModifyWorldTransformを参照してください。

戻り値

成功した場合は 0 以外の値を返します。

失敗した場合は 0 を返します。

拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

このメソッドは、Windows GDI 関数の ModifyWorldTransformをラップします。

CDC::MoveTo

現在の位置を、 x および y (または point) で指定されたポイントに移動します。

CPoint MoveTo(
    int x,
    int y);

CPoint MoveTo(POINT point);

パラメーター

x
新しい位置の論理 x 座標を指定します。

y
新しい位置の論理 y 座標を指定します。

point
新しい位置を指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

CPoint オブジェクトとしての前の位置の x 座標と y 座標。

CRect::CenterPoint の例を参照してください。

CDC::OffsetClipRgn

指定したオフセットでデバイス コンテキストのクリッピング領域を移動します。

int OffsetClipRgn(
    int x,
    int y);

int OffsetClipRgn(SIZE size);

パラメーター

x
左または右に移動する論理単位の数を指定します。

y
上下に移動する論理ユニットの数を指定します。

size
オフセットする量を指定します。

戻り値

新しいリージョンの種類。 次のいずれかの値を指定できます。

  • COMPLEXREGION クリッピング領域には、重複する境界線があります。

  • ERROR デバイス コンテキストが無効です。

  • NULLREGION クリッピング領域が空です。

  • SIMPLEREGION クリッピング領域には、重複する境界線はありません。

解説

この関数は、領域 x 単位を x 軸に沿って移動し、 y 単位を y 軸に沿って移動します。

CDC::OffsetViewportOrg

ビューポートの原点の座標を、現在のビューポート原点の座標を基準に変更します。

virtual CPoint OffsetViewportOrg(
    int nWidth,
    int nHeight);

パラメーター

nWidth
現在の原点の x 座標に追加するデバイス単位の数を指定します。

nHeight
現在の原点の y 座標に追加するデバイス単位の数を指定します。

戻り値

CPoint オブジェクトとしての前のビューポートの原点 (デバイス座標)。

CDC::OffsetWindowOrg

現在のウィンドウ原点の座標を基準にして、ウィンドウの原点の座標を変更します。

CPoint OffsetWindowOrg(
    int nWidth,
    int nHeight);

パラメーター

nWidth
現在の原点の x 座標に追加する論理単位の数を指定します。

nHeight
現在の原点の y 座標に追加する論理単位の数を指定します。

戻り値

CPoint オブジェクトとしての前のウィンドウの原点 (論理座標)。

CDC::operator HDC

この演算子を使用して、 CDC オブジェクトのデバイス コンテキスト ハンドルを取得します。

operator HDC() const;

戻り値

成功した場合は、デバイス コンテキスト オブジェクトのハンドル。それ以外の場合は NULL

解説

このハンドルを使用して、Windows API を直接呼び出すことができます。

CDC::PaintRgn

現在のブラシを使用して、 pRgn で指定された領域を塗りつぶします。

BOOL PaintRgn(CRgn* pRgn);

パラメーター

pRgn
塗りつぶす領域を識別します。 指定された領域の座標は論理単位で指定されます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CDC::PatBlt

デバイスにビット パターンを作成します。

BOOL PatBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    DWORD dwRop);

パラメーター

x
パターンを受け取る四角形の左上隅の論理 x 座標を指定します。

y
パターンを受け取る四角形の左上隅の論理 y 座標を指定します。

nWidth
パターンを受け取る四角形の幅 (論理単位) を指定します。

nHeight
パターンを受け取る四角形の高さを (論理単位で) 指定します。

dwRop
ラスター演算コードを指定します。 ラスター演算コード (ROP) は、GDI が現在のブラシ、可能なソース ビットマップ、およびコピー先ビットマップを含む出力操作で色を結合する方法を定義します。 このパラメーターには、次の 値のいずれかを指定できます。

  • PATCOPY パターンをコピー先ビットマップにコピーします。

  • PATINVERT Boolean XOR (^) 演算子を使用して、コピー先ビットマップとパターンを組み合わせます。

  • DSTINVERT コピー先のビットマップを反転します。

  • BLACKNESS すべての出力を黒にします。

  • WHITENESS すべての出力を白にします。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

パターンは、選択したブラシと、デバイスに既に存在するパターンの組み合わせです。 dwRopで指定されたラスター演算コードは、パターンを組み合わせる方法を定義します。 この関数にリストされているラスター演算は、完全な 256 個の三項ラスター演算コードの限られたサブセットです。特に、ソースを参照するラスター演算コードは使用できません。

すべてのデバイス コンテキストが PatBlt 関数をサポートしているわけではありません。 デバイス コンテキストでPatBltがサポートされているかどうかを確認するには、RASTERCAPS インデックスを使用して GetDeviceCaps メンバー関数を呼び出し、RC_BITBLT フラグの戻り値を確認します。

CDC::Pie

中心と 2 つの端点が線で結合された楕円の円弧を描画して、円状のくさびを描画します。

BOOL Pie(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Pie(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

パラメーター

x1
外接する四角形の左上隅の x 座標を (論理単位で) 指定します。

y1
外接する四角形の左上隅の y 座標を (論理単位で) 指定します。

x2
外接する四角形の右下隅の x 座標を (論理単位で) 指定します。

y2
外接する四角形の右下隅の y 座標を (論理単位で) 指定します。

x3
円弧の始点の x 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

y3
円弧の始点の y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

x4
円弧の終点の x 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

y4
円弧の終点の y 座標を論理単位で指定します。 この点は、円弧上に正確に配置する必要はありません。

lpRect
外接する四角形を指定します。 このパラメーターには、 CRect オブジェクトまたは RECT 構造体へのポインターを渡すことができます。

ptStart
円弧の始点を指定します。この点は、円弧上に正確に配置する必要はありません。このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

ptEnd
円弧の終点を指定します。この点は、円弧上に正確に配置する必要はありません。このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

円弧の中心は、 x1y1x2y2 (または lpRect) で指定された外接する四角形の中心です。 円弧の始点と終点は、 x3y3x4、および y4 (または ptStart および ptEnd) によって指定されます。

円弧は選択したペンで描画され、反時計回りの方向に移動します。 各端点から円弧の中心まで、さらに 2 本の線が描画されます。 円の形の領域は、現在のブラシで塗りつぶされます。 x3x4に等しく、y3y4等しい場合、結果は楕円の中心からポイント (x3y3) または (x4y4) までの 1 行の楕円になります。

この関数によって描画される図は、上下の座標まで拡張されますが、含まれません。 これは、図形の高さが y2 - y1 され、図形の幅が x2 - x1されることを意味します。 外接する四角形の幅と高さの両方が 2 単位を超え、32,767 単位未満である必要があります。

void CDCView::DrawPie(CDC *pDC)
{
   // Fill the client area with a simple pie chart. A
   // big blue slice covers 75% of the pie, from
   // 6 o'clock to 3 o'clock. This portion is filled
   // with blue and has a blue edge. The remaining 25%
   // is filled with a red, diagonal hatch and has
   // a red edge.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens and similar brushes.
   CPen penBlue, penRed;
   CBrush brushBlue, brushRed;
   CBrush *pOldBrush;
   CPen *pOldPen;

   brushBlue.CreateSolidBrush(RGB(0, 0, 255));
   brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen with a solid blue fill.

   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

   pDC->Pie(rectClient,
            CPoint(rectClient.right, rectClient.CenterPoint().y),
            CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw the remaining quarter slice from 6 o'clock
   // to 3 o'clock, counterclockwise, in a red pen with
   // the hatched brush.
   pDC->SelectObject(&penRed);
   pDC->SelectObject(&brushRed);

   // Same parameters, but reverse start and end points.
   pDC->Pie(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::PlayMetaFile

指定したメタファイルの内容をデバイス コンテキストで再生します。

BOOL PlayMetaFile(HMETAFILE hMF);

BOOL PlayMetaFile(
    HENHMETAFILE hEnhMetaFile,
    LPCRECT lpBounds);

パラメーター

hMF
再生するメタファイルを識別します。

hEnhMetaFile
拡張メタファイルを識別します。

lpBounds
図の表示に使用する外接する四角形の座標を含む RECT 構造体または CRect オブジェクトを指します。 座標は論理単位で指定されます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

メタファイルは、何度でも再生できます。

PlayMetaFileの 2 番目のバージョンでは、指定された拡張形式のメタファイルに格納されている画像が表示されます。 アプリケーションが 2 番目のバージョンの PlayMetaFileを呼び出すと、Windows は拡張メタファイル ヘッダーの画像フレームを使用して、 lpBounds パラメーターが指す四角形に画像をマップします。 (この図は、 PlayMetaFileを呼び出す前に出力デバイスにワールド変換を設定することで、せん断または回転させることができます)。四角形の端に沿ったポイントが図に含まれます。 拡張メタファイルを再生する前に出力デバイスでクリッピング領域を定義することで、拡張メタファイルの画像をクリップできます。

拡張メタファイルにオプションのパレットが含まれている場合、アプリケーションは、 PlayMetaFileの 2 番目のバージョンを呼び出す前に出力デバイスにカラー パレットを設定することで、一貫性のある色を実現できます。 オプションのパレットを取得するには、 GetEnhMetaFilePaletteEntries Windows 関数を使用します。 2 番目のバージョンの PlayMetaFile を呼び出し、ソース拡張メタファイルを新しい拡張メタファイルのデバイス コンテキストに再生することで、新しく作成された拡張メタファイルに拡張メタファイルを埋め込むことができます。

出力デバイス コンテキストの状態は、この関数によって保持されます。 拡張メタファイルで作成されたオブジェクトは削除されませんが、この関数によって削除されます。 この関数を停止するために、アプリケーションは別のスレッドから CancelDC Windows 関数を呼び出して操作を終了できます。 この場合、関数は 0 を返します。

CDC::PlgBlt

ソース デバイス コンテキスト内の指定した四角形から、指定されたデバイス コンテキスト内の指定された並列四辺形へのカラー データのビットのビットブロック転送を実行します。

BOOL PlgBlt(
    LPPOINT lpPoint,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nWidth,
    int nHeight,
    CBitmap& maskBitmap,
    int xMask,
    int yMask);

パラメーター

lpPoint
コピー先の並列四辺形の 3 つのコーナーを識別する論理空間内の 3 つのポイントの配列を指します。 ソース四角形の左上隅は、この配列の最初のポイント、この配列の 2 番目のポイントへの右上隅、および左下隅から 3 番目のポイントにマップされます。 ソースの四角形の右下隅は、平行四辺形の暗黙の 4 番目の点にマップされます。

pSrcDC
ソース デバイス コンテキストを識別します。

xSrc
ソース四角形の左上隅の x 座標を論理単位で指定します。

ySrc
ソース四角形の左上隅の y 座標を論理単位で指定します。

nWidth
ソース四角形の幅を論理単位で指定します。

nHeight
ソース四角形の高さを論理単位で指定します。

maskBitmap
ソース四角形の色をマスクするために使用されるオプションのモノクロ ビットマップを識別します。

xMask
モノクロ ビットマップの左上隅の x 座標を指定します。

yMask
モノクロ ビットマップの左上隅の y 座標を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

指定されたビットマスク ハンドルが有効なモノクロ ビットマップを識別する場合、関数はこのビットマップを使用して、ソースの四角形からカラー データのビットをマスクします。

平行四辺形 (D) の 4 番目の頂点は、最初の 3 つの点 (A、B、および C) をベクトルとして扱い、D = B + C - A を計算することによって定義されます。

ビットマスクが存在する場合、マスク内の値 1 は、ソース ピクセルカラーをコピー先にコピーする必要があることを示します。 マスクの値が 0 の場合は、コピー先のピクセルの色を変更しないことを示します。

マスク四角形がソース四角形とコピー先の四角形よりも小さい場合、関数はマスク パターンをレプリケートします。

スケーリング、変換、およびリフレクション変換は、ソース デバイス コンテキストで許可されます。ただし、回転とせん断変換は行われません。 マスク ビットマップがモノクロ ビットマップでない場合は、エラーが発生します。 必要に応じて、ターゲット デバイス コンテキストのストレッチ モードを使用して、ピクセルを拡大または圧縮する方法を決定します。 拡張メタファイルが記録されている場合、ソース デバイス コンテキストが拡張メタファイル デバイス コンテキストを識別するとエラーが発生します。

コピー先の座標は、コピー先デバイス コンテキストに従って変換されます。コピー元の座標は、コピー元デバイス コンテキストに従って変換されます。 ソース変換に回転またはせん断がある場合は、エラーが返されます。 変換先とソースの四角形の色形式が同じでない場合は、 PlgBlt 変換元の四角形が変換先の四角形と一致するように変換されます。 すべてのデバイスが PlgBltをサポートしているわけではありません。 詳細については、CDC::GetDeviceCaps メンバー関数のRC_BITBLT ラスター機能の説明を参照してください。

ソースと宛先のデバイス コンテキストが互換性のないデバイスを表す場合、 PlgBlt はエラーを返します。

CDC::PolyBezier

1 つ以上のベジエ スプラインを描画します。

BOOL PolyBezier(
    const POINT* lpPoints,
    int nCount);

パラメーター

lpPoints
スプラインの終点と制御点を含む POINT データ構造の配列を指します。

nCount
lpPoints配列内のポイント数を指定します。 各 Bzier スプラインには 2 つの制御点と終点が必要であり、最初のスプラインには別の開始点が必要であるため、この値は、描画するスプラインの数の 3 倍以上である必要があります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、 lpPoints パラメーターで指定された端点と制御点を使用して、3 次ベジエ スプラインを描画します。 1 番目のスプラインは、2 番目と 3 番目の点を制御点として使用して、最初の点から 4 番目の点に描画されます。 シーケンス内の後続の各スプラインには、さらに 3 つの点が必要です。前のスプラインの終点が開始点として使用され、シーケンス内の次の 2 つの点が制御ポイント、3 番目が終点です。

現在の位置は、 PolyBezier 関数によって使用または更新されません。 図は塗りつぶされていません。 この関数は、現在のペンを使用して線を描画します。

CDC::PolyBezierTo

1 つ以上のベジエ スプラインを描画します。

BOOL PolyBezierTo(
    const POINT* lpPoints,
    int nCount);

パラメーター

lpPoints
エンドポイントと制御ポイントを含む POINT データ構造の配列を指します。

nCount
lpPoints配列内のポイント数を指定します。 各 Bzier スプラインには 2 つの制御点と終点が必要であるため、この値は、描画するスプラインの数の 3 倍にする必要があります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、 lpPoints パラメーターで指定された制御点を使用して、3 次ベジエ スプラインを描画します。 最初のスプラインは、コントロール ポイントとして最初の 2 つの点を使用して、現在の位置から 3 番目のポイントに描画されます。 後続のスプラインごとに、関数にはさらに 3 つの点が必要であり、前のスプラインの終点を次のスプラインの開始点として使用します。 PolyBezierTo は、現在位置を最後の Bzier スプラインの終点に移動します。 図は塗りつぶされていません。 この関数は、現在のペンを使用して線を描画します。

CDC::BeginPath の例を参照してください。

CDC::PolyDraw

一連の線分とベジエ スプラインを描画します。

BOOL PolyDraw(
    const POINT* lpPoints,
    const BYTE* lpTypes,
    int nCount);

パラメーター

lpPoints
各線分の端点と、各 Bzier スプラインの端点と制御点を含む、 POINT データ構造の配列を指します。

lpTypes
lpPoints配列内の各ポイントの使用方法を指定する配列を指します。 値には、次のいずれかを指定できます。

  • PT_MOVETO このポイントが不整合な図形を開始することを指定します。 このポイントが新しい現在位置になります。

  • PT_LINETO 現在の位置からこのポイントまでの線を描画し、新しい現在位置になるように指定します。

  • PT_BEZIERTO この点が、Bzier スプラインのコントロール ポイントまたは終了点であることを指定します。

PT_BEZIERTO 型は常に 3 つのセットで発生します。 現在位置は、Bzier スプラインの開始点を定義します。 最初の 2 つの PT_BEZIERTO ポイントはコントロール ポイントであり、3 番目の PT_BEZIERTO ポイントは終点です。 終点が新しい現在位置になります。 連続する PT_BEZIERTO ポイントが 3 つ存在しない場合は、エラーが発生します。

ビット演算子 OR を使用して、PT_LINETO型またはPT_BEZIERTO型を次の定数と組み合わせて、対応するポイントが図の最後のポイントであり、図形が閉じていることを示すことができます。

  • PT_CLOSEFIGURE このポイントの PT_LINETO または PT_BEZIERTO の種類が完了した後、図形を自動的に閉じるかどうかを指定します。 線は、この点から最新の PT_MOVETO または MoveTo ポイントに描画されます。

    このフラグは、ビットごとの OR 演算子を使用して、線のPT_LINETOの種類、または Bzier スプラインの終了点のPT_BEZIERTO型と組み合わされます。 現在位置は、終了ラインの終点に設定されます。

nCount
lpTypes配列のバイト数と同じ、lpPoints配列内のポイントの合計数を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数を使用すると、 CDC::MoveToCDC::LineTo、および CDC::PolyBezierTo メンバー関数への連続する呼び出しの代わりに、不整合な数値を描画できます。 線とスプラインは現在のペンを使用して描画され、図形は塗りつぶされません。 CDC::BeginPath メンバー関数を呼び出して開始されたアクティブなパスがある場合は、パスPolyDraw追加されます。 lpPoints配列およびlpTypesに含まれるポイントは、各ポイントがCDC::MoveToCDC::LineTo、またはCDC::BezierTo演算の一部であるかどうかを示します。 また、数字を閉じることもできます。 この関数は、現在の位置を更新します。

CDC::BeginPath の例を参照してください。

CDC::Polygon

現在のペンを使用して、線で接続された 2 つ以上のポイント (頂点) で構成される多角形を描画します。

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

パラメーター

lpPoints
多角形の頂点を指定するポイントの配列を指します。 配列内の各ポイントは、 POINT 構造体または CPoint オブジェクトです。

nCount
配列内の頂点の数を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

必要に応じて、最後の頂点から最初の頂点までの線を描画することで、多角形が自動的に閉じられます。

現在の多角形塗りつぶしモードは、 GetPolyFillMode および SetPolyFillMode メンバー関数を使用して取得または設定できます。

void CDCView::DrawPolygon(CDC *pDC)
{
   // find the client area
   CRect rect;
   GetClientRect(rect);

   // draw with a thick blue pen
   CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
   CPen *pOldPen = pDC->SelectObject(&penBlue);

   // and a solid red brush
   CBrush brushRed(RGB(255, 0, 0));
   CBrush *pOldBrush = pDC->SelectObject(&brushRed);

   // Find the midpoints of the top, right, left, and bottom
   // of the client area. They will be the vertices of our polygon.
   CPoint pts[4];
   pts[0].x = rect.left + rect.Width() / 2;
   pts[0].y = rect.top;

   pts[1].x = rect.right;
   pts[1].y = rect.top + rect.Height() / 2;

   pts[2].x = pts[0].x;
   pts[2].y = rect.bottom;

   pts[3].x = rect.left;
   pts[3].y = pts[1].y;

   // Calling Polygon() on that array will draw three lines
   // between the points, as well as an additional line to
   // close the shape--from the last point to the first point
   // we specified.
   pDC->Polygon(pts, 4);

   // Put back the old objects.
   pDC->SelectObject(pOldPen);
   pDC->SelectObject(pOldBrush);
}

CDC::Polyline

lpPointsで指定された点を結ぶ一連の線分を描画します。

BOOL Polyline(
    LPPOINT lpPoints,
    int nCount);

パラメーター

lpPoints
接続する POINT 構造体または CPoint オブジェクトの配列を指します。

nCount`
配列内のポイント数を指定します。 この値は少なくとも 2 である必要があります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

線は、現在のペンを使用して、最初のポイントから後続のポイントまで描画されます。 LineToメンバー関数とは異なり、Polyline関数は現在の位置を使用または更新しません。

詳細については、Windows SDK の PolyLine に関する記事を参照してください。

CDC::PolylineTo

1 つまたは複数の直線を描画します。

BOOL PolylineTo(
    const POINT* lpPoints,
    int nCount);

パラメーター

lpPoints
線の頂点を含む POINT データ構造の配列を指します。

nCount
配列内のポイント数を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

現在のペンを使用して、現在の位置から、 lpPoints パラメーターで指定された最初のポイントまでの線が描画されます。 追加の線ごとに、関数は前の行の終点から、 lpPointsで指定された次の点に描画します。 PolylineTo は、現在の位置を最後の行の終点に移動します。 この関数によって描画された線分が閉じた図形を形成する場合、図形は塗りつぶされません。

CDC::PolyPolygon

現在のポリゴンフィル モードを使用して塗りつぶされる 2 つ以上のポリゴンを作成します。

BOOL PolyPolygon(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount);

パラメーター

lpPoints
多角形の頂点を定義する POINT 構造体または CPoint オブジェクトの配列を指します。

lpPolyCounts
整数の配列を指し、それぞれが、 lpPoints 配列内の 1 つのポリゴン内のポイント数を指定します。

nCount
lpPolyCounts 配列内のエントリの数です。 この数は、描画する多角形の数を指定します。 この値は少なくとも 2 である必要があります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

多角形は、不整合または重複している可能性があります。

PolyPolygon関数の呼び出しで指定された各ポリゴンは閉じる必要があります。 Polygon メンバー関数によって作成された多角形とは異なり、PolyPolygonによって作成された多角形は自動的に閉じられません。

この関数は、2 つ以上の多角形を作成します。 単一の多角形を作成するには、アプリケーションで Polygon メンバー関数を使用する必要があります。

現在の多角形塗りつぶしモードは、 GetPolyFillMode および SetPolyFillMode メンバー関数を使用して取得または設定できます。

CDC::PolyPolyline

複数の一連の接続された線分を描画します。

BOOL PolyPolyline(
    const POINT* lpPoints,
    const DWORD* lpPolyPoints,
    int nCount);

パラメーター

lpPoints
ポリラインの頂点を含む構造体の配列をポイントします。 ポリラインは連続して指定されます。

lpPolyPoints
対応する多角形の lpPoints 配列内のポイント数を指定する変数の配列を指します。 各エントリは 2 以上である必要があります。

nCount
lpPolyPoints配列内のカウントの合計数を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

線分は、現在のペンを使用して描画されます。 セグメントによって形成された数値は塗りつぶされません。 現在の位置は、この関数によって使用または更新されません。

CDC::PtVisible

指定したポイントがデバイス コンテキストのクリッピング領域内にあるかどうかを判断します。

virtual BOOL PtVisible(
    int x,
    int y) const;

BOOL PtVisible(POINT point) const;

パラメーター

x
ポイントの論理 x 座標を指定します。

y
ポイントの論理 y 座標を指定します。

point
論理座標をチェックインするポイントを指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

指定したポイントがクリッピング領域内にある場合は 0 以外。それ以外の場合は 0。

CDC::QueryAbort

印刷アプリケーションの SetAbortProc メンバー関数によってインストールされた中止関数を呼び出し、印刷を終了するかどうかを照会します。

BOOL QueryAbort() const;

戻り値

印刷を続行する必要がある場合、または中止プロシージャがない場合、戻り値は 0 以外です。 印刷ジョブを終了する必要がある場合は 0 です。 戻り値は abort 関数によって提供されます。

CDC::RealizePalette

現在の論理パレットのエントリをシステム パレットにマップします。

UINT RealizePalette();

戻り値

システム パレット内の異なるエントリにマップされた論理パレット内のエントリの数を示します。 これは、論理パレットが最後に実現されてからのシステム パレットの変更に対応するために、この関数が再マップしたエントリの数を表します。

解説

論理的なカラー パレットは、色を集中的に使用するアプリケーションとシステムの間のバッファーとして機能し、アプリケーションは、独自の表示色や他のウィンドウで表示される色を妨げることなく、必要な数の色を使用できます。

ウィンドウに入力フォーカスがあり、 RealizePaletteを呼び出すと、Windows では、要求されたすべての色 (画面で同時に使用可能な最大数まで) がウィンドウに表示されます。 また、Windows では、使用可能な色と一致させることで、ウィンドウのパレットに見つからない色も表示されます。

さらに、Windows は、関数を可能な限り近い色に呼び出す非アクティブなウィンドウによって要求された色と一致します。 これにより、非アクティブなウィンドウに表示される色の望ましくない変更が大幅に減少します。

CDC::Rectangle

現在のペンを使用して四角形を描画します。

BOOL Rectangle(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Rectangle(LPCRECT lpRect);

パラメーター

x1
四角形の左上隅の x 座標を (論理単位で) 指定します。

y1
四角形の左上隅の y 座標を (論理単位で) 指定します。

x2
四角形の右下隅の x 座標を (論理単位で) 指定します。

y2
四角形の右下隅の y 座標を (論理単位で) 指定します。

lpRect
四角形を論理単位で指定します。 このパラメーターには、 CRect オブジェクトまたは RECT 構造体へのポインターを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

四角形の内部は、現在のブラシを使用して塗りつぶされます。

四角形は右と下の座標まで拡張されますが、含まれません。 これは、四角形の高さが y2 - y1 され、四角形の幅が x2 - x1されることを意味します。 四角形の幅と高さの両方が 2 単位を超え、32,767 単位未満である必要があります。

void CDCView::DrawRectangle(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // draw a thick black rectangle filled with blue
   pDC->Rectangle(rect);

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::RectVisible

指定した四角形の一部が表示コンテキストのクリッピング領域内にあるかどうかを判断します。

virtual BOOL RectVisible(LPCRECT lpRect) const;

パラメーター

lpRect
指定した四角形の論理座標を含む RECT 構造体または CRect オブジェクトを指します。

戻り値

指定された四角形の一部がクリッピング領域内にある場合は 0 以外。それ以外の場合は 0。

CDC::ReleaseAttribDC

このメンバー関数を呼び出して、 m_hAttribDC を NULL に設定します。

virtual void ReleaseAttribDC();

解説

これにより、 Detach が発生することはありません。 出力デバイス コンテキストのみが CDC オブジェクトにアタッチされ、デタッチできるのはそのコンテキストだけです。

CDC::ReleaseOutputDC

このメンバー関数を呼び出して、 m_hDC メンバーを NULL に設定します。

virtual void ReleaseOutputDC();

解説

出力デバイス コンテキストが CDC オブジェクトにアタッチされている場合、このメンバー関数を呼び出すことはできません。 Detach メンバー関数を使用して、出力デバイス コンテキストをデタッチします。

CDC::ResetDC

このメンバー関数を呼び出して、 CDC オブジェクトによってラップされたデバイス コンテキストを更新します。

BOOL ResetDC(const DEVMODE* lpDevMode);

パラメーター

lpDevMode
Windows DEVMODE 構造体へのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

デバイス コンテキストは、Windows DEVMODE 構造体で指定された情報から更新されます。 このメンバー関数は、属性デバイス コンテキストのみをリセットします。

通常、アプリケーションは、ウィンドウがWM_DEVMODECHANGE メッセージを処理するときに、ResetDC メンバー関数を使用します。 このメンバー関数を使用して、ドキュメントの印刷中に用紙の向きや用紙ビンを変更することもできます。

このメンバー関数を使用して、ドライバー名、デバイス名、または出力ポートを変更することはできません。 ユーザーがポート接続またはデバイス名を変更する場合は、元のデバイス コンテキストを削除し、新しい情報を含む新しいデバイス コンテキストを作成する必要があります。

このメンバー関数を呼び出す前に、デバイス コンテキストで選択されたすべてのオブジェクト (ストック オブジェクト以外) が選択されていることを確認する必要があります。

CDC::RestoreDC

デバイス コンテキストを、 nSavedDCによって識別された以前の状態に復元します。

virtual BOOL RestoreDC(int nSavedDC);

パラメーター

nSavedDC
復元するデバイス コンテキストを指定します。 前の SaveDC 関数呼び出しによって返される値を指定できます。 nSavedDCが -1 の場合、最後に保存されたデバイス コンテキストが復元されます。

戻り値

指定したコンテキストが復元された場合は 0 以外。それ以外の場合は 0。

解説

RestoreDC は、 SaveDC メンバー関数の以前の呼び出しによって作成されたスタックから状態情報をポップすることで、デバイス コンテキストを復元します。

スタックには、複数のデバイス コンテキストの状態情報を含めることができます。 nSavedDCで指定されたコンテキストがスタックの一番上にない場合、RestoreDCは、nSavedDCで指定されたデバイス コンテキストとスタックの最上位の間のすべての状態情報を削除します。 削除された情報は失われます。

CDC::RoundRect

現在のペンを使用して、角が丸い四角形を描画します。

BOOL RoundRect(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

BOOL RoundRect(
    LPCRECT lpRect,
    POINT point);

パラメーター

x1
四角形の左上隅の x 座標を (論理単位で) 指定します。

y1
四角形の左上隅の y 座標を (論理単位で) 指定します。

x2
四角形の右下隅の x 座標を (論理単位で) 指定します。

y2
四角形の右下隅の y 座標を (論理単位で) 指定します。

x3
丸い角を描画するために使用する楕円の幅を (論理単位で) 指定します。

y3
丸い角を描画するために使用する楕円の高さを (論理単位で) 指定します。

lpRect
外接する四角形を論理単位で指定します。 このパラメーターには、 CRect オブジェクトまたは RECT 構造体へのポインターを渡すことができます。

point
pointの x 座標は、丸い角を描画する楕円の幅を (論理単位で) 指定します。 pointの y 座標は、丸い角を描画する楕円の高さを (論理単位で) 指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

四角形の内部は、現在のブラシを使用して塗りつぶされます。

この関数が描画する図は、上下の座標まで拡張されますが、含まれません。 これは、図形の高さが y2 - y1 され、図形の幅が x2 - x1されることを意味します。 外接する四角形の高さと幅の両方が 2 単位を超え、32,767 単位未満である必要があります。

void CDCView::DrawRoundRect(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // Draw a thick black rectangle filled with blue
   // corners rounded at a 17-unit radius. Note that
   // a radius of three or less is not noticeable because
   // the pen is three units wide.
   pDC->RoundRect(rect, CPoint(17, 17));

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::SaveDC

状態情報 (クリッピング領域、選択したオブジェクト、マッピング モードなど) を Windows によって維持されるコンテキスト スタックにコピーして、デバイス コンテキストの現在の状態を保存します。

virtual int SaveDC();

戻り値

保存されたデバイス コンテキストを識別する整数。 エラーが発生した場合は 0 です。 この戻り値は、 RestoreDCを呼び出すことによってデバイス コンテキストを復元するために使用できます。

解説

保存されたデバイス コンテキストは、後で RestoreDC を使用して復元できます。

SaveDC は、任意の回数のデバイス コンテキスト状態を保存するために、任意の回数使用できます。

CDC::ScaleViewportExt

現在の値を基準にしてビューポートのエクステントを変更します。

virtual CSize ScaleViewportExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

パラメーター

xNum
現在の x エクステントを乗算する量を指定します。

xDenom
現在の x エクステントに xNum パラメーターの値を乗算した結果を除算する量を指定します。

yNum
現在の y エクステントを乗算する量を指定します。

yDenom
現在の y エクステントに yNum パラメーターの値を乗算した結果を除算する量を指定します。

戻り値

CSize オブジェクトとしての前のビューポート エクステント (デバイス単位)。

解説

数式は次のように記述されます。

xNewVE = ( xOldVE * xNum ) / xDenom

yNewVE = ( yOldVE * yNum ) / yDenom

新しいビューポートエクステントは、現在のエクステントに指定された分子を乗算し、指定された分母で除算することによって計算されます。

CDC::ScaleWindowExt

ウィンドウのエクステントを現在の値に対して相対的に変更します。

virtual CSize ScaleWindowExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

パラメーター

xNum
現在の x エクステントを乗算する量を指定します。

xDenom
現在の x エクステントに xNum パラメーターの値を乗算した結果を除算する量を指定します。

yNum
現在の y エクステントを乗算する量を指定します。

yDenom
現在の y エクステントに yNum パラメーターの値を乗算した結果を除算する量を指定します。

戻り値

前のウィンドウは、 CSize オブジェクトとして (論理単位で) エクステントします。

解説

数式は次のように記述されます。

xNewWE = ( xOldWE * xNum ) / xDenom

yNewWE = ( yOldWE * yNum ) / yDenom

新しいウィンドウエクステントは、現在のエクステントに指定された分子を乗算し、指定された分母で除算することによって計算されます。

CDC::ScrollDC

ビットの四角形を水平方向および垂直方向にスクロールします。

BOOL ScrollDC(
    int dx,
    int dy,
    LPCRECT lpRectScroll,
    LPCRECT lpRectClip,
    CRgn* pRgnUpdate,
    LPRECT lpRectUpdate);

パラメーター

dx
水平スクロール単位の数を指定します。

dy
垂直スクロール単位の数を指定します。

lpRectScroll
スクロールする四角形の座標を含む RECT 構造体または CRect オブジェクトを指します。

lpRectClip
クリッピング四角形の座標を含む RECT 構造体または CRect オブジェクトを指します。 この四角形が、 lpRectScrollが指す元の四角形よりも小さい場合、スクロールは小さい四角形でのみ行われます。

pRgnUpdate
スクロール プロセスによって発見された領域を識別します。 ScrollDC関数はこの領域を定義します。必ずしも四角形であるとは限りません。

lpRectUpdate
スクロール更新領域を囲む四角形の座標を受け取る RECT 構造体または CRect オブジェクトを指します。 これは、再描画を必要とする最大の長方形領域です。 指定されたデバイス コンテキストのマッピング モードに関係なく、関数が戻るときに構造体またはオブジェクト内の値はクライアント座標内にあります。

戻り値

スクロールが実行される場合は 0 以外。それ以外の場合は 0。

解説

lpRectUpdateNULLされている場合、Windows は更新四角形を計算しません。 pRgnUpdatelpRectUpdateの両方がNULLされている場合、Windows は更新リージョンを計算しません。 pRgnUpdateNULLされていない場合、Windows では、スクロール プロセス (ScrollDC メンバー関数によって定義) によって発見された領域への有効なポインターが含まれていると見なされます。 lpRectUpdateで返される更新リージョンは、必要に応じてCWnd::InvalidateRgnに渡すことができます。

アプリケーションは、ウィンドウのクライアント領域全体をスクロールする必要がある場合に、クラス CWndScrollWindow メンバー関数を使用する必要があります。 それ以外の場合は、 ScrollDCを使用する必要があります。

CDC::SelectClipPath

デバイス コンテキストのクリッピング領域として現在のパスを選択し、指定したモードを使用して、新しい領域と既存のクリッピング領域を組み合わせています。

BOOL SelectClipPath(int nMode);

パラメーター

nMode
パスを使用する方法を指定します。 使用可能な値は、次のとおりです。

  • RGN_AND 新しいクリッピング領域には、現在のクリッピング領域と現在のパスの交差部分 (重複領域) が含まれます。

  • RGN_COPY 新しいクリッピング領域は現在のパスです。

  • RGN_DIFF 新しいクリッピング領域には、現在のクリッピング領域の領域が含まれており、現在のパスの領域は除外されます。

  • RGN_OR 新しいクリッピング領域には、現在のクリッピング領域と現在のパスの和集合 (結合領域) が含まれます。

  • RGN_XOR 新しいクリッピング領域には、現在のクリッピング領域と現在のパスの和集合が含まれますが、重複する領域はありません。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

識別されるデバイス コンテキストには、閉じたパスが含まれている必要があります。

CDC::SelectClipRgn

デバイス コンテキストの現在のクリッピング領域として、指定されたリージョンを選択します。

int SelectClipRgn(CRgn* pRgn);

int SelectClipRgn(
    CRgn* pRgn,
    int nMode);

パラメーター

pRgn
選択するリージョンを識別します。

  • この関数の最初のバージョンでは、この値が NULL場合、クライアント領域全体が選択され、出力はウィンドウにクリップされます。

  • この関数の 2 番目のバージョンでは、RGN_COPY モードが指定されている場合にのみ、このハンドルをNULLできます。

nMode
実行する操作を指定します。 次のいずれかの値を指定する必要があります。

  • RGN_AND 新しいクリッピング領域は、現在のクリッピング領域の重複する領域と、 pRgnによって識別される領域を結合します。

  • RGN_COPY 新しいクリッピング領域は、 pRgnによって識別されるリージョンのコピーです。 これは、 SelectClipRgnの最初のバージョンと同じ機能です。 pRgnで識別される領域がNULL場合、新しいクリッピング領域は既定のクリッピング領域 (null 領域) になります。

  • RGN_DIFF 新しいクリッピング領域は、現在のクリッピング領域の領域と、 pRgnによって識別される領域から除外された領域を結合します。

  • RGN_OR 新しいクリッピング領域は、現在のクリッピング領域と、 pRgnによって識別される領域を結合します。

  • RGN_XOR 新しいクリッピング領域は、現在のクリッピング領域と、 pRgn によって識別される領域を結合しますが、重複する領域は除外します。

戻り値

リージョンの種類。 次のいずれかの値を指定できます。

  • COMPLEXREGION 新しいクリッピング領域には、重複する境界線があります。

  • ERROR デバイス コンテキストまたはリージョンが無効です。

  • NULLREGION 新しいクリッピング領域が空です。

  • SIMPLEREGION 新しいクリッピング領域には、重複する境界線はありません。

解説

選択したリージョンのコピーのみが使用されます。 リージョン自体は、任意の数の他のデバイス コンテキストに対して選択することも、削除することもできます。

この関数は、指定された領域の座標がデバイス単位で指定されていることを前提としています。 一部のプリンター デバイスでは、テキストメトリックを表現するために必要な精度を維持するために、グラフィックス出力よりも高い解像度でテキスト出力をサポートしています。 これらのデバイスは、より高い解像度(つまりテキスト単位)でデバイスユニットを報告します。 その後、これらのデバイスはグラフィックスの座標をスケーリングし、報告された複数のデバイス ユニットが 1 つのグラフィック ユニットにのみマップされるようにします。 SelectClipRgn関数は、常にテキスト単位を使用して呼び出す必要があります。

GDI でグラフィックス オブジェクトのスケーリングを実行する必要があるアプリケーションでは、 GETSCALINGFACTOR プリンター エスケープを使用して、拡大縮小率を決定できます。 この倍率はクリッピングに影響します。 領域を使用してグラフィックスをクリップする場合、GDI は座標を倍率で除算します。 領域を使用してテキストをクリップする場合、GDI はスケーリング調整を行いません。 倍率が 1 の場合、座標は 2 で除算されます。倍率が 2 の場合、座標は 4 で除算されます。などなど。

CDC::SelectObject

デバイス コンテキスト内のオブジェクトを選択します。

CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);

パラメーター

pPen
選択する CPen オブジェクトへのポインター。

pBrush
選択する CBrush オブジェクトへのポインター。

pFont
選択する CFont オブジェクトへのポインター。

pBitmap
選択する CBitmap オブジェクトへのポインター。

pRgn
選択する CRgn オブジェクトへのポインター。

pObject
選択する CGdiObject オブジェクトへのポインター。

戻り値

置き換えられるオブジェクトへのポインター。 これは、使用される関数のバージョンに応じて、CPenなど、CGdiObjectから派生したクラスの 1 つのオブジェクトへのポインターです。 エラーが発生した場合、戻り値は NULL 。 この関数は、一時オブジェクトへのポインターを返す場合があります。 この一時オブジェクトは、1 つの Windows メッセージの処理中にのみ有効です。 詳細については、CGdiObject::FromHandleを参照してください。

region パラメーターを受け取るメンバー関数のバージョンは、 SelectClipRgn メンバー関数と同じタスクを実行します。 戻り値には、次のいずれかを指定できます。

  • COMPLEXREGION 新しいクリッピング領域には、重複する境界線があります。

  • ERROR デバイス コンテキストまたはリージョンが無効です。

  • NULLREGION 新しいクリッピング領域が空です。

  • SIMPLEREGION 新しいクリッピング領域には、重複する境界線はありません。

解説

クラス CDC には、ペン、ブラシ、フォント、ビットマップ、領域など、特定の種類の GDI オブジェクトに特化した 5 つのバージョンが用意されています。 新しく選択したオブジェクトは、同じ型の前のオブジェクトを置き換えます。 たとえば、SelectObjectの一般的なバージョンのpObjectCPen オブジェクトを指している場合、関数は現在のペンを pObject で指定されたペンに置き換えます。

アプリケーションは、一度に 1 つのメモリ デバイス コンテキストにのみ、および 1 つのメモリ デバイス コンテキストにのみビットマップを選択できます。 ビットマップの形式はモノクロであるか、デバイス コンテキストと互換性がある必要があります。そうでない場合は、 SelectObject はエラーを返します。

Windows 3.1 以降の場合、 SelectObject 関数はメタファイルで使用されているかどうかにかかわらず、同じ値を返します。 以前のバージョンの Windows では、 SelectObject は成功した場合は 0 以外の値を返し、メタファイルで使用された場合は失敗した場合は 0 を返しました。

CDC::SelectPalette

デバイス コンテキストの選択したパレット オブジェクトとして pPalette で指定された論理パレットを選択します。

CPalette* SelectPalette(
    CPalette* pPalette,
    BOOL bForceBackground);

パラメーター

pPalette
選択する論理パレットを識別します。 このパレットは、 CPalette メンバー関数 CreatePaletteで既に作成されている必要があります。

bForceBackground
論理パレットを強制的に背景パレットにするかどうかを指定します。 bForceBackgroundが 0 以外の場合、ウィンドウに入力フォーカスがあるかどうかに関係なく、選択したパレットは常に背景パレットになります。 bForceBackgroundが 0 で、デバイス コンテキストがウィンドウにアタッチされている場合、論理パレットは、ウィンドウに入力フォーカスがあるときにフォアグラウンド パレットになります。

戻り値

pPaletteで指定されたパレットに置き換えられた論理パレットを識別するCPalette オブジェクトへのポインター。 エラーが発生した場合は NULL

解説

新しいパレットは、デバイス コンテキストに表示される色を制御するために GDI によって使用されるパレット オブジェクトになり、前のパレットを置き換えます。

アプリケーションは、複数のデバイス コンテキストに論理パレットを選択できます。 ただし、論理パレットの変更は、選択されているすべてのデバイス コンテキストに影響します。 アプリケーションが複数のデバイス コンテキストにパレットを選択する場合、デバイス コンテキストはすべて同じ物理デバイスに属している必要があります。

CDC::SelectStockObject

定義済みのストック ペン、ブラシ、またはフォントのいずれかに対応する CGdiObject オブジェクトを選択します。

virtual CGdiObject* SelectStockObject(int nIndex);

パラメーター

nIndex
必要なストック オブジェクトの種類を指定します。 次のいずれかの値を指定できます。

  • BLACK_BRUSH 黒いブラシ。

  • DKGRAY_BRUSH 濃い灰色のブラシ。

  • GRAY_BRUSH 灰色のブラシ。

  • HOLLOW_BRUSH 中空ブラシ。

  • LTGRAY_BRUSH 薄い灰色のブラシ。

  • NULL_BRUSH Null ブラシ。

  • WHITE_BRUSH 白いブラシ。

  • BLACK_PEN 黒いペン。

  • NULL_PEN Null ペン。

  • WHITE_PEN 白いペン。

  • ANSI_FIXED_FONT ANSI 固定システム フォント。

  • ANSI_VAR_FONT ANSI 変数のシステム フォント。

  • DEVICE_DEFAULT_FONT デバイスに依存するフォント。

  • OEM_FIXED_FONT OEM に依存する固定フォント。

  • SYSTEM_FONT システム フォント。 既定では、Windows はシステム フォントを使用してメニュー、ダイアログ ボックス コントロール、およびその他のテキストを描画します。 ただし、ダイアログやウィンドウで使用されるフォントを取得するには、 SYSTEM_FONT に依存しないことをお勧めします。 代わりに、 SystemParametersInfo 関数と SPI_GETNONCLIENTMETRICS パラメーターを使用して、現在のフォントを取得します。 SystemParametersInfo では、現在のテーマが考慮され、キャプション、メニュー、メッセージ ダイアログのフォント情報が提供されます。

  • SYSTEM_FIXED_FONT バージョン 3.0 より前の Windows で使用される固定幅のシステム フォント。 このオブジェクトは、以前のバージョンの Windows との互換性のために使用できます。

  • DEFAULT_PALETTE 既定のカラー パレット。 このパレットは、システム パレットの 20 個の静的な色で構成されます。

戻り値

関数が成功した場合に置き換えられた CGdiObject オブジェクトへのポインター。 指す実際のオブジェクトは、 CPenCBrush、または CFont オブジェクトです。 呼び出しが失敗した場合、戻り値は NULL です。

CDC::SetAbortProc

印刷ジョブの中止手順をインストールします。

int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));

パラメーター

lpfn
中止プロシージャとしてインストールする abort 関数へのポインター。 コールバック関数の詳細については、「CDC::SetAbortProcCallback 関数」を参照してください。

戻り値

SetAbortProc関数の結果を指定します。 次の値の中には、他の値よりも可能性が高い値もありますが、すべて可能です。

  • SP_ERROR 一般的なエラー。

  • SP_OUTOFDISK 現在、スプーリングに使用できるディスク領域が不足しているため、空き領域はなくなります。

  • SP_OUTOFMEMORY スプーリングに十分なメモリがありません。

  • SP_USERABORT ユーザーは、印刷マネージャーを使用してジョブを終了しました。

解説

アプリケーションがスプール中に印刷ジョブの取り消しを許可する場合は、印刷ジョブが StartDoc メンバー関数で開始される前に、中止関数を設定する必要があります。 印刷マネージャーは、スプール中に中止関数を呼び出して、アプリケーションが印刷ジョブを取り消したり、ディスク領域不足の状態を処理したりできるようにします。 abort 関数が設定されていない場合、スプール用の十分なディスク領域がない場合、印刷ジョブは失敗します。

Microsoft Visual C++ の機能により、 SetAbortProcに渡されるコールバック関数の作成が簡略化されます。 EnumObjects メンバー関数に渡されるアドレスは、__declspec(dllexport)および__stdcall呼び出し規則を使用してエクスポートされた関数へのポインターです。

また、アプリケーションのモジュール定義ファイルの EXPORTS ステートメントに関数名をエクスポートする必要はありません。 代わりに、次のように EXPORT 関数修飾子を使用できます。

BOOL CALLBACK EXPORT AFunction( HDC, int );

エイリアスを付けずに名前でエクスポートするための適切なエクスポート レコードをコンパイラが出力する場合。 これはほとんどのニーズに適しています。 序数による関数のエクスポートやエクスポートのエイリアス化など、一部の特殊なケースでは、モジュール定義ファイルで EXPORTS ステートメントを使用する必要があります。

コールバック登録インターフェイスがタイプ セーフになりました (特定のコールバックに適した種類の関数を指す関数ポインターを渡す必要があります)。

コールバックの境界を越えて例外をスローできないため、Windows に戻る前に、すべてのコールバック関数で Microsoft Foundation 例外をトラップする必要があります。 例外の詳細については、 Exceptionsに関する記事を参照してください。

CDC::SetArcDirection

円弧および四角形関数に使用する描画方向を設定します。

int SetArcDirection(int nArcDirection);

パラメーター

nArcDirection
新しい円弧の方向を指定します。 このパラメーターには、次のいずれかの値を指定できます。

  • AD_COUNTERCLOCKWISE 反時計回りに描画された図。

  • AD_CLOCKWISE 時計回りに描画された図。

戻り値

成功した場合は、古い円弧の方向を指定します。それ以外の場合は 0。

解説

既定の方向は反時計回りです。 SetArcDirection関数は、次の関数を描画する方向を指定します。

Arc Pie
ArcTo Rectangle
Chord RoundRect
Ellipse

CDC::SetAttribDC

この関数を呼び出して、属性デバイス コンテキスト ( m_hAttribDC) を設定します。

virtual void SetAttribDC(HDC hDC);

パラメーター

hDC
Windows デバイス コンテキスト。

解説

このメンバー関数は、デバイス コンテキストを CDC オブジェクトにアタッチしません。 出力デバイス コンテキストのみが CDC オブジェクトにアタッチされます。

CDC::SetBkColor

現在の背景色を指定した色に設定します。

virtual COLORREF SetBkColor(COLORREF crColor);

パラメーター

crColor
新しい背景色を指定します。

戻り値

RGB カラー値としての前の背景色。 エラーが発生した場合、戻り値は0x80000000。

解説

背景モードが OPAQUE場合、システムは背景色を使用して、スタイル設定された線のギャップ、ブラシのハッチングされた線間のギャップ、および文字セルの背景を埋めます。 また、カラーとモノクロのデバイス コンテキストの間でビットマップを変換するときにも、背景色が使用されます。

デバイスで指定した色を表示できない場合は、背景色が最も近い物理色に設定されます。

CDC::SetBkMode

背景モードを設定します。

int SetBkMode(int nBkMode);

パラメーター

nBkMode
設定するモードを指定します。 このパラメーターには、次のいずれかの値を指定できます。

  • OPAQUE 背景は、テキスト、ハッチングされたブラシ、またはペンが描画される前に、現在の背景色で塗りつぶされます。 これは既定のバックグラウンド モードです。

  • TRANSPARENT 背景は描画前に変更されません。

戻り値

前のバックグラウンド モード。

解説

背景モードでは、テキスト、ハッチング ブラシ、または実線ではないペン スタイルを描画する前に、図面サーフェス上の既存の背景色を削除するかどうかを定義します。

CWnd::OnCtlColor の例を参照してください。

CDC::SetBoundsRect

指定したデバイス コンテキストの境界四角形情報の蓄積を制御します。

UINT SetBoundsRect(
    LPCRECT lpRectBounds,
    UINT flags);

パラメーター

lpRectBounds
外接する四角形の設定に使用する RECT 構造体または CRect オブジェクトを指します。 四角形の寸法は論理座標で指定されます。 このパラメーターは、NULL に設定できます。

flags
新しい四角形を累積四角形と組み合わせる方法を指定します。 このパラメーターは、次の値と組み合わせて指定できます。

  • DCB_ACCUMULATElpRectBoundsで指定した四角形を外接する四角形に追加します (四角形和集合演算を使用)。

  • DCB_DISABLE 境界の累積をオフにします。

  • DCB_ENABLE 境界の累積を有効にします。 (境界累積の既定の設定は無効です)。

戻り値

関数が成功した場合の外接する四角形の現在の状態。 flagsと同様に、戻り値はDCB_値の組み合わせにすることができます。

  • DCB_ACCUMULATE 外接する四角形は空ではありません。 この値は常に設定されます。

  • DCB_DISABLE 境界の累積はオフです。

  • DCB_ENABLE 境界の累積がオンです。

解説

Windows では、すべての描画操作に対して外接する四角形を維持できます。 この四角形は、アプリケーションによって照会およびリセットできます。 描画境界は、ビットマップ キャッシュを無効にする場合に便利です。

CDC::SetBrushOrg

アプリケーションがデバイス コンテキストに選択する次のブラシに GDI が割り当てる原点を指定します。

CPoint SetBrushOrg(
    int x,
    int y);

CPoint SetBrushOrg(POINT point);

パラメーター

x
新しい原点の x 座標 (デバイス単位) を指定します。 この値は 0 ~ 7 の範囲である必要があります。

y
新しい原点の y 座標 (デバイス単位) を指定します。 この値は 0 ~ 7 の範囲である必要があります。

point
新しい原点の x 座標と y 座標を指定します。 各値の範囲は 0 から 7 である必要があります。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

デバイス単位でのブラシの前の原点。

解説

ブラシの原点の既定の座標は (0, 0) です。 ブラシの原点を変更するには、CBrush オブジェクトのUnrealizeObject関数を呼び出し、SetBrushOrgを呼び出してから、SelectObject メンバー関数を呼び出して、デバイス コンテキストにブラシを選択します。

ストック CBrush オブジェクトでSetBrushOrgを使用しないでください。

CDC::SetColorAdjustment

指定した値を使用して、デバイス コンテキストの色調整値を設定します。

BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);

パラメーター

lpColorAdjust
色調整値を含む COLORADJUSTMENT データ構造を指します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

カラー調整値は、HALFTONE モードが設定されている場合に、CDC::StretchBlt メンバー関数の呼び出しのソース ビットマップの入力色を調整するために使用されます。

CDC::SetDCBrushColor

現在のデバイス コンテキスト (DC) ブラシの色を指定した色の値に設定します。

COLORREF SetDCBrushColor(COLORREF crColor);

パラメーター

crColor
新しいブラシの色を指定します。

戻り値

関数が成功した場合、戻り値は前の DC ブラシの色を COLORREF 値として指定します。

関数が失敗した場合、戻り値は CLR_INVALID

解説

このメソッドは、Windows SDK で説明されているように、関数 SetDCBrushColorの機能をエミュレートします。

CDC::SetDCPenColor

現在のデバイス コンテキスト (DC) ペンの色を指定した色の値に設定します。

COLORREF SetDCPenColor(COLORREF crColor);

パラメーター

crColor
新しいペンの色を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 関数 SetDCPenColorを利用します。

CDC::SetGraphicsMode

指定したデバイス コンテキストのグラフィックス モードを設定します。

int SetGraphicsMode(int iMode);

パラメーター

iMode
グラフィックス モードを指定します。 このパラメーターで使用できる値の一覧については、 SetGraphicsModeを参照してください。

戻り値

成功した場合に古いグラフィックス モードを返します。

失敗した場合は 0 を返します。 拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

このメソッドは、Windows GDI 関数の SetGraphicsModeをラップします。

CDC::SetLayout

このメンバー関数を呼び出して、デバイス コンテキストのテキストとグラフィックスのレイアウトを、アラビア語やヘブライ語などのカルチャの標準レイアウトを右から左に変更します。

DWORD SetLayout(DWORD dwLayout);

パラメーター

dwLayout
デバイス コンテキスト レイアウトとビットマップ コントロール フラグ。 次の値を組み合わせて使用できます。

意味
LAYOUT_BITMAPORIENTATIONPRESERVED CDC::BitBltCDC::StretchBltの呼び出しに対するリフレクションを無効にします。
LAYOUT_RTL 既定の水平レイアウトを右から左に設定します。
LAYOUT_LTR 既定のレイアウトを左から右に設定します。

戻り値

成功した場合は、デバイス コンテキストの前のレイアウト。

失敗した場合は、 GDI_ERROR。 拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

通常、ウィンドウの SetLayout は呼び出しません。 代わりに、WS_EX_RTLREADINGなどの目的のウィンドウ スタイルを設定してウィンドウ内の右から左へのレイアウトを制御します。 プリンターやメタファイルなどのデバイス コンテキストでは、このレイアウトは継承されません。 右から左のレイアウトのデバイス コンテキストを設定する唯一の方法は、 SetLayoutを呼び出すことです。

SetLayout(LAYOUT_RTL)を呼び出すと、マッピング モードSetLayout自動的にMM_ISOTROPICに変更されます。 その結果、後続のGetMapModeの呼び出しでは、MM_TEXTではなくMM_ISOTROPICが返されます。

ビットマップの数が多い場合など、左から右のレイアウトを維持したい場合があります。 このような場合は、 BitBlt または StretchBltを呼び出してイメージをレンダリングし、 dwLayout のビットマップ コントロール フラグを LAYOUT_BITMAPORIENTATIONPRESERVEDに設定します。

LAYOUT_RTL フラグを使用してレイアウトを変更すると、通常は右または左を指定するフラグが逆になります。 混乱を避けるために、標準フラグの代替名を定義することができます。 推奨される代替フラグ名の一覧については、Windows SDK の SetLayout を参照してください。

CDC::SetMapMode

マッピング モードを設定します。

virtual int SetMapMode(int nMapMode);

パラメーター

nMapMode
新しいマッピング モードを指定します。 次のいずれかの値を指定できます。

  • MM_ANISOTROPIC 論理単位は、任意のスケール軸を持つ任意の単位に変換されます。 マッピング モードを MM_ANISOTROPIC に設定しても、現在のウィンドウまたはビューポートの設定は変更されません。 単位、向き、スケーリングを変更するには、 SetWindowExt および SetViewportExt メンバー関数を呼び出します。

  • MM_HIENGLISH 各論理ユニットは 0.001 インチに変換されます。 正の x は右です。正の y が上に表示されます。

  • MM_HIMETRIC 各論理ユニットは 0.01 ミリメートルに変換されます。 正の x は右です。正の y が上に表示されます。

  • MM_ISOTROPIC 論理単位は、等しく拡大縮小された軸を持つ任意の単位に変換されます。つまり、x 軸に沿った 1 単位は、y 軸に沿って 1 単位に等しくなります。 SetWindowExtおよびSetViewportExtメンバー関数を使用して、目的の単位と軸の向きを指定します。 GDI では、x 単位と y 単位のサイズが同じになるように、必要に応じて調整を行います。

  • MM_LOENGLISH 各論理ユニットは 0.01 インチに変換されます。 正の x は右です。正の y が上に表示されます。

  • MM_LOMETRIC 各論理ユニットは 0.1 ミリメートルに変換されます。 正の x は右です。正の y が上に表示されます。

  • MM_TEXT 各論理ユニットは、1 つのデバイス ピクセルに変換されます。 正の x は右です。正の y がダウンしています。

  • MM_TWIPS 各論理ユニットは、ポイントの 1/20 に変換されます。 (ポイントが 1/72 インチであるため、twip は 1/1440 インチです)。正の x は右です。正の y が上に表示されます。

戻り値

前のマッピング モード。

解説

マッピング モードでは、論理単位をデバイス単位に変換するために使用される測定単位を定義します。また、デバイスの x 軸と y 軸の向きも定義します。 GDI では、マッピング モードを使用して、論理座標を適切なデバイス座標に変換します。 MM_TEXT モードを使用すると、アプリケーションはデバイス ピクセルで動作できます。1 ユニットは 1 ピクセルに相当します。 ピクセルの物理サイズは、デバイスによって異なります。

MM_HIENGLISHMM_HIMETRICMM_LOENGLISHMM_LOMETRIC、およびMM_TWIPSモードは、物理的に意味のある単位 (インチやミリメートルなど) で描画する必要があるアプリケーションに役立ちます。 MM_ISOTROPIC モードでは、1:1 の縦横比が保証されます。これは、画像の正確な形状を維持することが重要な場合に便利です。 MM_ANISOTROPICモードでは、x 座標と y 座標を個別に調整できます。

Note

SetLayoutを呼び出して DC (デバイス コンテキスト) を右から左のレイアウトに変更すると、マッピング モードSetLayout自動的にMM_ISOTROPICに変更されます。

CView::OnPrepareDC の例を参照してください。

CDC::SetMapperFlags

論理フォントを物理フォントに変換するときに、フォント マッパーによって使用されるメソッドを変更します。

DWORD SetMapperFlags(DWORD dwFlag);

パラメーター

dwFlag
フォント マッパーがフォントの縦横比の高さと幅をデバイスと一致させるかどうかを指定します。 この値が ASPECT_FILTERINGされると、マッパーは、x-aspect と y-aspect が指定されたデバイスのものと完全に一致するフォントのみを選択します。

戻り値

font-mapper フラグの前の値。

解説

アプリケーションは、 SetMapperFlags を使用して、フォント マッパーが、指定したデバイスの縦横比と完全に一致する物理フォントのみを選択することを試みることができます。

ラスター フォントのみを使用するアプリケーションでは、 SetMapperFlags 関数を使用して、フォント マッパーによって選択されたフォントが、指定されたデバイスで魅力的で読み取り可能であることを確認できます。 スケーラブル (TrueType) フォントを使用するアプリケーションでは、通常、 SetMapperFlagsは使用されません。

論理フォントの指定に一致する縦横比を持つ物理フォントがない場合、GDI は新しい縦横比を選択し、この新しい縦横比に一致するフォントを選択します。

CDC::SetMiterLimit

デバイス コンテキストのマイター結合の長さの制限を設定します。

BOOL SetMiterLimit(float fMiterLimit);

パラメーター

fMiterLimit
デバイス コンテキストの新しいマイター制限を指定します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

マイターの長さは、結合の内側にある線壁の交差から結合の外側のラインウォールの交差までの距離として定義されます。 マイターの制限は、マイター長と線幅の最大許容比率です。 既定のマイター制限は 10.0 です。

CDC::SetOutputDC

このメンバー関数を呼び出して、出力デバイス コンテキスト ( m_hDC) を設定します。

virtual void SetOutputDC(HDC hDC);

パラメーター

hDC
Windows デバイス コンテキスト。

解説

このメンバー関数は、デバイス コンテキストが CDC オブジェクトにアタッチされていない場合にのみ呼び出すことができます。 このメンバー関数は m_hDC 設定しますが、 CDC オブジェクトにデバイス コンテキストをアタッチしません。

CDC::SetPixel

指定したポイントのピクセルを、 crColorで指定された色の最も近い近似値に設定します。

COLORREF SetPixel(
    int x,
    int y,
    COLORREF crColor);

COLORREF SetPixel(
    POINT point,
    COLORREF crColor);

パラメーター

x
設定する点の論理 x 座標を指定します。

y
設定する点の論理 y 座標を指定します。

crColor
ポイントの描画に使用する色を指定する COLORREF RGB 値。 この値の説明については、Windows SDK の COLORREF を参照してください。

point
設定するポイントの論理 x 座標と y 座標を指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

ポイントが描画される色の RGB 値。 この値は、その色の近似値が使用される場合、 crColor で指定された値とは異なる場合があります。 関数が失敗した場合 (ポイントがクリッピング領域の外側にある場合)、戻り値は -1 です。

解説

ポイントはクリッピング領域に存在する必要があります。 ポイントがクリッピング領域にない場合、関数は何も行いません。

一部のデバイスでは、SetPixel 関数がサポートされていません。 デバイスがSetPixelをサポートしているかどうかを判断するには、RASTERCAPS インデックスを使用して GetDeviceCaps メンバー関数を呼び出し、RC_BITBLT フラグの戻り値を確認します。

CDC::SetPixelV

指定した座標のピクセルを、指定した色の最も近い近似値に設定します。

BOOL SetPixelV(
    int x,
    int y,
    COLORREF crColor);

BOOL SetPixelV(
    POINT point,
    COLORREF crColor);

パラメーター

x
設定するポイントの x 座標を論理単位で指定します。

y
設定する点の y 座標を論理単位で指定します。

crColor
ポイントの描画に使用する色を指定します。

point
設定するポイントの論理 x 座標と y 座標を指定します。 このパラメーターには、 POINT データ構造または CPoint オブジェクトを渡すことができます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

ポイントは、クリッピング領域とデバイス サーフェスの可視部分の両方にある必要があります。 すべてのデバイスがメンバー関数をサポートしているわけではありません。 詳細については、CDC::GetDeviceCaps メンバー関数のRC_BITBLT機能を参照してください。 SetPixelV は、描画されたポイントの色の値を返す必要がないため、 SetPixel よりも高速です。

CDC::SetPolyFillMode

多角形塗りつぶしモードを設定します。

int SetPolyFillMode(int nPolyFillMode);

パラメーター

nPolyFillMode
新しい塗りつぶしモードを指定します。 この値は、 ALTERNATE または WINDINGにすることができます。 Windows で設定されている既定のモードは ALTERNATE

戻り値

成功した場合は、前のフィル モード。それ以外の場合は 0。

解説

ポリゴン充填モードが ALTERNATEされると、システムは各スキャンライン上の奇数と偶数のポリゴン辺の間の領域を塗りつぶします。 つまり、システムは、1 番目と 2 番目の側、3 番目と 4 番目の側の間の領域を塗りつぶします。 これが既定のモードです。

多角形充填モードが WINDINGされると、システムは図が描画された方向を使用して、領域を塗りつぶすかどうかを決定します。 多角形の各線分は、時計回りまたは反時計回りの方向に描画されます。 囲まれた領域から図の外側に描画された虚数線が時計回りの線分を通過するたびに、カウントがインクリメントされます。 直線が反時計回りの線分を通過すると、カウントがデクリメントされます。 行が図の外側に達したときにカウントが 0 以外の場合、領域は塗りつぶされます。

CDC::SetROP2

現在の描画モードを設定します。

int SetROP2(int nDrawMode);

パラメーター

nDrawMode
新しい描画モードを指定します。 次のいずれかの値を指定できます。

  • R2_BLACK ピクセルは常に黒です。

  • R2_WHITE ピクセルは常に白です。

  • R2_NOP ピクセルは変更されません。

  • R2_NOT ピクセルは画面の色の逆です。

  • R2_COPYPEN ピクセルはペンの色です。

  • R2_NOTCOPYPEN ピクセルはペンの色の逆です。

  • R2_MERGEPENNOT ピクセルは、ペンの色と画面の色の逆 (最終的なピクセル = (~ 画面ピクセル) | ペン) の組み合わせです。

  • R2_MASKPENNOT ピクセルは、ペンと画面の逆の両方に共通する色 (最終的なピクセル = (~ 画面ピクセル) & ペン) の組み合わせです。

  • R2_MERGENOTPEN ピクセルは、画面の色とペンの色の逆 (最終的なピクセル = (~ ペン) | 画面ピクセル) の組み合わせです。

  • R2_MASKNOTPEN ピクセルは、画面に共通する色とペンの逆 (最終的なピクセル = (~ ペン) & 画面ピクセル) の両方の色の組み合わせです。

  • R2_MERGEPEN ピクセルは、ペンの色と画面の色 (最終的なピクセル = ペン | 画面ピクセル) の組み合わせです。

  • R2_NOTMERGEPEN ピクセルは、 R2_MERGEPEN の色の逆 (最終的なピクセル = ~ (ペン | 画面のピクセル) です。

  • R2_MASKPEN ピクセルは、ペンと画面の両方に共通する色の組み合わせです (最終的なピクセル = ペン & 画面ピクセル)。

  • R2_NOTMASKPEN ピクセルは、 R2_MASKPEN の色の逆 (最終的なピクセル = ~ (ペン & 画面のピクセル) です。

  • R2_XORPEN ピクセルは、ペン内または画面内にある色の組み合わせですが、両方には含まれません (最終的なピクセル = ペン ^ 画面ピクセル)。

  • R2_NOTXORPEN ピクセルは、 R2_XORPEN の色の逆 (最終的なピクセル = ~ (ペン ^ 画面のピクセル) です。

戻り値

前の描画モード。

Windows SDK で指定された任意の値を指定できます。

解説

描画モードでは、ペンの色と塗りつぶされたオブジェクトの内部を、表示画面に既に表示されている色と組み合わせる方法を指定します。

描画モードはラスター デバイス専用です。ベクター デバイスには適用されません。 描画モードは、二項演算子 &|、および ^ (排他 |) と単項演算 ~を使用して、2 つの変数のすべての可能なブール値の組み合わせを表すバイナリ ラスター演算コードです。

CDC::SetStretchBltMode

StretchBlt メンバー関数のビットマップ ストレッチ モードを設定します。

int SetStretchBltMode(int nStretchMode);

パラメーター

nStretchMode
ストレッチ モードを指定します。 次のいずれかの値を指定できます。

説明
BLACKONWHITE 削除されたピクセルと既存のピクセルの色値を使用して、ブール & 操作を実行します。 ビットマップがモノクロ ビットマップの場合、このモードでは白ピクセルを犠牲にして黒いピクセルが保持されます。
COLORONCOLOR ピクセルを削除します。 このモードでは、削除されたすべてのピクセル行が、情報を保持せずに削除されます。
HALFTONE ソース四角形のピクセルを、コピー先の四角形のピクセル ブロックにマップします。 ピクセルのコピー先ブロックの平均色は、ソース ピクセルの色に近似します。
HALFTONEストレッチ モードを設定した後、アプリケーションは Win32 関数SetBrushOrgExを呼び出してブラシの原点を設定する必要があります。 そうしないと、ブラシのずれが発生します。
STRETCH_ANDSCANS Windows 95/98: 同じ BLACKONWHITE
STRETCH_DELETESCANS Windows 95/98: 同じ COLORONCOLOR
STRETCH_HALFTONE Windows 95/98: HALFTONEと同じです。
STRETCH_ORSCANS Windows 95/98: 同じ WHITEONBLACK
WHITEONBLACK 削除されたピクセルと既存のピクセルの色値を使用して、ブール | 操作を実行します。 ビットマップがモノクロ ビットマップの場合、このモードでは黒ピクセルを犠牲にして白いピクセルが保持されます。

戻り値

前のストレッチ モード。 STRETCH_ANDSCANSSTRETCH_DELETESCANS、または STRETCH_ORSCANS を指定できます。

解説

ビットマップ ストレッチ モードでは、関数を使用して圧縮されたビットマップから情報を削除する方法を定義します。

通常、 BLACKONWHITE(STRETCH_ANDSCANS) モードと WHITEONBLACK(STRETCH_ORSCANS) モードは、モノクロ ビットマップで前景ピクセルを保持するために使用されます。 通常、 COLORONCOLOR(STRETCH_DELETESCANS) モードは、カラー ビットマップの色を保持するために使用されます。

HALFTONE モードでは、他の 3 つのモードよりもソース イメージの処理量が多くなります。他のモードよりも低速ですが、より高品質の画像が生成されます。 また、ブラシの位置がずれないように、HALFTONE モードを設定した後にSetBrushOrgExを呼び出す必要があります。

デバイス ドライバーの機能によっては、より多くのストレッチ モードも使用できる場合があります。

CDC::SetTextAlign

テキスト配置フラグを設定します。

UINT SetTextAlign(UINT nFlags);

パラメーター

nFlags
テキスト配置フラグを指定します。 フラグは、テキストを囲むポイントと四角形の間のリレーションシップを指定します。 ポイントには、現在の位置またはテキスト出力関数で指定された座標を指定できます。 テキストの境界となる四角形は、テキスト文字列内の隣接する文字セルによって定義されます。 nFlagsパラメーターには、次の 3 つのカテゴリから 1 つ以上のフラグを指定できます。 各カテゴリからフラグを 1 つだけ選択します。 最初のカテゴリは、x 方向のテキストの配置に影響します。

  • TA_CENTER ポイントを外接する四角形の水平方向の中心に揃えます。

  • TA_LEFT ポイントを外接する四角形の左側に揃えます。 これが既定の設定です。

  • TA_RIGHT ポイントを外接する四角形の右側に揃えます。

2 番目のカテゴリは、y 方向のテキストの配置に影響します。

  • TA_BASELINE ポイントを選択したフォントの基準線に合わせます。

  • TA_BOTTOM ポイントを外接する四角形の下部に揃えます。

  • TA_TOP ポイントを外接する四角形の上部に揃えます。 これが既定の設定です。

3 番目のカテゴリは、テキストの書き込み時に現在の位置を更新するかどうかを決定します。

  • TA_NOUPDATECP テキスト出力関数の各呼び出し後に現在の位置を更新しません。 これが既定の設定です。

  • TA_UPDATECP テキスト出力関数を呼び出すたびに、現在の x 位置を更新します。 新しい位置は、テキストの外接する四角形の右側にあります。 このフラグを設定すると、 TextOut メンバー関数の呼び出しで指定された座標は無視されます。

戻り値

成功した場合は、前のテキスト配置設定。 下位バイトには水平設定が含まれており、上位バイトには垂直設定が含まれます。それ以外の場合は 0。

解説

TextOutおよびExtTextOutメンバー関数は、テキストの文字列をディスプレイまたはデバイスに配置するときに、これらのフラグを使用します。 フラグは、特定のポイントとテキストを囲む四角形の間のリレーションシップを指定します。 この点の座標は、パラメーターとして TextOut メンバー関数に渡されます。 テキストの境界となる四角形は、テキスト文字列内の隣接する文字セルによって形成されます。

CDC::SetTextCharacterExtra

文字間の間隔を設定します。

int SetTextCharacterExtra(int nCharExtra);

パラメーター

nCharExtra
各文字に追加する余分なスペースの量を論理単位で指定します。 現在のマッピング モードが MM_TEXTされていない場合、 nCharExtra は変換され、最も近いピクセルに丸められます。

戻り値

前の文字間の間隔の量。

解説

GDI は、デバイス コンテキストにテキスト行を書き込むときに、区切り文字を含む各文字にこの間隔を追加します。 文字間間隔の既定値は 0 です。

CDC::SetTextColor

テキストの色を指定した色に設定します。

virtual COLORREF SetTextColor(COLORREF crColor);

パラメーター

crColor
テキストの色を RGB カラー値として指定します。

戻り値

前のテキストの色の RGB 値。

解説

システムは、このデバイス コンテキストにテキストを書き込むときに、また、色とモノクロのデバイス コンテキストの間でビットマップを変換するときにも、このテキストの色を使用します。

デバイスが指定された色を表すことができない場合、システムはテキストの色を最も近い物理色に設定します。 文字の背景色は、 SetBkColor および SetBkMode メンバー関数によって指定されます。

CWnd::OnCtlColor の例を参照してください。

CDC::SetTextJustification

文字列の区切り文字にスペースを追加します。

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

パラメーター

nBreakExtra
テキスト行に追加する余分な領域の合計を (論理単位で) 指定します。 現在のマッピング モードが MM_TEXTされていない場合、このパラメーターによって指定された値は現在のマッピング モードに変換され、最も近いデバイス単位に丸められます。

nBreakCount
行内の区切り文字の数を指定します。

戻り値

関数が成功した場合は 1 つ。それ以外の場合は 0。

解説

アプリケーションでは、 GetTextMetrics メンバー関数を使用して、フォントの区切り文字を取得できます。

SetTextJustificationメンバー関数が呼び出されると、テキスト出力関数 (TextOut など) の呼び出しによって、指定した区切り文字の数に対して、指定した余分な領域が均等に分散されます。 通常、区切り文字はスペース文字 (ASCII 32) ですが、フォントで他の文字として定義できます。

メンバー関数 GetTextExtent は、通常、 SetTextJustificationで使用されます。 GetTextExtent は、配置前の特定の線の幅を計算します。 アプリケーションは、配置後の文字列の幅からGetTextExtentによって返される値を減算することによって、nBreakExtra パラメーターで指定する領域の量を決定できます。

SetTextJustification関数を使用すると、異なるフォントで複数の実行を含む行を配置できます。 この場合、各実行を個別に配置して書き込むことで、行を段階的に作成する必要があります。

アライメント中に丸めエラーが発生する可能性があるため、システムは現在のエラーを定義する実行中のエラー用語を保持します。 複数の実行を含む行を配置する場合、 GetTextExtent は、次の実行の範囲を計算するときに、このエラー用語を自動的に使用します。 これにより、テキスト出力関数でエラーを新しい実行にブレンドできます。

各行が揃ったら、このエラー用語をクリアして、次の行に組み込まれないようにする必要があります。 この用語は、nBreakExtraが 0 に設定されたSetTextJustificationを呼び出すことによってクリアできます。

CDC::SetViewportExt

デバイス コンテキストのビューポートの x エクステントと y エクステントを設定します。

virtual CSize SetViewportExt(
    int cx,
    int cy);

CSize SetViewportExt(SIZE size);

パラメーター

cx
ビューポートの x 範囲を (デバイス単位で) 指定します。

cy
ビューポートの y エクステントを (デバイス単位で) 指定します。

size
ビューポートの x エクステントと y エクステントを指定します (デバイス単位)。

戻り値

CSize オブジェクトとしてのビューポートの前のエクステント。 エラーが発生すると、返される CSize オブジェクトの x 座標と y 座標の両方が 0 に設定されます。

解説

ビューポートは、デバイス コンテキスト ウィンドウと共に、GDI が論理座標系内のポイントを実際のデバイスの座標系内のポイントにマップする方法を定義します。 つまり、GDI が論理座標をデバイス座標に変換する方法を定義します。

次のマッピング モードが設定されている場合、 SetWindowExtSetViewportExt の呼び出しは無視されます。

MM_HIENGLISH MM_LOMETRIC
MM_HIMETRIC MM_TEXT
MM_LOENGLISH MM_TWIPS

MM_ISOTROPIC モードが設定されている場合、アプリケーションはSetViewportExtを呼び出す前に、SetWindowExt メンバー関数を呼び出す必要があります。

CView::OnPrepareDC の例を参照してください。

CDC::SetViewportOrg

デバイス コンテキストのビューポートの原点を設定します。

virtual CPoint SetViewportOrg(
    int x,
    int y);

CPoint SetViewportOrg(POINT point);

パラメーター

x
ビューポートの原点の x 座標 (デバイス単位) を指定します。 値は、デバイス座標系の範囲内である必要があります。

y
ビューポートの原点の y 座標 (デバイス単位) を指定します。 値は、デバイス座標系の範囲内である必要があります。

point
ビューポートの原点を指定します。 値は、デバイス座標系の範囲内である必要があります。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

CPoint オブジェクトとしてのビューポートの前の原点 (デバイス座標)。

解説

ビューポートは、デバイス コンテキスト ウィンドウと共に、GDI が論理座標系内のポイントを実際のデバイスの座標系内のポイントにマップする方法を定義します。 つまり、GDI が論理座標をデバイス座標に変換する方法を定義します。

ビューポートの原点は、GDI がウィンドウの原点をマップするデバイス座標系内のポイント、 SetWindowOrg メンバー関数で指定された論理座標系内のポイントをマークします。 GDI は、ウィンドウの原点をビューポートの原点にマップするために必要なのと同じプロセスに従って、他のすべてのポイントをマップします。 たとえば、ウィンドウの原点にある点の周りの円内のすべての点は、ビューポートの原点の点を中心にした円になります。 同様に、ウィンドウの原点を通過するライン内のすべての点は、ビューポートの原点を通過する線になります。

CView::OnPrepareDC の例を参照してください。

CDC::SetWindowExt

デバイス コンテキストに関連付けられたウィンドウの x エクステントと y エクステントを設定します。

virtual CSize SetWindowExt(
    int cx,
    int cy);

CSize SetWindowExt(SIZE size);

パラメーター

cx
ウィンドウの x エクステントを論理単位で指定します。

cy
ウィンドウの y エクステントを論理単位で指定します。

size
ウィンドウの x エクステントと y エクステントを論理単位で指定します。

戻り値

CSize オブジェクトとしてのウィンドウの前のエクステント (論理単位)。 エラーが発生した場合、返される CSize オブジェクトの x 座標と y 座標はどちらも 0 に設定されます。

解説

ウィンドウは、デバイス コンテキスト ビューポートと共に、GDI が論理座標系内のポイントをデバイス座標系のポイントにマップする方法を定義します。

次のマッピング モードが設定されている場合、 SetWindowExt 関数と SetViewportExt 関数の呼び出しは無視されます。

  • MM_HIENGLISH

  • MM_HIMETRIC

  • MM_LOENGLISH

  • MM_LOMETRIC

  • MM_TEXT

  • MM_TWIPS

MM_ISOTROPIC モードが設定されている場合、アプリケーションは、SetViewportExtを呼び出す前に、SetWindowExt メンバー関数を呼び出す必要があります。

CView::OnPrepareDC の例を参照してください。

CDC::SetWindowOrg

デバイス コンテキストのウィンドウの原点を設定します。

CPoint SetWindowOrg(
    int x,
    int y);

CPoint SetWindowOrg(POINT point);

パラメーター

x
ウィンドウの新しい原点の論理 x 座標を指定します。

y
ウィンドウの新しい原点の論理 y 座標を指定します。

point
ウィンドウの新しい原点の論理座標を指定します。 このパラメーターには、 POINT 構造体または CPoint オブジェクトを渡すことができます。

戻り値

CPoint オブジェクトとしてのウィンドウの前の原点。

解説

ウィンドウは、デバイス コンテキスト ビューポートと共に、GDI が論理座標系内のポイントをデバイス座標系のポイントにマップする方法を定義します。

ウィンドウの原点は、GDI がビューポートの原点をマップする論理座標系内のポイントをマークします。これは、 SetWindowOrg 関数で指定されたデバイス座標系内のポイントです。 GDI は、ウィンドウの原点をビューポートの原点にマップするために必要なのと同じプロセスに従って、他のすべてのポイントをマップします。 たとえば、ウィンドウの原点にある点の周りの円内のすべての点は、ビューポートの原点の点を中心にした円になります。 同様に、ウィンドウの原点を通過するライン内のすべての点は、ビューポートの原点を通過する線になります。

CDC::SetWorldTransform

指定したデバイス コンテキストのワールド空間とページ空間の間の 2 次元線形変換を設定します。 この変換は、グラフィックス出力のスケーリング、回転、せん断、または平行移動に使用できます。

BOOL SetWorldTransform(const XFORM& rXform);

パラメーター

rXform
変換データを含む XFORM 構造体への参照。

戻り値

成功した場合は 0 以外の値を返します。

失敗した場合は 0 を返します。

拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

このメソッドは、Windows GDI 関数の SetWorldTransformをラップします。

CDC::StartDoc

新しい印刷ジョブが開始され、後続のすべての StartPageEndPage の呼び出しは、 EndDoc 呼び出しが発生するまで同じジョブの下でスプールする必要があることをデバイス ドライバーに通知します。

int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);

パラメーター

lpDocInfo
ドキュメント ファイルの名前と出力ファイルの名前を含む DOCINFO 構造体を指します。

lpszDocName
ドキュメント ファイルの名前を含む文字列へのポインター。

戻り値

関数が成功した場合、戻り値は 0 より大きくなります。 この値は、ドキュメントの印刷ジョブ識別子です。

関数が失敗した場合、戻り値は 0 以下になります。

解説

これにより、1 ページより長いドキュメントが他のジョブと混在することがなくなります。

Windows バージョン 3.1 以降の場合、この関数は、 STARTDOC プリンター エスケープに置き換えられます。 この関数を使用すると、複数のページを含むドキュメントが他の印刷ジョブと混在しないようにします。

StartDoc メタファイル内では使用しないでください。

このコード フラグメントは、既定のプリンターを取得し、印刷ジョブを開き、"Hello, World!" を含む 1 ページをスプールします。 このコードによって印刷されるテキストはプリンターの論理単位にスケーリングされないため、出力テキストは、結果が読み取れないような小さな文字になっている可能性があります。 SetMapModeSetViewportOrgSetWindowExtなどの CDC スケーリング関数を使用して、スケーリングを修正できます。

void CDCView::DoStartDoc()
{
   // get the default printer
   CPrintDialog dlg(FALSE);
   dlg.GetDefaults();

   // is a default printer set up?
   HDC hdcPrinter = dlg.GetPrinterDC();
   if (hdcPrinter == NULL)
   {
      MessageBox(_T("Buy a printer!"));
   }
   else
   {
      // create a CDC and attach it to the default printer
      CDC dcPrinter;
      dcPrinter.Attach(hdcPrinter);

      // call StartDoc() to begin printing
      DOCINFO docinfo;
      memset(&docinfo, 0, sizeof(docinfo));
      docinfo.cbSize = sizeof(docinfo);
      docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");

      // if it fails, complain and exit gracefully
      if (dcPrinter.StartDoc(&docinfo) < 0)
      {
         MessageBox(_T("Printer wouldn't initialize"));
      }
      else
      {
         // start a page
         if (dcPrinter.StartPage() < 0)
         {
            MessageBox(_T("Could not start page"));
            dcPrinter.AbortDoc();
         }
         else
         {
            // actually do some printing
            CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);

            dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);

            dcPrinter.EndPage();
            dcPrinter.EndDoc();
            dcPrinter.SelectObject(pOldFont);
         }
      }
   }
}

CDC::StartPage

このメンバー関数を呼び出して、プリンター ドライバーがデータを受け取る準備をします。

int StartPage();

戻り値

関数が成功した場合は 0 以上、エラーが発生した場合は負の値。

解説

StartPage は、 NEWFRAME および BANDINFO エスケープよりも優先されます。

呼び出しの一連の印刷の概要については、 StartDoc メンバー関数を参照してください。

システムは、StartPageEndPageの呼び出しの間にResetDCメンバー関数を無効にします。

CDC::StartDoc の例を参照してください。

CDC::StretchBlt

コピー元の四角形から、必要に応じてコピー先の四角形に合うようにビットマップを拡大または縮小してコピーします。

BOOL StretchBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    DWORD dwRop);

パラメーター

x
コピー先の四角形の左上隅を示す X 座標を (論理単位で) 指定します。

y
コピー先の四角形の左上隅を示す Y 座標を (論理単位で) 指定します。

nWidth
コピー先の四角形の幅を (論理単位で) 指定します。

nHeight
コピー先の四角形の高さを (論理単位で) 指定します。

pSrcDC
コピー元のデバイス コンテキストを指定します。

xSrc
コピー元の四角形の左上隅を示す X 座標を (論理単位で) 指定します。

ySrc
コピー元の四角形の左上隅を示す Y 座標を (論理単位で) 指定します。

nSrcWidth
コピー元の四角形の幅を (論理単位で) 指定します。

nSrcHeight
コピー元の四角形の高さを (論理単位で) 指定します。

dwRop
実行するラスター オペレーションを指定します。 ラスター オペレーション コードにより、現在のブラシ、有効なコピー元のビットマップ、およびコピー先のビットマップが関連する出力操作における、GDI による色の組み合わせが定義されます。 このパラメーターには、次のいずれかの値を指定できます。

  • BLACKNESS すべての出力を黒にします。

  • DSTINVERT コピー先のビットマップを反転します。

  • MERGECOPY Boolean AND 演算子を使用して、パターンとソース ビットマップを結合します。

  • MERGEPAINT Boolean OR 演算子を使用して、反転元ビットマップと変換先ビットマップを結合します。

  • NOTSRCCOPY 反転されたソース ビットマップをコピー先にコピーします。

  • NOTSRCERASE Boolean OR 演算子を使用して、変換先ビットマップとソース ビットマップを組み合わせた結果を反転します。

  • PATCOPY パターンをコピー先のビットマップにコピーします。

  • PATINVERT Boolean XOR 演算子を使用して、コピー先のビットマップとパターンを組み合わせます。

  • PATPAINT Boolean OR 演算子を使用して、反転されたソース ビットマップをパターンと組み合わせます。 Boolean OR 演算子を使用して、この操作の結果をコピー先ビットマップと組み合わせます。

  • SRCAND Boolean AND 演算子を使用して、コピー先ビットマップとソース ビットマップのピクセルを結合します。

  • SRCCOPY コピー元ビットマップをコピー先ビットマップにコピーします。

  • SRCERASE Boolean AND 演算子を使用して、変換先ビットマップを反転し、結果をソース ビットマップと結合します。

  • SRCINVERT Boolean XOR 演算子を使用して、コピー先ビットマップとソース ビットマップのピクセルを結合します。

  • SRCPAINT Boolean OR 演算子を使用して、コピー先ビットマップとソース ビットマップのピクセルを結合します。

  • WHITENESS すべての出力を白にします。

戻り値

ビットマップが描画された場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、コピー先デバイス コンテキストの伸縮モード (SetStretchBltMode で設定) を使用して、ビットマップを拡大または縮小する方法を決定します。

StretchBlt関数は、pSrcDCによって指定されたソース デバイスから、メンバー関数が呼び出されているデバイス コンテキスト オブジェクトによって表される宛先デバイスにビットマップを移動します。 xSrcySrcnSrcWidth、およびnSrcHeightパラメーターは、ソース四角形の左上隅と寸法を定義します。 xynWidth、およびnHeightの各パラメーターは、配置先の四角形の左上隅と寸法を示します。 dwRopで指定されたラスター演算は、ソース ビットマップと、ターゲット デバイス上に既に存在するビットの組み合わせ方法を定義します。

StretchBlt関数は、nSrcWidthおよびnWidthまたはnSrcHeightおよびnHeightパラメーターの符号が異なる場合に、ビットマップのミラー イメージを作成します。 nSrcWidthnWidthの符号が異なる場合、関数は x 軸に沿ってビットマップのミラー イメージを作成します。 nSrcHeightnHeightに異なる符号がある場合、関数は y 軸に沿ってビットマップのミラー イメージを作成します。

StretchBlt 関数は、メモリ内のコピー元ビットマップを拡大または縮小し、その結果をコピー先にコピーします。 パターンを結果とマージする場合、ストレッチされたソース ビットマップがコピー先にコピーされるまで、そのパターンはマージされません。 ブラシが使用されている場合は、ターゲット デバイス コンテキストで選択されているブラシです。 コピー先の座標は、コピー先デバイス コンテキストに従って変換されます。コピー元の座標は、コピー元デバイス コンテキストに従って変換されます。

変換先ビットマップ、ソース ビットマップ、およびパターン ビットマップの色形式が同じでない場合は、 StretchBlt 変換元ビットマップとパターン ビットマップが変換先ビットマップと一致するように変換されます。 変換では、コピー先デバイス コンテキストの前景色と背景色が使用されます。

モノクロ ビットマップをカラーに変換する必要がある場合、StretchBlt は白のビット (1) を背景色に、黒のビット (0) を前景色に設定します。 カラーをモノクロに変換するには、背景色に一致するピクセルを白 (1) に設定し、その他のすべてのピクセルを黒 (0) に設定します。 カラーのデバイス コンテキストの前景色と背景色は使用されます。

一部のデバイスでは、StretchBlt 関数がサポートされていません。 デバイスがStretchBltをサポートしているかどうかを判断するには、RASTERCAPS インデックスを使用して GetDeviceCaps メンバー関数を呼び出し、RC_STRETCHBLT フラグの戻り値を確認します。

CDC::StrokeAndFillPath

パス内の開いている図形を閉じ、現在のペンを使用してパスのアウトラインをストロークし、現在のブラシを使用してその内部を塗りつぶします。

BOOL StrokeAndFillPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

デバイス コンテキストには、閉じたパスが含まれている必要があります。 StrokeAndFillPathメンバー関数は、パス内のすべての開いている図形を閉じ、パスを個別になでて塗りつぶすのと同じ効果を持ちます。ただし、ペンが大きい場合でも、塗りつぶされた領域がストローク領域と重ならないようにします。

CDC::StrokePath

現在のペンを使用して、指定したパスをレンダリングします。

BOOL StrokePath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

デバイス コンテキストには、閉じたパスが含まれている必要があります。

CDC::TabbedTextOut

このメンバー関数を呼び出して、指定した位置に文字列を書き込み、タブ位置の配列で指定された値にタブを展開します。

virtual CSize TabbedTextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions,
    int nTabOrigin);

CSize TabbedTextOut(
    int x,
    int y,
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions,
    int nTabOrigin);

パラメーター

x
文字列の開始点の論理 x 座標を指定します。

y
文字列の開始点の論理 y 座標を指定します。

lpszString
描画する文字列をポイントします。 このパラメーターには、文字の配列または CString オブジェクトへのポインターを渡すことができます。

nCount
lpszStringによって指文字列のを指定します。

nTabPositions
タブストップ位置の配列内の値の数を指定します。

lpnTabStopPositions
タブストップ位置を含む配列を指します (論理単位)。 タブ位置は、昇順で並べ替える必要があります。最小の x 値は、配列の最初の項目である必要があります。

nTabOrigin
タブを展開する開始位置の x 座標を論理単位で指定します。

str
指定した文字を含む CString オブジェクト。

戻り値

CSize オブジェクトとしての文字列の次元 (論理単位)。

解説

テキストは現在選択されているフォントで書き込まれます。 nTabPositionsが 0 で、lpnTabStopPositionsNULLの場合、タブは平均文字幅の 8 倍に展開されます。

nTabPositionsが 1 の場合、タブ位置は、lpnTabStopPositions配列の最初の値で指定された距離で区切われます。 lpnTabStopPositions配列に複数の値が含まれている場合、nTabPositionsで指定された数まで、配列内の各値に対してタブ位置が設定されます。 nTabOrigin パラメーターを使用すると、アプリケーションは 1 行に対してTabbedTextOut関数を複数回呼び出すことができます。 アプリケーションが毎回同じ値に設定された nTabOrigin を使用して関数を複数回呼び出す場合、関数は、 nTabOriginで指定された位置を基準にしてすべてのタブを展開します。

既定では、現在の位置は関数によって使用または更新されません。 アプリケーションが関数を呼び出すときに現在の位置を更新する必要がある場合、アプリケーションは nFlags TA_UPDATECPに設定されたSetTextAlign メンバー関数を呼び出すことができます。 このフラグが設定されている場合、Windows は現在の位置を使用して、TabbedTextOutの後続の呼び出しでxおよびyパラメーターを無視します。

CDC::TextOut

現在選択されているフォントを使用して、文字列を指定位置から書き込みます。

virtual BOOL TextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount);

BOOL TextOut(
    int x,
    int y,
    const CString& str);

パラメーター

x
テキストの始点の論理的な X 座標を指定します。

y
テキストの始点の論理的な Y 座標を指定します。

lpszString
描画される文字列を指します。

nCount
文字列の文字数を指定します。

str
描画される文字が含まれる CString オブジェクト。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

文字の起点は文字セルの左上隅です。 既定では、現在の位置は関数によって使用または更新されません。

アプリケーションがTextOutを呼び出すときに現在の位置を更新する必要がある場合、アプリケーションはTA_UPDATECPに設定nFlagsSetTextAlignメンバー関数を呼び出すことができます。 このフラグが設定されている場合、Windows は現在の位置を使用して、TextOutの後続の呼び出しでxおよびyパラメーターを無視します。

CDC::BeginPath の例を参照してください。

CDC::TransparentBlt

このメンバー関数を呼び出して、指定したソース デバイス コンテキストからピクセルの四角形に対応するカラー データのビット ブロックを宛先デバイス コンテキストに転送します。

BOOL TransparentBlt(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT clrTransparent);

パラメーター

xDest
コピー先の四角形の左上隅の x 座標を論理単位で指定します。

yDest
コピー先の四角形の左上隅の y 座標を論理単位で指定します。

nDestWidth
コピー先の四角形の幅を論理単位で指定します。

nDestHeight
コピー先の四角形の高さを論理単位で指定します。

pSrcDC
ソース デバイス コンテキストへのポインター。

xSrc
ソース四角形の x 座標を論理単位で指定します。

ySrc
ソース四角形の y 座標を論理単位で指定します。

nSrcWidth
ソース四角形の幅を論理単位で指定します。

nSrcHeight
ソース四角形の高さを論理単位で指定します。

clrTransparent
透明として扱うソース ビットマップの RGB 色。

戻り値

成功した場合は TRUE。それ以外の場合は FALSE

解説

TransparentBlt 透明性を可能にします。つまり、 clrTransparent によって示される RGB カラーは、転送用に透明にレンダリングされます。

詳細については、Windows SDK の TransparentBlt に関する記事を参照してください。

CDC::UpdateColors

クライアント領域の現在の色をピクセル単位でシステム パレットに照合することで、デバイス コンテキストのクライアント領域を更新します。

void UpdateColors();

解説

論理パレットが実現された非アクティブなウィンドウでは、システム パレットが変更されたときにクライアント領域を再描画する代わりに、 UpdateColors を呼び出す場合があります。

カラー パレットの使用の詳細については、Windows SDK の UpdateColors を参照してください。

UpdateColors メンバー関数は、通常、領域を再描画するよりも速くクライアント領域を更新します。 ただし、この関数はシステム パレットが変更される前の各ピクセルの色に基づいて色変換を実行するため、この関数を呼び出すたびに、ある程度の色精度が失われます。

CDC::WidenPath

デバイス コンテキストで現在選択されているペンを使用してパスがストロークされた場合に描画される領域として、現在のパスを再定義します。

BOOL WidenPath();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、現在のペンが 2 番目のバージョンの CreatePen メンバー関数によって作成された幾何学的ペンである場合、またはペンが最初のバージョンの CreatePen で作成され、幅がデバイス単位で 1 より大きい場合にのみ成功します。 デバイス コンテキストには、閉じたパスが含まれている必要があります。 パス内の Bzier 曲線は、拡大された曲線に近似する直線のシーケンスに変換されます。 そのため、 WidenPath が呼び出された後も、Bzier 曲線はパス内に残っていません。

関連項目

CObject クラス
階層図
CPaintDC クラス
CWindowDC クラス
CClientDC クラス
CMetaFileDC クラス