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 によって作成された CWinApp 一時 CDC オブジェクトを削除するために、アイドル時間ハンドラーによって呼び出されます FromHandle。 また、デバイス コンテキストをデタッチします。
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 ビットに制限されています。 したがって、 int メンバー関数に CDC 渡される関数は、-32768 ~ 32767 の範囲である必要があります。

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

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

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

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

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

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

詳細についてはCDC、「デバイス コンテキスト」を参照してください

継承階層

CObject

CDC

必要条件

ヘッダー:afxwin.h

CDC::AbortDoc

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

int AbortDoc();

戻り値

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

  • SP_ERROR 一般的なエラー。

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

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

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

解説

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

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

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

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

アプリケーションで印刷エラーまたは印刷操作の取り消しが発生した場合、クラスCDCの関数またはAbortDocメンバー関数を使用して操作をEndDoc終了することはできません。 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
外接する四角形を (論理単位で) 指定します。 このパラメーターには、1 LPRECT つまたは 1 つのオブジェクトを 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現在の位置が更新される点を除き、同様です。 ポイント ( x1, y1) および ( x2, y2) は、外接する四角形を指定します。 指定された外接する四角形によって形成される楕円は、円弧の曲線を定義します。円弧は、外接する四角形の中心から (*x3*, ) までの放射状線と交差する点から反時計回り (既定の y3円弧の方向) に拡張されます。 円弧は、外接する四角形の中心から ( x4, y4) までの放射状線と交差する位置で終了します。 始点と終点が同じ場合は、完全な楕円が描画されます。

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

CDC::Attach

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

BOOL Attach(HDC hDC);

パラメーター

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

戻り値

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

解説

出力 hDC デバイス コンテキストと属性デバイス コンテキストの両方 m_hDCm_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 コピー元となるデバイス コンテキストを識別するオブジェクトへのポインター。 ソースを NULL 含まないラスター演算を指定する必要 dwRop があります。

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

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

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

戻り値

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

解説

( x1, y1) および ( x2, y2) パラメーターは、コードの一部である楕円を囲む四角形の左上隅と右下隅をそれぞれ指定します。 ( x3, y3) および ( x4, y4) パラメーターは、楕円と交差する線の端点を指定します。 コードは、選択したペンを使用して描画され、選択したブラシを使用して塗りつぶされます。

関数によって描画される Chord 図は上に拡張されますが、右と下の座標は含まれません。 これは、図の高さが図の幅であることをy2x1 - y1x2 - 意味します.

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
デバイス コンテキストへのポインター。 ある場合 pDC 、この関数は NULLシステムディスプレイと互換性のあるメモリデバイスコンテキストを作成します。

戻り値

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

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

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

戻り値

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

解説

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

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

CDC::CreateIC

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

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

パラメーター

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

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

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

lpInitData
デバイス ドライバーのデバイス固有の初期化データを指します。 このパラメーターはlpInitDataNULLデバイス ドライバーが、コントロール パネルを介してユーザーによって指定された既定の初期化 (存在する場合) を使用する場合に指定する必要があります。 デバイス固有の初期化のデータ形式を参照してください 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関数は、一般に、または 〘 CreateICCreateCompatibleDCを使用して作成されたデバイス コンテキストをCreateDC削除するために使用されます。

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

CDC::DeleteTempMap

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

static void PASCAL DeleteTempMap();

CDC::Detach

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

HDC Detach();

戻り値

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

CDC::DPtoHIMETRIC

この関数は、サイズを OLE に指定 HIMETRIC し、ピクセル 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
構造体またはCPointオブジェクトのPOINT配列を指します。

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

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

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

解説

この関数は、デバイスの座標系から 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す場合、パラメーターNULLlpRectLast .

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

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

戻り値

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

解説

場合によっては、 nState パラメーターによって nType 異なります。 次の一覧は、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。

解説

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

アイコン リソースは、関数CWinApp::LoadIconCWinApp::LoadStandardIconCWinApp::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 長さを指定します。 0 の場合 nTextLen 、文字列は null で終わると見なされます。

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

lpDrawProc
イメージのレンダリングに使用されるコールバック関数へのポインター。 このパラメーターは、イメージの種類nFlagsDST_COMPLEXが . これは省略可能であり、 NULL イメージの種類 DST_TEXTが . 他のすべてのイメージの種類では、このパラメーターは無視されます。 コールバック関数の詳細については、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
描画する文字列をポイントします。 -1 の場合 nCount 、文字列は null で終わる必要があります。

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

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

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

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

Note

フラグの組み合わせによっては uFormat 、渡された文字列が変更される可能性があります。 いずれかDT_END_ELLIPSISと共に使用DT_MODIFYSTRINGするかDT_PATH_ELLIPSIS、または文字列が変更され、オーバーライドでアサーションが発生するCString可能性があります。 値 DT_CALCRECTDT_EXTERNALLEADING、、DT_INTERNALDT_NOCLIPおよびDT_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
描画する文字列をポイントします。 1 の場合 nCount 、文字列は null で終わる必要があります。

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

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

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

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

Note

フラグの組み合わせによっては uFormat 、渡された文字列が変更される可能性があります。 いずれかDT_END_ELLIPSISと共に使用DT_MODIFYSTRINGするかDT_PATH_ELLIPSIS、または文字列が変更され、オーバーライドでアサーションが発生するCString可能性があります。 値 DT_CALCRECTDT_EXTERNALLEADING、、DT_INTERNALDT_NOCLIPおよびDT_NOPREFIX値と共にDT_TABSTOP使用することはできません。

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

解説

タブを適切なスペースに展開し、テキストを指定された四角形の左、右、または中央に配置し、テキストを指定された四角形内に収まる行に分割することで、テキストの書式を設定します。 書式設定の種類は、次lpDTParamsnFormat指定します。 詳細については、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 を返します。

解説

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

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

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

CDC::EndDoc

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

int EndDoc();

戻り値

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

解説

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

アプリケーションで印刷エラーまたは印刷操作の取り消しが発生した場合は、いずれかEndDocAbortDocを使用して操作を終了しないでください。 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
アプリケーションが提供するデータを指します。 データは、オブジェクト情報と共にコールバック関数に渡されます。

戻り値

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

解説

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

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

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

int CALLBACK EXPORT AFunction (LPSTR, LPSTR);

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

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

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

// 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
このエスケープから出力を受け取る構造体を指します。 パラメーターは lpOutDataNULL データが返されない場合です。

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 番目のバージョンの詳細については ExtEscape 、Windows SDK を参照してください。

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。 この関数は、指定された x 点から始まり、 y 色の境界まですべての方向に塗りつぶされます。

nFillTypeFLOODFILLSURFACE設定すると、関数は指定されたポイントから始まり、すべての方向に進み、指定されたxycrColor色を含むすべての隣接する領域を塗りつぶします。

ラスター表示テクノロジをサポートするメモリ デバイス コンテキストとデバイスのみがサポート 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
隣接する文字セルの原点間の距離を示す値の配列を指します。 たとえば、[] 論理単位は、lpDxWidthsi文字セルとi文字セル i + 1 の原点を区切ります。 の場合 lpDxWidthsNULLExtTextOut 文字間の既定の間隔を使用します。

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

戻り値

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

解説

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

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

CDC::FillPath

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

BOOL FillPath();

戻り値

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

解説

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

CDC::FillRect

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

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

パラメーター

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

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

解説

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

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

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

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

CDC::FillRgn

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

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

パラメーター

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

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

戻り値

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

解説

ブラシは、メンバー関数CreateHatchBrushを使用してCBrush作成するか、CreatePatternBrushCreateSolidBrushまたはで取得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
四角形の高さを指定します。

解説

FillSolidRect は非常によく CDC::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の場合、または次の値以下leftの場合right、四角形は描画されません。

描画される FrameRect 境界線は、同じ座標を使用してメンバー関数によって Rectangle 描画される境界線と同じ位置にあります (1 論理単位幅のペンを使用する場合 Rectangle )。 四角形の内部は塗りつぶ 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;

戻り値

現在のバックグラウンド モード(または OPAQUETRANSPARENT.

解説

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

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

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 を受け取る構造体の配列を指します。 この配列には、and パラメーターで指定された範囲内に文字が含まれているのとnLastChar同数ABC以上の構造体がnFirstChar含まれている必要があります。

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

戻り値

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

解説

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

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

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

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

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

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

CDC::GetCharABCWidthsI

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

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

パラメーター

giFirst
現在のフォントから連続するグリフ インデックスのグループ内の最初のグリフ インデックスを指定します。 このパラメーターは、パラメーターNULLpgi .

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

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

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

戻り値

正常終了した場合は 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 ビット I Enterprise Edition E 浮動小数点形式です。 (幅は文字の基本行に沿って測定されます)。

戻り値

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

解説

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

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

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

CDC::GetCharWidthI

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

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

パラメーター

giFirst
現在のフォントから連続するグリフ インデックスのグループ内の最初のグリフ インデックスを指定します。 このパラメーターは、パラメーターNULLpgi .

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

pgi
グリフ インデックスを含む配列へのポインター。 値が指定されている場合は NULLgiFirst パラメーターが代わりに使用されます。 このパラメーターは 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 フォントをドキュメントと共に保存することがあります。 これを行うために、アプリケーションはフォントを埋め込むことができるかどうかを判断し、フォント ファイル全体を取得し、0 dwTableを指定して、dwOffsetcbDataパラメーターを指定します。

アプリケーションは、構造体のメンバーOUTLINETEXTMETRICをチェックすることによって、フォントをotmfsType埋め込むことができるかどうかを判断できます。 ビット 1 が otmfsType 設定されている場合、フォントの埋め込みは許可されません。 ビット 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 を指定できます。

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

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

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

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

lpBuffer
関数がアウトライン文字に関する情報をコピーするバッファーを指します。 nFormat値を指定するとGGO_NATIVE、情報は構造体のTTPOLYGONHEADERTTPOLYCURVE形式でコピーされます。 この値が NULLnFormat or 値であるGGO_BITMAPGGO_NATIVE場合、関数はバッファーの必要なサイズを返します。

lpmat2
文字の MAT2 変換行列を含む構造体を指します。 値がNULL指定されているnFormat場合でも、このパラメーターをGGO_NATIVE指定することはできません。

戻り値

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

解説

アプリケーションは、ビットマップ形式で取得された文字を、指す構造体で 2 バイ 2 変換行列を lpmat2指定することによって回転できます。

グリフアウトラインは、一連の輪郭として返されます。 各輪郭は、構造によって定義され 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

解説

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

Diagram that shows how a dithered pen stroke is composed.

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

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

DC を右から左のレイアウトに変更するために呼び出 SetLayout すと、 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 つのメンバーは、文字列へのポインターです。 アプリケーションでは、他のメンバーに必要な領域に加えて、これらの文字列の領域を割り当てる必要があります。 文字列のサイズにシステムによって課される制限がないため、メモリを割り当てる最も簡単な方法は、関数の最初の呼び出しで NULL を lpotm 指定して必要なサイズを GetOutlineTextMetrics 取得することです。

CDC::GetOutputCharWidth

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

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

パラメーター

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

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

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

戻り値

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

解説

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

この関数は、指定されたバッファーに値を 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 返される幅と高さをオフセットしません。

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

0 のlpnTabStopPositions場合nTabPositionsNULLタブは 8 文字の平均幅に展開されます。 1 の場合 nTabPositions 、タブ位置は、ポイント先の配列 lpnTabStopPositions の最初の値で指定された距離で区切ります。 1 つ以上の値を指す場合 lpnTabStopPositions 、配列内の各値に対してタブ位置が設定され、次で指定した数までタブ位置が設定されます 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_MOVETO 対応するポイントイン lpPoints が不整合な図形を開始することを指定します。

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

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

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

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

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

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

戻り値

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

解説

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

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

CDC::GetPixel

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

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

パラメーター

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

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

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

戻り値

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

解説

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

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

メンバー関数には 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 返される幅と高さをオフセットしません。

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

0 のlpnTabStopPositions場合nTabPositions、タブはNULL平均文字幅の 8 倍に展開されます。 1 の場合 nTabPositions 、タブ位置は、ポイント先の配列 lpnTabStopPositions の最初の値で指定された距離で区切ります。 1 つ以上の値を指す場合 lpnTabStopPositions 、配列内の各値に対してタブ位置が設定され、次で指定した数までタブ位置が設定されます 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. 結果と戻り値GetTextAlignに C++ ビットごとの AND (&) 演算子を適用します。

  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されたスペースに収まる最大文字数のカウントを受け取る整数へのポインター。 の場合lpnFitnMaxExtentNULL無視されます。

alpDx
部分グリフ エクステントを受け取る整数の配列へのポインター。 配列内の各要素は、グリフ インデックス配列の先頭と、指定された空間に収まるグリフの 1 つの間の距離を論理単位で指定します nMaxExtent。 この配列にはグリフ インデックスと同数以上の要素を指定する必要がありますが、この関数は、指定された cgi数のグリフ インデックス lpnFitに対してのみ、配列をエクステントで埋めます。 あるNULL場合lpnDx、関数は文字列の幅の一部を計算しません。

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コールバック関数の説明を参照してください。 このパラメーターの場合、システムは NULLWindows TextOut 関数を使用して文字列を描画し lpData 、出力される文字列への長いポインターであると見なされます。

lpData
出力関数に渡されるデータへの遠方ポインターを指定します。 の場合 lpfnOutputNULLlpData 出力する文字列への長いポインターである必要があります。

nCount
出力する文字数を指定します。 このパラメーターが 0 の場合は、 GrayString 文字列の長さを計算します (文字列 lpData へのポインターであると仮定します)。 1 で、関数が 0 をlpfnOutput返す場合nCount、イメージは表示されますが、淡色表示されません。

x
文字列を囲む四角形の開始位置の論理 x 座標を指定します。

y
文字列を囲む四角形の開始位置の論理 y 座標を指定します。

nWidth
文字列を囲む四角形の幅 (論理単位) を指定します。 0 の場合 nWidth は、 GrayString 文字列へのポインターであると仮定して lpData 、領域の幅を計算します。

nHeight
文字列を囲む四角形の高さを (論理単位で) 指定します。 0 の場合 nHeight は、 GrayString 文字列へのポインターであると仮定して lpData 、領域の高さを計算します。

戻り値

文字列が描画される場合は 0 以外、関数またはアプリケーション提供の出力関数が 0 を返した場合 TextOut 、またはメモリが不足して淡色表示用のメモリ ビットマップが作成されなかった場合は 0。

解説

この関数は、選択したブラシと背景に関係なくテキストを暗くします。 メンバー関数は GrayString 、現在選択されているフォントを使用します。 この関数を MM_TEXT 使用する前に、マッピング モードを選択する必要があります。

アプリケーションは、メンバー関数を呼び出さずに、単色の灰色をサポートするデバイスで淡色 (灰色) の文字列を GrayString 描画できます。 システムカラー COLOR_GRAYTEXT は、無効なテキストを描画するために使用される単色の灰色のシステムカラーです。 アプリケーションは、Windows 関数を GetSysColor 呼び出して色の COLOR_GRAYTEXT値を取得できます。 色が 0 (黒) 以外の場合、アプリケーションはメンバー関数を SetTextColor 呼び出してテキストの色を色の値に設定し、文字列を直接描画できます。 取得した色が黒の場合、アプリケーションはテキストを淡色 (灰色) で呼び出す GrayString 必要があります。

ある場合 lpfnOutput 、GDI は NULLWindows TextOut 関数を使用し lpData 、出力される文字への遠いポインターであると見なされます。 出力する文字をメンバー関数で TextOut 処理できない場合 (たとえば、文字列はビットマップとして格納されます)、アプリケーションは独自の出力関数を提供する必要があります。

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

渡される GrayString コールバック関数は、呼び出し規約を __stdcall 使用する必要があり、次のようにエクスポート __declspecする必要があります。

フレームワークがプレビュー モードの場合、メンバー関数の GrayString 呼び出しは呼び出しに TextOut 変換され、コールバック関数は呼び出されません。

CDC::HIMETRICtoDP

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

void HIMETRICtoDP(LPSIZE lpSize) const;

パラメーター

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

解説

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

CDC::HIMETRICtoLP

単位を論理単位に変換 HIMETRIC するには、この関数を呼び出します。

void HIMETRICtoLP(LPSIZE lpSize) const;

パラメーター

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

解説

OLE からサイズを取得 HIMETRIC し、アプリケーションの自然なマッピング モードに変換する場合は、この関数を使用します。

変換は、最初に単位を HIMETRIC ピクセルに変換してから、デバイス コンテキストの現在のマッピング単位を使用してこれらの単位を論理単位に変換することによって実現されます。 デバイスのウィンドウとビューポートの範囲が結果に影響を与える点に注意してください。

CDC::IntersectClipRect

現在の領域と 、 , , で指定されたx1四角形の交差部分を形成して、新しいクリッピング領域を作成しますy2x2y1

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
反転する四角形の論理座標を含む a RECT を指します。 このパラメーターのオブジェクトを CRect 渡すこともできます。

解説

反転は論理 NOT 演算であり、各ピクセルのビットを反転します。 モノクロディスプレイでは、この関数は白ピクセルを黒と黒のピクセルを白にします。 カラー ディスプレイでは、反転はディスプレイの色の生成方法によって異なります。 同じ四角形で 2 回呼び出すと InvertRect 、表示が前の色に戻ります。

四角形が空の場合、何も描画されません。

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;

戻り値

オブジェクトがプリンター DC の CDC 場合は 0 以外、それ以外の場合は 0。

CDC::LineTo

現在の位置から、and y (またはpoint) で指定されたx点までの線を描画します(含まない)。

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

パラメーター

x
線の終点の論理 x 座標を指定します。

y
線の終点の論理 y 座標を指定します。

point
線の終点を指定します。 このパラメーターには、 POINT 構造体またはオブジェクトを CPoint 渡すことができます。

戻り値

線が描画される場合は 0 以外。それ以外の場合は 0。

解説

線は、選択したペンで描画されます。 現在の位置は 、または 〘 yxpoint設定されます。

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
構造体またはオブジェクトをRECTCRect指します。 このパラメーターは、四角形を論理単位からデバイス単位にマッピングする一般的なケースに使用されます。

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

解説

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

ポイントの x 座標と y 座標は、-32,768 ~ 32,767 の範囲の 2 バイト符号付き整数です。 マッピング モードでこれらの制限を超える値が発生する場合、システムは値をそれぞれ -32,768 と 32,767 に設定します。

CDC::LPtoHIMETRIC

論理単位を単位に変換するには、この関数を HIMETRIC 呼び出します。

void LPtoHIMETRIC(LPSIZE lpSize) const;

パラメーター

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

解説

OLE にサイズを指定 HIMETRIC し、アプリケーションの自然なマッピング モードから変換する場合は、この関数を使用します。 デバイスのウィンドウとビューポートのエクステントが結果に影響します。

変換を行うには、まず、デバイス コンテキストの現在のマッピング単位を使用して論理ユニットをピクセルに変換してから、これらの単位を単位に HIMETRIC 変換します。

CDC::m_hAttribDC

この CDC オブジェクトの属性デバイス コンテキスト。

HDC m_hAttribDC;

解説

既定では、このデバイス コンテキストは m_hDC. 一般に、 CDC デバイス コンテキストからの情報を要求する GDI 呼び出しは m_hAttribDCCDCこれら 2 つのデバイス コンテキストの使用方法の詳細については、クラスの説明を参照してください。

CDC::m_hDC

この CDC オブジェクトの出力デバイス コンテキスト。

HDC m_hDC;

解説

既定では、m_hDC他のデバイス コンテキストがラップされているCDCのと同じですm_hAttribDC。 一般に、 CDC 出力を作成する GDI 呼び出しはデバイス コンテキストに m_hDC 移動します。 初期化し m_hDCm_hAttribDC さまざまなデバイスを指すことができます。 CDCこれら 2 つのデバイス コンテキストの使用方法の詳細については、クラスの説明を参照してください。

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) にマップされます。 これは、マスク ビットマップに一連のマスクが含まれている場合に便利です。アプリケーションは、ピクセル オフセットと送信される四角形のサイズを調整することによって、それらの任意の 1 つを mask-blitting タスクに簡単に MaskBlt適用できます。

CDC::ModifyWorldTransform

指定したモードを使用して、デバイス コンテキストのワールド変換を変更します。

BOOL ModifyWorldTransform(
    const XFORM& rXform,
    DWORD iMode);

パラメーター

rXform
指定されたデバイス コンテキストの XFORM ワールド変換を変更するために使用される構造体への参照。

iMode
変換データが現在のワールド変換を変更する方法を指定します。 このパラメーターで使用できる値の一覧については、次を参照してください ModifyWorldTransform

戻り値

成功した場合は 0 以外の値を返します。

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

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

解説

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

CDC::MoveTo

現在の位置を、指定した位置と y (または指定したx) ポイントに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 ブール 型 XOR (^) 演算子を使用して、コピー先ビットマップとパターンを組み合わせます。

  • DSTINVERT コピー先のビットマップを反転します。

  • BLACKNESS すべての出力を黒にします。

  • WHITENESS すべての出力を白にします。

戻り値

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

解説

パターンは、選択したブラシと、デバイスに既に存在するパターンの組み合わせです。 指定されたラスター演算コードは dwRop 、パターンを組み合わせる方法を定義します。 この関数にリストされているラスター演算は、完全な 256 個の三項ラスター演算コードの限られたサブセットです。特に、ソースを参照するラスター演算コードは使用できません。

すべてのデバイス コンテキストで関数がサポートされている PatBlt わけではありません。 デバイス コンテキストがサポートPatBltされているかどうかを確認するには、インデックスを使用してメンバー関数をGetDeviceCapsRASTERCAPS呼び出し、フラグの戻り値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 を返します。

解説

円弧の中心は、および (または by) でx1y2y1x2指定された外接する四角形の中心です。lpRect 円弧の始点と終点は、、x4y3(または by およびy4ptEnd) でx3ptStart指定されます。

円弧は選択したペンで描画され、反時計回りの方向に移動します。 各端点から円弧の中心まで、さらに 2 本の線が描画されます。 円の形の領域は、現在のブラシで塗りつぶされます。 等しいy3x4と等しいy4場合x3、結果は楕円の中心からポイント (、y3) または (x3x4, y4) までの単一の線を持つ楕円になります。

この関数によって描画される図は、上下の座標まで拡張されますが、含まれません。 これは、図の高さが図の幅であることをy2x1 - y1x2 - 意味します. 外接する四角形の幅と高さの両方が 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 を返します。

解説

メタファイルは、何度でも再生できます。

2 番目の PlayMetaFile バージョンでは、指定された拡張形式のメタファイルに格納されている画像が表示されます。 アプリケーションが 2 番目のバージョンをPlayMetaFile呼び出すと、Windows は拡張メタファイル ヘッダーの画像フレームを使用して、lpBounds パラメーターが指す四角形に画像をマップします。 (この図は、呼び出す PlayMetaFile前に出力デバイスにワールド変換を設定することで、せん断または回転させることができます。)四角形の端に沿ったポイントが図に含まれます。 拡張メタファイルを再生する前に出力デバイスでクリッピング領域を定義することで、拡張メタファイルの画像をクリップできます。

拡張メタファイルにオプションのパレットが含まれている場合、アプリケーションは、2 番目のバージョンの PlayMetaFile. オプションのパレットを取得するには、Windows 関数を使用します GetEnhMetaFilePaletteEntries 。 拡張メタファイルは、2 番目のバージョンの拡張メタファイルを呼び出し、新しい拡張メタファイルの PlayMetaFile デバイス コンテキストにソース拡張メタファイルを再生することで、新しく作成された拡張メタファイルに埋め込むことができます。

出力デバイス コンテキストの状態は、この関数によって保持されます。 拡張メタファイルで作成されたオブジェクトは削除されませんが、この関数によって削除されます。 この関数を停止するために、アプリケーションは別のスレッドから Windows 関数を CancelDC 呼び出して操作を終了できます。 この場合、関数は 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しているわけではありません。 詳細については、メンバー関数のラスター機能の RC_BITBLT 説明を CDC::GetDeviceCaps 参照してください。

ソースと宛先のデバイス コンテキストが互換性のないデバイスを表す場合は、 PlgBlt エラーを返します。

CDC::PolyBezier

1 つ以上のベジエ スプラインを描画します。

BOOL PolyBezier(
    const POINT* lpPoints,
    int nCount);

パラメーター

lpPoints
スプラインの POINT 終点と制御点を含むデータ構造の配列を指します。

nCount
配列内のポイント数を lpPoints 指定します。 各 Bzier スプラインには 2 つの制御点と終点が必要であり、最初のスプラインには別の開始点が必要であるため、この値は、描画するスプラインの数の 3 倍以上である必要があります。

戻り値

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

解説

この関数は、パラメータで指定された端点と制御点を使用して、三次ベジエスプラインを lpPoints 描画します。 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 を返します。

解説

この関数は、パラメーターで指定された制御点を使用して、3 次ベジエ スプラインを lpPoints 描画します。 最初のスプラインは、コントロール ポイントとして最初の 2 つの点を使用して、現在の位置から 3 番目のポイントに描画されます。 後続のスプラインごとに、関数にはさらに 3 つの点が必要であり、前のスプラインの終点を次のスプラインの開始点として使用します。 PolyBezierTo は、現在位置を最後の Bzier スプラインの終点に移動します。 図は塗りつぶされていません。 この関数は、現在のペンを使用して線を描画します。

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

CDC::PolyDraw

一連の線分とベジエ スプラインを描画します。

BOOL PolyDraw(
    const POINT* lpPoints,
    const BYTE* lpTypes,
    int nCount);

パラメーター

lpPoints
各線分の POINT 端点と、各 Bzier スプラインの終点と制御点を含むデータ構造の配列を指します。

lpTypes
配列内の各ポイントの使用方法を指定する配列を lpPoints 指します。 値には、次のいずれかを指定できます。

  • PT_MOVETO このポイントが不整合な図形を開始することを指定します。 このポイントが新しい現在位置になります。

  • PT_LINETO 現在の位置からこのポイントまでの線を描画し、新しい現在位置になるように指定します。

  • PT_BEZIERTO この点が、Bzier スプラインのコントロール ポイントまたは終了点であることを指定します。

PT_BEZIERTO 型は常に 3 つのセットで発生します。 現在位置は、Bzier スプラインの開始点を定義します。 最初の 2 つの PT_BEZIERTO ポイントはコントロール ポイント、3 番目 PT_BEZIERTO のポイントは終点です。 終点が新しい現在位置になります。 連続 PT_BEZIERTO するポイントが 3 つない場合は、エラーが発生します。

A PT_LINETO または PT_BEZIERTO 型を次の定数と組み合わせるには、ビットごとの演算子 OR を使用して、対応するポイントが図の最後のポイントであり、図形が閉じていることを示します。

  • PT_CLOSEFIGUREこの点のまたはPT_BEZIERTOタイプが完了した後、図形がPT_LINETO自動的に閉じられることを指定します。 線は、この点から最新 PT_MOVETO の点 MoveTo に描画されます。

    このフラグは、ビットごとの OR 演算子をPT_LINETO使用して、線の種類、または Bzier スプラインの終了点の種類とPT_BEZIERTO組み合わされます。 現在位置は、終了ラインの終点に設定されます。

nCount
配列内 lpPoints のバイト数と同じ、配列内のポイントの合計数を lpTypes 指定します。

戻り値

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

解説

この関数を使用すると、,,およびメンバー関数への連続した呼び出しCDC::PolyBezierToの代わりに、不整合な数値をCDC::MoveToCDC::LineTo描画できます。 線とスプラインは現在のペンを使用して描画され、図形は塗りつぶされません。 メンバー関数を呼び出 CDC::BeginPath して開始されたアクティブなパスがある場合は、 PolyDraw パスに追加します。 配列にlpPoints含まれるポイントは、lpTypes各ポイントが演算の一部であるか、CDC::LineToまたはCDC::BezierTo演算のCDC::MoveTo一部であるかを示します。 また、数字を閉じることもできます。 この関数は、現在の位置を更新します。

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

CDC::Polygon

現在のペンを使用して、線で接続された 2 つ以上のポイント (頂点) で構成される多角形を描画します。

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

パラメーター

lpPoints
多角形の頂点を指定するポイントの配列を指します。 配列内の各ポイントは構造体 POINT またはオブジェクトです CPoint

nCount
配列内の頂点の数を指定します。

戻り値

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

解説

必要に応じて、最後の頂点から最初の頂点までの線を描画することで、多角形が自動的に閉じられます。

現在の多角形塗りつぶしモードは、およびSetPolyFillModeメンバー関数をGetPolyFillMode使用して取得または設定できます。

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
接続する構造体またはCPointオブジェクトのPOINT配列を指します。

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
整数の配列を指し、それぞれが配列内の 1 つの多角形内のポイント数を lpPoints 指定します。

nCount
lpPolyCounts 配列内のエントリの数です。 この数は、描画する多角形の数を指定します。 この値は少なくとも 2 である必要があります。

戻り値

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

解説

多角形は、不整合または重複している可能性があります。

関数の呼び出しで指定された各ポリゴンは PolyPolygon 閉じる必要があります。 メンバー関数によって Polygon 作成されたポリゴンとは異なり、作成された PolyPolygon ポリゴンは自動的に閉じられません。

この関数は、2 つ以上の多角形を作成します。 単一の多角形を作成するには、アプリケーションでメンバー関数を使用する Polygon 必要があります。

現在の多角形塗りつぶしモードは、およびSetPolyFillModeメンバー関数をGetPolyFillMode使用して取得または設定できます。

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 を返します。

解説

四角形の内部は、現在のブラシを使用して塗りつぶされます。

四角形は右と下の座標まで拡張されますが、含まれません。 これは、四角形の高さが 1 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

このメンバー関数を呼び出して NULL に設定 m_hAttribDC します。

virtual void ReleaseAttribDC();

解説

これにより、エラーは Detach 発生しません。 出力デバイス コンテキストのみがオブジェクトに CDC アタッチされ、デタッチできるのはそのコンテキストだけです。

CDC::ReleaseOutputDC

このメンバー関数を呼び出して、メンバーNULLm_hDC .

virtual void ReleaseOutputDC();

解説

出力デバイス コンテキストがオブジェクトにアタッチされている CDC 場合、このメンバー関数を呼び出すことはできません。 メンバー関数を Detach 使用して、出力デバイス コンテキストをデタッチします。

CDC::ResetDC

このメンバー関数を呼び出して、オブジェクトによってラップされたデバイス コンテキストを CDC 更新します。

BOOL ResetDC(const DEVMODE* lpDevMode);

パラメーター

lpDevMode
Windows DEVMODE 構造体へのポインター。

戻り値

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

解説

デバイス コンテキストは、Windows DEVMODE 構造体で指定された情報から更新されます。 このメンバー関数は、属性デバイス コンテキストのみをリセットします。

通常、アプリケーションは、ウィンドウがメッセージを ResetDC 処理するときにメンバー関数を WM_DEVMODECHANGE 使用します。 このメンバー関数を使用して、ドキュメントの印刷中に用紙の向きや用紙ビンを変更することもできます。

このメンバー関数を使用して、ドライバー名、デバイス名、または出力ポートを変更することはできません。 ユーザーがポート接続またはデバイス名を変更する場合は、元のデバイス コンテキストを削除し、新しい情報を含む新しいデバイス コンテキストを作成する必要があります。

このメンバー関数を呼び出す前に、デバイス コンテキストで選択されたすべてのオブジェクト (ストック オブジェクト以外) が選択されていることを確認する必要があります。

CDC::RestoreDC

によって識別された以前の状態にデバイス コンテキストを nSavedDC復元します。

virtual BOOL RestoreDC(int nSavedDC);

パラメーター

nSavedDC
復元するデバイス コンテキストを指定します。 前 SaveDC の関数呼び出しによって返される値を指定できます。 1 の場合 nSavedDC 、最後に保存されたデバイス コンテキストが復元されます。

戻り値

指定したコンテキストが復元された場合は 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
x 座標 point は、丸い角を描画する楕円の幅を (論理単位で) 指定します。 y 座標 point は、丸い角を描画する楕円の高さを (論理単位で) 指定します。 このパラメーターには、 POINT 構造体またはオブジェクトを CPoint 渡すことができます。

戻り値

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

解説

四角形の内部は、現在のブラシを使用して塗りつぶされます。

この関数が描画する図は、上下の座標まで拡張されますが、含まれません。 これは、図の高さが図の幅であることをy2x1 - y1x2 - 意味します. 外接する四角形の高さと幅の両方が 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。

解説

あるNULL場合lpRectUpdate、Windows は更新四角形を計算しません。 両方 pRgnUpdatelpRectUpdate 場合、 NULLWindows は更新リージョンを計算しません。 そうでないNULL場合pRgnUpdate、Windows はスクロール プロセス (メンバー関数によって定義) によって発見された領域への有効なポインターがScrollDC含まれていると見なします。 必要に応じて、返される lpRectUpdate 更新リージョンを CWnd::InvalidateRgn 渡すことができます。

アプリケーションは、ウィンドウのクライアント領域全体を ScrollWindow スクロールする必要がある場合に、クラス CWnd のメンバー関数を使用する必要があります。 それ以外の場合は 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 新しいクリッピング領域には、重複する境界線はありません。

解説

Class CDC には、ペン、ブラシ、フォント、ビットマップ、領域など、特定の種類の GDI オブジェクトに特化した 5 つのバージョンが用意されています。 新しく選択したオブジェクトは、同じ型の前のオブジェクトを置き換えます。 たとえば、オブジェクトを指すCPen一般的なバージョンのSelectObject場合pObject、関数は現在のペンを指定したpObjectペンに置き換えます。

アプリケーションは、一度に 1 つのメモリ デバイス コンテキストにのみ、および 1 つのメモリ デバイス コンテキストにのみビットマップを選択できます。 ビットマップの形式はモノクロであるか、デバイス コンテキストと互換性がある必要があります。そうでない場合は、 SelectObject エラーを返します。

Windows 3.1 以降では、メタファイルで使用されているかどうかにかかわらず、 SelectObject 関数は同じ値を返します。 以前のバージョンの Windows では、成功した場合は 0 以外の値が返され、 SelectObject メタファイルで使用された場合は失敗した場合は 0 が返されていました。

CDC::SelectPalette

デバイス コンテキストの選択したパレット オブジェクトとして指定 pPalette された論理パレットを選択します。

CPalette* SelectPalette(
    CPalette* pPalette,
    BOOL bForceBackground);

パラメーター

pPalette
選択する論理パレットを識別します。 このパレットは、メンバー関数CreatePaletteで既にCPalette作成されている必要があります。

bForceBackground
論理パレットを強制的に背景パレットにするかどうかを指定します。 0 以外の場合 bForceBackground 、ウィンドウに入力フォーカスがあるかどうかに関係なく、選択したパレットは常に背景パレットになります。 0 で、デバイス コンテキストがウィンドウにアタッチされている場合 bForceBackground 、論理パレットは、ウィンドウに入力フォーカスがある場合にフォアグラウンド パレットになります。

戻り値

で指定されたCPalettepPaletteパレットに置き換えられた論理パレットを識別するオブジェクトへのポインター。 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 。 代わりに、パラメーターと共に関数をSystemParametersInfoSPI_GETNONCLIENTMETRICS使用して、現在のフォントを取得します。 SystemParametersInfoでは、現在のテーマが考慮され、キャプション、メニュー、メッセージ ダイアログのフォント情報が提供されます。

  • SYSTEM_FIXED_FONT バージョン 3.0 より前の Windows で使用される固定幅のシステム フォント。 このオブジェクトは、以前のバージョンの Windows との互換性のために使用できます。

  • DEFAULT_PALETTE 既定のカラー パレット。 このパレットは、システム パレットの 20 個の静的な色で構成されます。

戻り値

関数が成功した場合に CGdiObject 置き換えられたオブジェクトへのポインター。 指されている実際のオブジェクトは、a CPenCBrush、または CFont オブジェクトです。 呼び出しが失敗した場合、戻り値は NULL です。

CDC::SetAbortProc

印刷ジョブの中止手順をインストールします。

int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));

パラメーター

lpfn
中止プロシージャとしてインストールする abort 関数へのポインター。 コールバック関数の詳細については、「コールバック関数」をCDC::SetAbortProc参照してください

戻り値

関数の結果を 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 例外をトラップする必要があります。 例外の詳細については、例外に関する記事を参照してください。

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_ACCUMULATE 外接する四角形に指定された lpRectBounds 四角形を追加します (四角形和集合演算を使用)。

  • 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) です。 ブラシの原点を変更するには、オブジェクトの関数CBrushUnrealizeObject呼び出し、呼び出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
デバイス コンテキスト レイアウトとビットマップ コントロール フラグ。 次の値を組み合わせて使用できます。

Value 意味
LAYOUT_BITMAPORIENTATIONPRESERVED への呼び出しにCDC::StretchBlt対するリフレクションをCDC::BitBlt無効にします。
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 を設定しても、現在のウィンドウやビューポートの設定は変更されません。 単位、向き、およびスケーリングを変更するには、およびSetViewportExtメンバー関数をSetWindowExt呼び出します。

  • MM_HIENGLISH 各論理ユニットは 0.001 インチに変換されます。 正の x は右です。正の y が上に表示されます。

  • MM_HIMETRIC 各論理ユニットは 0.01 ミリメートルに変換されます。 正の x は右です。正の y が上に表示されます。

  • MM_ISOTROPIC 論理単位は、等しく拡大縮小された軸を持つ任意の単位に変換されます。つまり、x 軸に沿った 1 単位は、y 軸に沿って 1 単位に等しくなります。 必要な単位と軸の SetWindowExt 向きを指定するには、and 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

DC (デバイス コンテキスト) を右から左のレイアウトに変更するために呼び出 SetLayout すと、 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しているかどうかを確認するには、インデックスを使用してメンバー関数をGetDeviceCapsRASTERCAPS呼び出し、フラグの戻り値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 を返します。

解説

ポイントは、クリッピング領域とデバイス サーフェスの可視部分の両方にある必要があります。 すべてのデバイスがメンバー関数をサポートしているわけではありません。 詳細については、メンバー関数の RC_BITBLT 機能を CDC::GetDeviceCaps 参照してください。 SetPixelV は、描画されたポイントの色の値を返す必要がないため、より SetPixel 高速です。

CDC::SetPolyFillMode

多角形塗りつぶしモードを設定します。

int SetPolyFillMode(int nPolyFillMode);

パラメーター

nPolyFillMode
新しい塗りつぶしモードを指定します。 この値は、次のいずれかまたは WINDING1 つALTERNATEになります。 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
ストレッチ モードを指定します。 次のいずれかの値を指定できます。

Value 説明
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) モードは、モノクロ ビットマップで前景ピクセルを保持するために使用されます。 (COLORONCOLORSTRETCH_DELETESCANS) モードは、通常、カラー ビットマップの色を保持するために使用されます。

このモードでは HALFTONE 、他の 3 つのモードよりもソース イメージの処理が多くなります。他のモードよりも遅くなりますが、より高品質の画像が生成されます。 また、 SetBrushOrgEx ブラシのずれを避けるためにモードを HALFTONE 設定した後に呼び出す必要があります。

デバイス ドライバーの機能によっては、より多くのストレッチ モードも使用できる場合があります。

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。

解説

およびExtTextOutメンバー関数はTextOut、テキストの文字列をディスプレイまたはデバイスに配置するときに、これらのフラグを使用します。 フラグは、特定のポイントとテキストを囲む四角形の間のリレーションシップを指定します。 この点の座標は、メンバー関数に TextOut パラメーターとして渡されます。 テキストの境界となる四角形は、テキスト文字列内の隣接する文字セルによって形成されます。

CDC::SetTextCharacterExtra

文字間の間隔を設定します。

int SetTextCharacterExtra(int nCharExtra);

パラメーター

nCharExtra
各文字に追加する余分なスペースの量を論理単位で指定します。 現在のマッピング モードがない MM_TEXT場合は、 nCharExtra 変換され、最も近いピクセルに丸められます。

戻り値

前の文字間の間隔の量。

解説

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

CDC::SetTextColor

テキストの色を指定した色に設定します。

virtual COLORREF SetTextColor(COLORREF crColor);

パラメーター

crColor
テキストの色を RGB カラー値として指定します。

戻り値

前のテキストの色の RGB 値。

解説

システムは、このデバイス コンテキストにテキストを書き込むときに、また、色とモノクロのデバイス コンテキストの間でビットマップを変換するときにも、このテキストの色を使用します。

デバイスが指定された色を表すことができない場合、システムはテキストの色を最も近い物理色に設定します。 文字の背景色は、およびSetBkModeメンバー関数によってSetBkColor指定されます。

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

CDC::SetTextJustification

文字列の区切り文字にスペースを追加します。

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

パラメーター

nBreakExtra
テキスト行に追加する余分な領域の合計を (論理単位で) 指定します。 現在のマッピング モードがない MM_TEXT場合、このパラメーターによって指定された値は現在のマッピング モードに変換され、最も近いデバイス単位に丸められます。

nBreakCount
行内の区切り文字の数を指定します。

戻り値

関数が成功した場合は 1 つ。それ以外の場合は 0。

解説

アプリケーションは、メンバー関数を GetTextMetrics 使用してフォントの区切り文字を取得できます。

メンバー関数が SetTextJustification 呼び出されると、テキスト出力関数 (など TextOut) の呼び出しによって、指定された区切り文字の数に対して、指定した余分な領域が均等に分散されます。 通常、区切り文字はスペース文字 (ASCII 32) ですが、フォントで他の文字として定義できます。

通常、メンバー関数 GetTextExtentSetTextJustification. GetTextExtent は、配置前の特定の線の幅を計算します。 アプリケーションは、配置後の文字列の幅から返されるGetTextExtent値をnBreakExtra減算することで、パラメーターで指定する領域の量を決定できます。

この SetTextJustification 関数を使用すると、異なるフォントで複数の実行を含む行を配置できます。 この場合、各実行を個別に配置して書き込むことで、行を段階的に作成する必要があります。

アライメント中に丸めエラーが発生する可能性があるため、システムは現在のエラーを定義する実行中のエラー用語を保持します。 複数の実行を含む行を配置する場合は、 GetTextExtent 次の実行の範囲を計算するときに、このエラー用語が自動的に使用されます。 これにより、テキスト出力関数でエラーを新しい実行にブレンドできます。

各行が揃ったら、このエラー用語をクリアして、次の行に組み込まれないようにする必要があります。 この用語は、0 に設定された呼び出しSetTextJustificationnBreakExtraによってクリアできます。

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 、アプリケーションは呼び出す前にメンバー関数を SetWindowExt 呼び出す SetViewportExt必要があります。

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 、アプリケーションは呼び出す前にメンバー関数を SetWindowExt 呼び出す SetViewportExt必要があります。

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

新しい印刷ジョブが開始され、呼び出しが発生するまで、後続 StartPage のすべての呼び出しと呼び出し EndPage を同じジョブでスプールする必要があることをデバイス ドライバーに EndDoc 通知します。

int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);

パラメーター

lpDocInfo
ドキュメント ファイルの DOCINFO 名前と出力ファイルの名前を含む構造体を指します。

lpszDocName
ドキュメント ファイルの名前を含む文字列へのポインター。

戻り値

関数が成功した場合、戻り値は 0 より大きくなります。 この値は、ドキュメントの印刷ジョブ識別子です。

関数が失敗した場合、戻り値は 0 以下になります。

解説

これにより、1 ページより長いドキュメントが他のジョブと混在することがなくなります。

Windows バージョン 3.1 以降の場合、この関数はプリンターのエスケープを STARTDOC 置き換えます。 この関数を使用すると、複数のページを含むドキュメントが他の印刷ジョブと混在しないようにします。

StartDoc メタファイル内では使用しないでください。

このコード フラグメントは、既定のプリンターを取得し、印刷ジョブを開き、"Hello, World!" を含む 1 ページをスプールします。 このコードによって印刷されるテキストはプリンターの論理単位にスケーリングされないため、出力テキストは、結果が読み取れないような小さな文字になっている可能性があります。 などの CDC スケーリング関数SetMapModeSetViewportOrgSetWindowExtを使用して、スケーリングを修正できます。

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は、エスケープとBANDINFONEWFRAMEき換えられます。

一連の印刷呼び出しの概要については、メンバー関数を StartDoc 参照してください。

システムは、次の呼び出しの間にResetDCメンバー関数をStartPageEndPage無効にします。

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 ブール値 AND 演算子を使用して、パターンとソース ビットマップを結合します。

  • MERGEPAINT ブール 型 OR 演算子を使用して、反転元ビットマップとコピー先ビットマップを結合します。

  • NOTSRCCOPY 反転されたソース ビットマップをコピー先にコピーします。

  • NOTSRCERASE Boolean OR 演算子を使用して、変換先ビットマップとソース ビットマップを組み合わせた結果を反転します。

  • PATCOPY パターンをコピー先のビットマップにコピーします。

  • PATINVERT ブール 型 XOR 演算子を使用して、コピー先ビットマップとパターンを組み合わせます。

  • PATPAINT ブール 型 OR 演算子を使用して、反転されたソース ビットマップをパターンと組み合わせます。 ブール 型 OR 演算子を使用して、この操作の結果をコピー先ビットマップと組み合わせます。

  • SRCAND Boolean AND 演算子を使用して、コピー先ビットマップとソース ビットマップのピクセルを結合します。

  • SRCCOPY コピー元ビットマップをコピー先ビットマップにコピーします。

  • SRCERASE コピー先のビットマップを反転し、Boolean AND 演算子を使用して結果をソース ビットマップと結合します。

  • SRCINVERT Boolean XOR 演算子を使用して、コピー先ビットマップとソース ビットマップのピクセルを結合します。

  • SRCPAINT Boolean OR 演算子を使用して、コピー先ビットマップとソース ビットマップのピクセルを結合します。

  • WHITENESS すべての出力を白にします。

戻り値

ビットマップが描画された場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、コピー先デバイス コンテキストの伸縮モード (SetStretchBltMode で設定) を使用して、ビットマップを拡大または縮小する方法を決定します。

この関数は StretchBlt 、指定されたソース デバイス pSrcDC から、メンバー関数が呼び出されているデバイス コンテキスト オブジェクトによって表される宛先デバイスにビットマップを移動します。 、ySrcnSrcWidthおよびnSrcHeightパラメーターはxSrc、ソース四角形の左上隅と寸法を定義します。 、ynWidthおよびnHeightパラメーターはx、変換先の四角形の左上隅と寸法を示します。 指定されたラスター演算によって dwRop 、ソース ビットマップと宛先デバイス上に既に存在するビットの組み合わせ方法が定義されます。

関数はStretchBlt、およびパラメーター nSrcHeightnHeightの符号が異なる場合に、ビットマップのミラーイメージをnWidthnSrcWidth作成します。 記号がnWidth異なる場合nSrcWidth、関数は x 軸に沿ってビットマップのミラーイメージを作成します。 記号がnHeight異なる場合nSrcHeight、関数は y 軸に沿ってビットマップのミラーイメージを作成します。

StretchBlt 関数は、メモリ内のコピー元ビットマップを拡大または縮小し、その結果をコピー先にコピーします。 パターンを結果とマージする場合、ストレッチされたソース ビットマップがコピー先にコピーされるまで、そのパターンはマージされません。 ブラシが使用されている場合は、ターゲット デバイス コンテキストで選択されているブラシです。 コピー先の座標は、コピー先デバイス コンテキストに従って変換されます。コピー元の座標は、コピー元デバイス コンテキストに従って変換されます。

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

モノクロ ビットマップをカラーに変換する必要がある場合、StretchBlt は白のビット (1) を背景色に、黒のビット (0) を前景色に設定します。 カラーをモノクロに変換するには、背景色に一致するピクセルを白 (1) に設定し、その他のすべてのピクセルを黒 (0) に設定します。 カラーのデバイス コンテキストの前景色と背景色は使用されます。

一部のデバイスでは、StretchBlt 関数がサポートされていません。 デバイスがサポートStretchBltしているかどうかを確認するには、インデックスを使用してメンバー関数をGetDeviceCapsRASTERCAPS呼び出し、フラグの戻り値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 文字列の次元 (論理単位)。

解説

テキストは現在選択されているフォントで書き込まれます。 0 のlpnTabStopPositions場合nTabPositions、タブはNULL平均文字幅の 8 倍に展開されます。

1 の場合 nTabPositions 、タブ位置は配列の最初の値で指定された距離で lpnTabStopPositions 区切われます。 配列に lpnTabStopPositions 複数の値が含まれている場合は、配列内の各値に対してタブ位置が設定され nTabPositions、次で指定した数まで設定されます。 この nTabOrigin パラメーターを使用すると、アプリケーションは 1 行に対して TabbedTextOut 関数を複数回呼び出すことができます。 アプリケーションが毎回同じ値に設定された関数を複数回 nTabOrigin 呼び出す場合、関数は指定された nTabOrigin位置を基準にしてすべてのタブを展開します。

既定では、現在の位置は関数によって使用または更新されません。 アプリケーションが関数の呼び出し時に現在位置を更新する必要がある場合、アプリケーションはメンバー関数nFlagsSetTextAlign次の値に設定してTA_UPDATECP呼び出すことができます。 このフラグが設定されている場合、Windows は、代わりに現在の位置をx使用して、後続の呼び出しTabbedTextOutのパラメーターと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し時に現在位置を更新する必要がある場合、アプリケーションはメンバー関数nFlagsSetTextAlign 〗に設定してTA_UPDATECP呼び出すことができます。 このフラグが設定されている場合、Windows は、代わりに現在の位置をx使用して、後続の呼び出しTextOutのパラメーターと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 クラス