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 このオブジェクトに Windows デバイスコンテキストをアタッチ CDC します。
CDC::BeginPath デバイスコンテキストでパスの角かっこを開きます。
CDC::BitBlt 指定されたデバイスコンテキストからビットマップをコピーします。
CDC::Chord 弦を描画します (閉じた図形は、楕円と線分の交差部分によって制限されます)。
CDC::CloseFigure パス内の開いている図形を閉じます。
CDC::CreateCompatibleDC 別のデバイスコンテキストと互換性のあるメモリデバイスコンテキストを作成します。 これを使用して、メモリ内のイメージを準備することができます。
CDC::CreateDC 特定のデバイスのデバイスコンテキストを作成します。
CDC::CreateIC 特定のデバイスの情報コンテキストを作成します。 これにより、デバイスコンテキストを作成せずに、デバイスに関する情報をすばやく取得することができます。
CDC::DeleteDC このオブジェクトに関連付けられている Windows デバイスコンテキストを削除し CDC ます。
CDC::DeleteTempMap CWinApp CDC によって作成された一時オブジェクトを削除するために、アイドルタイムハンドラーによって呼び出され FromHandle ます。 また、デバイスコンテキストもデタッチします。
CDC::Detach Windows デバイスコンテキストをこのオブジェクトからデタッチ CDC します。
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 Intercharacter スペーシングの量の現在の設定を取得します。
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 四角形と三角形の構造体を gradating の色で塗りつぶします。
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つまたは複数のベジエスプラインを描画し、現在位置を最後のベジエスプラインの終了点に移動します。
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 によって提供される、定義済みのストックペン、ブラシ、またはフォントの1つを選択します。
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 文字列内の break 文字にスペースを追加します。
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 コンテキスト。

Remarks

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

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

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

注意

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

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

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

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

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

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

を使用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 ユーザーが印刷マネージャーを使用してジョブを終了しました。

Remarks

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

AbortDoc を使用して、次の操作を終了する必要があります。

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

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

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

ユーザーが印刷操作を取り消すダイアログ ボックスを表示する場合は、ダイアログ ボックスを破棄する前に を呼び AbortDoc 出す必要があります。

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

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

CDC::AbortPath

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

BOOL AbortPath();

戻り値

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

Remarks

デバイス コンテキストにオープン パス の角かっこがある場合、パス ブラケットは閉じ、パスは破棄されます。 デバイス コンテキストに閉じたパスがある場合、パスは破棄されます。

CDC::AddMetaFileComment

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

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

パラメーター

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

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

戻り値

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

Remarks

コメントには、画像のソースや作成日など、すべての個人情報が含まれる場合があります。 コメントは、アプリケーション署名で始まり、その後にデータが続く必要があります。 コメントには、位置固有のデータを含めずにしてください。 位置固有のデータは、レコードの場所を指定します。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

Remarks

AlphaBlend詳細については、Windows SDK の「」を参照してください。

CDC::AngleArc

直線セグメントと円弧を描画します。

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

パラメーター

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

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

nRadius
円の半径を論理単位で指定します。 必ず正の値を指定します。

fStartAngle
X 軸に対する角度の開始角度を指定します。

fSweepAngle
開始角度を基準としたスイープ角度 (度単位) を指定します。

戻り値

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

Remarks

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

AngleArc 現在位置を円弧の終了点に移動します。この関数によって描画される円弧は、現在の変換およびマッピングモードに応じて、楕円として表示される場合があります。 円弧を描画する前に、この関数は、現在の位置から円弧の先頭までの直線セグメントを描画します。円弧は、指定された中心点を中心に指定された半径を持つ虚数円を構築することによって描画されます。 円弧の開始点は、円の x 軸から開始角度の角度で反時計回りに計測することによって決定されます。 終了点は同様に、始点からスイープ角度の度数で反時計回りに計測します。

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

CDC::Arc

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

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

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

パラメーター

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

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

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

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

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

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

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

y4
円弧のエンドポイント (論理単位) を定義する点の y 座標を指定します。 この点は、円弧上に正確に配置する必要はありません。

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

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

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

戻り値

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

Remarks

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

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

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

Remarks

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

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

CDC::Attach

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

BOOL Attach(HDC hDC);

パラメーター

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

戻り値

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

Remarks

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

CDC::BeginPath

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

BOOL BeginPath();

戻り値

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

Remarks

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

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

// 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 がどのように組み合わせるかを定義します。 BitBltのラスター操作コード dwRop とその説明の一覧については、Windows SDK の「」を参照してください。

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

戻り値

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

Remarks

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

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

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

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

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

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

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

CDC::CDC

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

CDC();

CDC::Chord

弦を描画します (閉じた図形は、楕円と線分の交差部分によって制限されます)。

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

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

パラメーター

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

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

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

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

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

y3
弦の開始点 (論理単位) を定義する点の y 座標を指定します。

x4
弦のエンドポイント (論理単位) を定義する点の x 座標を指定します。

y4
弦のエンドポイントを定義する点の y 座標 (論理単位) を指定します。

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

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

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

戻り値

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

Remarks

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

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

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

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

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

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

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

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

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

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

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

CDC::CloseFigure

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

BOOL CloseFigure();

戻り値

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

Remarks

関数は、現在の位置から図形の最初の点まで (通常は、メンバー関数への最後の呼び出しで指定されたポイント)、直線結合スタイルを使用して線を結ぶことにより、図を閉じ MoveTo ます。 ではなくメンバー関数を使用して図形を閉じた場合、終端のキャップを使用して結合では LineTo CloseFigure なくコーナーが作成されます。 CloseFigure デバイスコンテキストに開いているパスの角かっこがある場合にのみ、を呼び出す必要があります。

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

CDC::CreateCompatibleDC

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

BOOL CreateCompatibleDC(CDC* pDC);

パラメーター

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

戻り値

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

Remarks

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

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

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

// 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 デバイス固有の初期化データを含む 構造体をポイントします。 関数 DocumentProperties Windows、特定のデバイスに入力されたこの構造体を取得します。 パラメーター lpInitData は、デバイス ドライバーが、ユーザーが指定した既定の初期化 (指定されている場合) をデバイス ドライバーで使用する場合 NULL コントロール パネル。

戻り値

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

Remarks

構造体 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
デバイス ドライバーのデバイス固有の初期化データをポイントします。 パラメーター lpInitData は、デバイス ドライバーが、ユーザーが指定した既定の初期化 (指定されている場合) をデバイス ドライバーで使用する場合 NULL コントロール パネル。 デバイス CreateDC 固有の初期化については、データ形式に関するページを参照してください。

戻り値

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

Remarks

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

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

CDC::DeleteDC

一般に、この関数は呼び出しません。デストラクターによって自動的に実行されます。

BOOL DeleteDC();

戻り値

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

Remarks

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

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

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

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

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

CDC::DeleteTempMap

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

static void PASCAL DeleteTempMap();

CDC::Detach

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

HDC Detach();

戻り値

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

CDC::DPtoHIMETRIC

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

void DPtoHIMETRIC(LPSIZE lpSize) const;

パラメーター

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

Remarks

デバイス コンテキスト オブジェクトのマッピング モードが 、または の場合、変換は物理インチのピクセル数 MM_LOENGLISH MM_HIENGLISH MM_LOMETRIC MM_HIMETRIC に基づいて行います。 マッピング モードが他の非制約モード (例: ) の場合、変換は論理インチのピクセル数に MM_TEXT 基づいて行います。

CDC::DPtoLP

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

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

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

パラメーター

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

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

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

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

Remarks

関数は、デバイス座標系から 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 次元四角形の高さを指定します。

Remarks

四角形は、 で指定された色の上辺と左辺、および で指定された色の下辺と右辺 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 トーン ブラシを使用するには、 を に設定します。

Remarks

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

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

CDC::DrawEdge

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

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

パラメーター

lpRect
RECT四角形の論理座標を格納している構造体へのポインター。

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

nFlags
描画する境界線の種類を指定するフラグ。 DrawEdgeパラメーターの値のテーブルについては、Windows SDK の「」を参照してください。 斜線の場合、フラグは、 BF_RECT 四角形のパラメーターによって制限されたベクトルの終点を指定します。

戻り値

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

CDC::DrawEscape

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

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

パラメーター

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

nInputSize
パラメーターによってポイントされるデータのバイト数を指定し lpszInputData ます。

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

戻り値

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

Remarks

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

CDC::DrawFocusRect

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

void DrawFocusRect(LPCRECT lpRect);

パラメーター

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

Remarks

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

注意事項

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

CDC::DrawFrameControl

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

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

パラメーター

lpRect
RECT四角形の論理座標を格納している構造体へのポインター。

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

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

戻り値

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

Remarks

いくつかの場合、は 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です。

Remarks

関数は、およびで指定された位置にアイコンの左上隅を置き x y ます。 場所は、デバイスコンテキストの現在のマッピングモードに従います。

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

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

CDC::DrawState

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

注意

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

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
イメージの種類と状態を指定するフラグ。 DrawState使用可能な nFlags の型と状態については、Windows SDK の「」を参照してください。

hBrush
ブラシを処理するハンドル。

pBitmap
CBitmap オブジェクトへのポインター。

pBrush
CBrush オブジェクトへのポインター。

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

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

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

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

lpDrawProc
イメージのレンダリングに使用されるコールバック関数へのポインター。 のイメージの種類が の場合、このパラメーターは必須 nFlags です DST_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
描画する文字列をポイントします。 が nCount -1 の場合、文字列は null で終了する必要があります。

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

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

str
描画 CString する指定した文字を格納している オブジェクト。

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

注意

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

戻り値

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

Remarks

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

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

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

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

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

テキストの色は、 で設定できます CDC::SetTextColor

CDC::DrawTextEx

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

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

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

パラメーター

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

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

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

str
描画 CString する指定した文字を格納している オブジェクト。

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

注意

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

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

Remarks

タブを適切なスペースに展開し、テキストを指定された四角形の左、右、または中央に配置し、テキストを特定の四角形内に収まる行に分割することで、テキストの書式を設定します。 書式設定の種類は、 と で指定 nFormat されます lpDTParams 。 詳細については、SDK の CDC::DrawText および DrawTextEx に関するページWindowsしてください。

テキストの色は、 で設定できます 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 を返します。

Remarks

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

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

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

CDC::EndDoc

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

int EndDoc();

戻り値

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

Remarks

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

アプリケーションで印刷エラーまたは印刷操作の取り消しが発生した場合は、 または を使用して操作を終了しようとし EndDoc てみることができます AbortDoc 。 GDI は、エラー値を返す前に操作を自動的に終了します。

この関数はメタファイル内では使用できません。

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

CDC::EndPage

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

int EndPage();

戻り値

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

Remarks

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

このメンバー関数は、プリンター エスケープを 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
アプリケーションによって提供されるデータをポイントします。 データは、オブジェクト情報と共にコールバック関数に渡されます。

戻り値

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

Remarks

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

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

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

int CALLBACK EXPORT AFunction (LPSTR 、LPSTR);

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

Microsoft Foundation プログラムをコンパイルする場合は、通常、 および コンパイラ /GA オプションを /GEs 使用します。 コンパイラ /Gw オプションは、Microsoft Foundation クラスでは使用されません。 (Windows 関数 を使用する場合は、返された関数ポインターを から、この API で必要な型に明示的にキャスト MakeProcInstance 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 Escape SDK」を参照してください。

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

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

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

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

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

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

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

戻り値

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

  • SP_ERROR 一般的なエラー。

  • SP_OUTOFDISK 現在、スプーリングに使用できるディスク領域が十分ではなく、使用できる領域はこれ以上はありません。

  • SP_OUTOFMEMORY スプーリングに使用できるメモリが十分ではありません。

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

Remarks

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

Win32 プログラミングでは、対応するプリンター エスケープより後の 6 つのメンバー CDC 関数が提供されます。

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

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

アプリケーションで定義済みのエスケープ値を使用する場合は、最初のバージョンを使用します。 アプリケーションでプライベート エスケープ値が定義されている場合は、2 番目のバージョンを使用します。 2 ExtEscape 番目のバージョンWindowsについては、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 領域には、重なり合う境界線はありません。

Remarks

の絶対値で指定される四角形の幅は 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。

Remarks

このメンバー関数は、 で塗りつぶしの種類 FloodFill を指定できるので、 よりも柔軟性が高い機能です nFillType

nFillType に設定 FLOODFILLBORDER されている場合、領域は で指定された色で完全に境界付けされたと見なされます crColor 。 関数は、 と で指定された位置から始まり、色 x y の境界までのすべての方向に塗りつぶした値です。

が に設定されている場合、関数は で指定された位置から始まり、すべての方向に続き、 で指定された色を含む隣接する領域すべてが nFillType FLOODFILLSURFACE 塗り x y 分けされます crColor

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

CDC::ExtTextOut

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

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

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

パラメーター

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

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

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

  • ETO_CLIPPED テキストが四角形にクリップされます。

  • ETO_OPAQUE 現在の背景色が四角形に塗り分け合うのを指定します。 (メンバー関数と メンバー関数を使用して、現在の背景色を SetBkColor 設定 GetBkColor してクエリを実行できます)。

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

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

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

lpDxWidths
隣接する文字セルの原点間の距離を示す値の配列をポイントします。 たとえば、[ lpDxWidths i ] 論理ユニットでは、文字セルと文字セルの原点が i 1 を i 分離します。 が lpDxWidths の場合 NULLExtTextOut 文字間の既定の間隔が使用されます。

str
描画 CString する指定した文字を格納している オブジェクト。

戻り値

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

Remarks

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

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

CDC::FillPath

現在のパスで開いている図形を閉じ、現在のブラシと多角形塗りつぶしモードを使用してパスの内部を塗りつぶします。

BOOL FillPath();

戻り値

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

Remarks

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

CDC::FillRect

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

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

パラメーター

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

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

Remarks

関数は、左および上の境界線を含む完全な四角形を塗りつぶし、右と下の境界線を塗り分けしません。

ブラシは、メンバー関数 、、および を使用して作成するか、または関数で取得 CBrush CreateHatchBrush CreatePatternBrush CreateSolidBrush Windows GetStockObject があります。

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

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

CDC::FillRgn

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

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

パラメーター

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

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

戻り値

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

Remarks

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

Remarks

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

注意

を呼び出す場合、以前 に を使用して設定された背景色は、 で示 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 以外。それ以外の場合は、塗り分けが完了できない場合、指定されたポイントの境界色が で指定されている場合、またはポイントがクリッピング領域の外側にある場合は 0 crColor が返されます。

Remarks

領域は、 で指定された境界と見なされます crColor 。 関数は、 と で指定された位置から始まり、色の境界まですべての方向 FloodFill x y に続きます。

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

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

CDC::FrameRect

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

void FrameRect(
    LPCRECT lpRect,
    CBrush* pBrush);

パラメーター

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

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

Remarks

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

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

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

CDC::FrameRgn

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

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

戻り値

ポインターは一時的なもので、すぐに使用できる範囲を超えて格納することはできません。

Remarks

CDC オブジェクトがハンドルに関連付けられていない場合は、一時的な CDC オブジェクトが生成され、関連付けられます。

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

CDC::GetArcDirection

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

int GetArcDirection() const;

戻り値

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

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

  • AD_CLOCKWISE Arcs 時計回りに描画された四角形。

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

Remarks

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

CDC::GetAspectRatioFilter

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

CSize GetAspectRatioFilter() const;

戻り値

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

Remarks

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

CDC::GetBkColor

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

COLORREF GetBkColor() const;

戻り値

RGB の色の値。

Remarks

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

CDC::GetBkMode

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

int GetBkMode() const;

戻り値

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

Remarks

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

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 単位)。

Remarks

最初のブラシの原点は、クライアント領域の (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 つ以上 dwFlags の値を指定 GetCharacterPlacement できます。

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

戻り値

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

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

Remarks

このメンバー関数は、 関数の機能をエミュレートします 。詳細については、「Windows GetCharacterPlacement SDK」を参照してください。

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

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

戻り値

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

Remarks

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

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

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

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

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

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

CDC::GetCharABCWidthsI

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

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

パラメーター

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

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

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

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

戻り値

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

Remarks

このメンバー関数は、 関数の機能をエミュレートします 。詳細については、「Windows GetCharABCWidthsI SDK」を参照してください。

CDC::GetCharWidth

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

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

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

パラメーター

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

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

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

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

戻り値

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

Remarks

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

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

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

CDC::GetCharWidthI

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

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

パラメーター

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

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

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

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

戻り値

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

Remarks

このメンバー関数は、 関数の機能をエミュレートします 。詳細については、「Windows GetCharWidthI SDK」を参照してください。

CDC::GetClipBox

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

virtual int GetClipBox(LPRECT lpRect) const;

パラメーター

lpRect
四角形の RECT 次元を CRect 受け取る構造体またはオブジェクトをポイントします。

戻り値

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

  • COMPLEXREGION クリッピング領域の境界線が重なっています。

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

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

  • SIMPLEREGION クリッピング領域には、重なり合う境界線はありません。

Remarks

次元は、 によって指されるバッファーにコピーされます lpRect

CDC::GetColorAdjustment

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

BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;

パラメーター

lpColorAdjust
カラー調整値 COLORADJUSTMENT を受け取るデータ構造をポイントします。

戻り値

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

CDC::GetCurrentBitmap

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

CBitmap* GetCurrentBitmap() const;

戻り値

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

Remarks

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

CDC::GetCurrentBrush

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

CBrush* GetCurrentBrush() const;

戻り値

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

Remarks

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

CDC::GetCurrentFont

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

CFont* GetCurrentFont() const;

戻り値

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

Remarks

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

CDC::GetCurrentPalette

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

CPalette* GetCurrentPalette() const;

戻り値

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

Remarks

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

CDC::GetCurrentPen

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

CPen* GetCurrentPen() const;

戻り値

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

Remarks

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

CDC::GetCurrentPosition

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

CPoint GetCurrentPosition() const;

戻り値

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

Remarks

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

CDC::GetDCBrushColor

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

COLORREF GetDCBrushColor() const;

戻り値

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

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

Remarks

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

CDC::GetDCPenColor

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

COLORREF GetDCPenColor() const;

戻り値

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

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

Remarks

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

CDC::GetDeviceCaps

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

int GetDeviceCaps(int nIndex) const;

パラメーター

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

戻り値

関数が正常に実行された場合は、要求された機能の値。

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

CDC::GetFontData

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

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

パラメーター

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

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

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

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

戻り値

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

Remarks

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

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

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

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

CDC::GetFontLanguageInfo

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

DWORD GetFontLanguageInfo() const;

戻り値

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

Remarks

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

CDC::GetGlyphOutline

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

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

パラメーター

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

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

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

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

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

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

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

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

戻り値

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

Remarks

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

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

CDC::GetGraphicsMode

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

int GetGraphicsMode() const;

戻り値

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

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

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

Remarks

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

CDC::GetHalftoneBrush

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

static CBrush* PASCAL GetHalftoneBrush();

戻り値

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

Remarks

半音ブラシは、前景色と背景色の代わりのピクセルを表示して、ディザリング パターンを作成します。 次に示すのは、半音ブラシによって作成されたディザリング パターンの例です。

ディザリングされたペン ストロークの詳細。

CDC::GetKerningPairs

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

int GetKerningPairs(
    int nPairs,
    LPKERNINGPAIR lpkrnpair) const;

パラメーター

nPairs
が指す構造体 KERNINGPAIR の数を指定します lpkrnpair 。 関数は、 で指定されたよりも多くのカーニング ペアをコピーしません nPairs

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

戻り値

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

CDC::GetLayout

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

DWORD GetLayout() const;

戻り値

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

Remarks

既定のレイアウトは左から右に表示されます。

CDC::GetMapMode

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

int GetMapMode() const;

戻り値

マッピング モード。

Remarks

マッピング モードの説明については、メンバー関数に関するページ SetMapMode を参照してください。

注意

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

CDC::GetMiterLimit

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

float GetMiterLimit() const;

戻り値

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

Remarks

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

CDC::GetNearestColor

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

COLORREF GetNearestColor(COLORREF crColor) const;

パラメーター

crColor
一致する色を指定します。

戻り値

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

Remarks

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

CDC::GetOutlineTextMetrics

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

UINT GetOutlineTextMetrics(
    UINT cbData,
    LPOUTLINETEXTMETRIC lpotm) const;

パラメーター

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

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

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

戻り値

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

Remarks

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

CDC::GetOutputCharWidth

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

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

パラメーター

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

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

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

戻り値

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

Remarks

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

関数は、 が指すバッファーに値を格納します 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 )。

Remarks

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

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

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

nTabPositions 0 で が の lpnTabStopPositions NULL 場合、タブは平均文字幅 8 に展開されます。 が 1 の場合、タブ ストップは、ポイント先の配列内の最初の値で指定 nTabPositions された距離で区切 lpnTabStopPositions されます。 が複数の値をポイントしている場合は、 で指定された数値まで、配列内の各値に対してタブ 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

Remarks

現在のクリッピング領域は、によって返される幅と高さには影響しません 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 ベジエ曲線の制御点または終了点であることを指定します。

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

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

  • PT_CLOSEFIGURE 対応する線または曲線が描画された後に、図形が自動的に閉じられるように指定します。 直線または曲線のエンドポイントから最後のに対応する点までの線を描画して、図形を閉じ PT_MOVETO ます。

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

戻り値

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

Remarks

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

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

CDC::GetPixel

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

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

パラメーター

x
調べる点の論理 x 座標を指定します。

y
調べる点の論理 y 座標を指定します。

point
調べる点の論理 x 座標と y 座標を指定します。

戻り値

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

Remarks

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

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

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

CDC::GetPolyFillMode

現在の多角形入力モードを取得します。

int GetPolyFillMode() const;

戻り値

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

Remarks

SetPolyFillMode多角形入力モードの詳細については、メンバー関数を参照してください。

CDC::GetROP2

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

int GetROP2() const;

戻り値

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

Remarks

描画モードでは、塗りつぶされたオブジェクトの色と塗りつぶしオブジェクトの内部を、表示サーフェイス上の既存の色と組み合わせて使用する方法を指定します。

CDC::GetSafeHdc

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

HDC GetSafeHdc() const;

戻り値

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

Remarks

このメンバー関数は、null ポインターでも使用できます。

CDC::GetStretchBltMode

現在のビットマップ伸縮モードを取得します。

int GetStretchBltMode() const;

戻り値

戻り値は、現在のビットマップ伸縮モード ( STRETCH_ANDSCANS 、、 STRETCH_DELETESCANS または) を指定します ( STRETCH_ORSCANS 関数が正常に実行された場合)。

Remarks

ビットマップ伸縮モードは、メンバー関数によって拡張または圧縮されたビットマップから情報をどのように削除するかを定義し 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

Remarks

文字列に1つ以上のタブ文字が含まれている場合、文字列の幅はによって指定されたタブストップに基づき lpnTabStopPositions ます。 関数は、現在選択されているフォントを使用して、文字列のサイズを計算します。

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

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

nTabPositions が0で、 lpnTabStopPositions がの場合 NULL 、タブは平均文字幅の8倍に拡張されます。 nTabPositions が1の場合、タブストップは、が指す配列の最初の値によって指定された距離だけ区切られ lpnTabStopPositions ます。 が lpnTabStopPositions 1 つ以上の値を指している場合は、配列の各値に対して、で指定した数までのタブストップが設定され nTabPositions ます。

CDC::GetTextAlign

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

UINT GetTextAlign() const;

戻り値

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

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

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

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

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

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

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

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

  • TA_UPDATECP 現在の位置が更新されます。

Remarks

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

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

    • TA_LEFTTA_CENTERTA_RIGHT

    • TA_BASELINETA_BOTTOMTA_TOP

    • TA_NOUPDATECP および TA_UPDATECP

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

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

CDC::GetTextCharacterExtra

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

int GetTextCharacterExtra() const;

戻り値

文字間の間隔の量。

Remarks

GDI は、デバイス コンテキストにテキスト行を書き込むときに、各文字 (ブレーク文字を含む) にこの間隔を追加します。

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

CDC::GetTextColor

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

COLORREF GetTextColor() const;

戻り値

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

Remarks

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

CDC::GetTextExtent

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

CSize GetTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetTextExtent(const CString& str) const;

パラメーター

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

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

str
指定 CString した文字を格納している オブジェクト。

戻り値

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

Remarks

情報は、 属性デバイス m_hAttribDC コンテキストから取得されます。

既定では、 は、ディメンションを取得するテキストが水平線に沿って設定されている (つまり、エスケープは GetTextExtent 0) と見なします。 0 以外のエスケープを指定するフォントを作成する場合は、文字列の次元を取得するために、テキストの角度を明示的に変換する必要があります。

現在のクリッピング領域は、 によって返される幅と高さに影響を与えるのではありません GetTextExtent

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

CDC::GetTextExtentExPointI

指定したスペース内に収まる、指定した文字列内の文字数を取得し、それらの各文字のテキスト範囲を配列に入力します。

BOOL GetTextExtentExPointI(
    LPWORD pgiIn,
    int cgi,
    int nMaxExtent,
    LPINT lpnFit,
    LPINT alpDx,
    LPSIZE lpSize) const;

パラメーター

pgiIn
エクステントを取得するグリフ インデックスの配列へのポインター。

cgi
が指す配列内のグリフの数を指定します pgiIn

nMaxExtent
書式設定された文字列の最大許容幅を論理単位で指定します。

lpnFit
で指定された空間に収まる最大文字数のカウントを受け取る整数へのポインター nMaxExtent 。 が lpnFitNULL 場合、 nMaxExtent は無視されます。

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

lpSize
グリフ SIZE インデックス配列の次元を論理単位で受け取る 構造体へのポインター。 この値を NULL にすることはできません。

戻り値

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

Remarks

このメンバー関数は、 関数の機能をエミュレートします 。詳細については、「Windows GetTextExtentExPointI SDK」を参照してください。

CDC::GetTextExtentPointI

グリフ インデックスの指定した配列の幅と高さを取得します。

BOOL GetTextExtentPointI(
    LPWORD pgiIn,
    int cgi,
    LPSIZE lpSize) const;

パラメーター

pgiIn
エクステントを取得するグリフ インデックスの配列へのポインター。

cgi
が指す配列内のグリフの数を指定します pgiIn

lpSize
グリフ SIZE インデックス配列の次元を論理単位で受け取る 構造体へのポインター。 この値を NULL にすることはできません。

戻り値

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

Remarks

このメンバー関数は、 関数の機能をエミュレートします 。詳細については、「Windows GetTextExtentPointI SDK」を参照してください。

CDC::GetTextFace

このメンバー関数を呼び出して、現在のフォントのタイプフェイス名をバッファーにコピーします。

int GetTextFace(
    int nCount,
    LPTSTR lpszFacename) const;

int GetTextFace(CString& rString) const;

パラメーター

nCount
バッファーのサイズ (バイト単位) を指定します。 タイプフェイス名が、このパラメーターで指定されたバイト数を超える場合、名前は切り捨てられます。

lpszFacename
タイプフェイス名のバッファーをポイントします。

rString
オブジェクトへの CString 参照。

戻り値

終端の null 文字を含め、バッファーにコピーされたバイト数。 エラーが発生した場合は 0 です。

Remarks

タイプフェイス名は、null 終端文字列としてコピーされます。

CDC::GetTextMetrics

属性デバイス コンテキストを使用して、現在のフォントのメトリックを取得します。

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;

パラメーター

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

戻り値

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

CDC::GetViewportExt

デバイス コンテキストのビューポートの x エクステントと y エクステントを取得します。

CSize GetViewportExt() const;

戻り値

オブジェクトとしての x エクステントと y エクステント (デバイス ユニット CSize 単位)。

CDC::GetViewportOrg

デバイス コンテキストに関連付けられているビューポートの原点の x 座標と y 座標を取得します。

CPoint GetViewportOrg() const;

戻り値

オブジェクトとしてのビューポートの原点 (デバイス座標 CPoint )。

CDC::GetWindow

ディスプレイ デバイス コンテキストに関連付けられているウィンドウを返します。

CWnd* GetWindow() const;

戻り値

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

Remarks

これは高度な関数です。 たとえば、このメンバー関数は、印刷時や印刷プレビュー時にビュー ウィンドウを返しません。 出力に関連付けられたウィンドウが常に返されます。 指定された DC 描画を使用する出力関数をこのウィンドウに描画します。

CDC::GetWindowExt

デバイス コンテキストに関連付けられているウィンドウの x エクステントと y エクステントを取得します。

CSize GetWindowExt() const;

戻り値

オブジェクトとしての x エクステントと y エクステント (論理単位 CSize )。

CDC::GetWindowOrg

デバイス コンテキストに関連付けられているウィンドウの原点の x 座標と y 座標を取得します。

CPoint GetWindowOrg() const;

戻り値

オブジェクトとしてのウィンドウの原点 (論理座標 CPoint )。

CDC::GetWorldTransform

現在のワールド空間からページ空間への変換を取得します。

BOOL GetWorldTransform(XFORM& rXform) const;

パラメーター

rXform
現在の XFORM ワールド空間からページ空間への変換を受け取る構造体への参照。

戻り値

成功時に 0 以外の値を返します。

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

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

Remarks

このメソッドは、GDI Windowsをラップします 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
グラデーション塗りつぶしモードを指定します。 使用できる値の一覧については、SDK GradientFill の Windowsしてください。

戻り値

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

Remarks

詳細については、WINDOWS GradientFill SDK を参照してください。

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

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

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

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

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

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

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

戻り値

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

Remarks

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

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

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

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

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

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

CDC::HIMETRICtoDP

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

void HIMETRICtoDP(LPSIZE lpSize) const;

パラメーター

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

Remarks

デバイス コンテキスト オブジェクトのマッピング モードが 、、または の場合、変換は物理インチのピクセル数 MM_LOENGLISH MM_HIENGLISH MM_LOMETRIC MM_HIMETRIC に基づいて行います。 マッピング モードが他の非制約モード (例: ) の場合、変換は論理インチのピクセル数に MM_TEXT 基づいて行います。

CDC::HIMETRICtoLP

ユニットを論理ユニットに変換するには、 HIMETRIC この関数を呼び出します。

void HIMETRICtoLP(LPSIZE lpSize) const;

パラメーター

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

Remarks

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

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

CDC::IntersectClipRect

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

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

int IntersectClipRect(LPCRECT lpRect);

パラメーター

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

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

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

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

lpRect
四角形を指定します。 オブジェクトまたはポインターを CRect 、このパラメーターの RECT 構造体に渡します。

戻り値

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

  • COMPLEXREGION 新しいクリッピング領域には、境界線が重なっています。

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

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

  • SIMPLEREGION 新しいクリッピング領域には、重なり合う境界線はありません。

Remarks

GDI は、新しい境界内に収まるすべての後続の出力をクリップします。 幅と高さは 32,767 を超えないようにしてください。

CDC::InvertRect

指定した四角形の内容を反転します。

void InvertRect(LPCRECT lpRect);

パラメーター

lpRect
反転する RECT 四角形の論理座標を含む をポイントします。 このパラメーターの オブジェクト CRect を渡することもできます。

Remarks

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

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

void CDCView::DoInvertRect(CDC *pDC)
{
   // invert rect from 20,20 to 50,50
   CRect rect(20, 20, 50, 50);
   pDC->InvertRect(rect);

   // inverting again restores to normal
   ::Sleep(1000);
   pDC->InvertRect(rect);
}

CDC::InvertRgn

で指定された領域の色を反転させ pRgn ます。

BOOL InvertRgn(CRgn* pRgn);

パラメーター

pRgn
反転する領域を識別します。 領域の座標は論理単位で指定します。

戻り値

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

Remarks

モノクロディスプレイでは、関数によって、白ピクセルと黒ピクセルが白になります。 色の表示では、反転は、ディスプレイの色の生成方法によって異なります。

CDC::IsPrinting

デバイスコンテキストが印刷に使用されているかどうかを判断します。

BOOL IsPrinting() const;

戻り値

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

CDC::LineTo

xy (または) で指定されたポイントまで、現在の位置から行を描画し point ます。

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

パラメーター

x
線のエンドポイントの論理 x 座標を指定します。

y
直線のエンドポイントの論理 y 座標を指定します。

point
線のエンドポイントを指定します。 POINTこのパラメーターには、構造体またはオブジェクトのいずれかを渡すことができ CPoint ます。

戻り値

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

Remarks

選択したペンで線が描画されます。 現在の位置が x 、、またはに設定されて y point います。

の例を参照してください CRect::CenterPoint

CDC::LPtoDP

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

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

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

パラメーター

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

nCount
配列内の点の数。

lpRect
RECT構造体またはオブジェクトを指し CRect ます。 このパラメーターは、四角形を論理単位からデバイス単位にマップする一般的なケースに使用されます。

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

Remarks

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

点の x 座標と y 座標は、-32768 ~ 32767 の範囲の2バイト符号付き整数です。 マッピングモードによってこれらの制限を超える値が生成される場合、値はそれぞれ-32768 と32767に設定されます。

CDC::LPtoHIMETRIC

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

void LPtoHIMETRIC(LPSIZE lpSize) const;

パラメーター

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

Remarks

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

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

CDC::m_hAttribDC

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

HDC m_hAttribDC;

Remarks

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

CDC::m_hDC

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

HDC m_hDC;

Remarks

既定では、は、に m_hDC m_hAttribDC よってラップされたもう1つのデバイスコンテキストに相当し CDC ます。 一般に、 CDC 出力を作成する GDI 呼び出しは m_hDC デバイスコンテキストに送られます。 を初期化 m_hDC し、 m_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
ビットマップのコピー元のデバイスコンテキストを識別します。 ソースを含まないラスター操作をパラメーターが指定する場合は、0にする必要があり dwRop ます。

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

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

maskBitmap
ソースデバイスコンテキストのカラービットマップと組み合わせたモノクロマスクビットマップを識別します。

xMask
パラメーターで指定したマスクビットマップの水平方向のピクセルオフセットを指定し maskBitmap ます。

yMask
パラメーターで指定したマスクビットマップの垂直ピクセルオフセットを指定し maskBitmap ます。

dwRop
前景と背景の3項ラスター操作コードを指定します。このコードは、関数がソースデータと変換先データの組み合わせを制御するために使用します。 バックグラウンドラスター操作コードは、この値の上位ワードの上位バイトに格納されます。前景ラスター操作コードは、この値の上位ワードの下位バイトに格納されます。この値の下位ワードは無視され、0にする必要があります。 このマクロは、 MAKEROP4 フォアグラウンドとバックグラウンドのラスター操作コードを組み合わせて作成します。 この関数のコンテキストでの前景色と背景情報の説明については、「解説」を参照してください。 BitBlt一般的なラスター操作コードの一覧については、メンバー関数を参照してください。

戻り値

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

Remarks

によって指定されたマスクの値が1の場合は、 maskBitmap で指定した前景のラスター操作コードをその場所に適用する必要があることを示し dwRop ます。 マスクの値が0の場合は、によって指定されたバックグラウンドのラスター操作コードがその場所で適用されることを示し dwRop ます。 ラスター操作にソースが必要な場合は、マスクの四角形がソースの四角形をカバーする必要があります。 そうでない場合、関数は失敗します。 ラスター操作にソースが不要な場合は、マスクの四角形が変換先の四角形に対応している必要があります。 そうでない場合、関数は失敗します。

この関数が呼び出されたときに、ソースデバイスコンテキストに対して回転または傾斜変換が有効になっている場合、エラーが発生します。 ただし、その他の種類の変換は許可されます。

変換元、パターン、および変換先のビットマップの色の形式が異なる場合、この関数は、パターンまたは変換元の形式、またはその両方を変換先の形式と一致するように変換します。 マスクビットマップがモノクロビットマップでない場合は、エラーが発生します。 拡張メタファイルが記録されている場合、ソースデバイスコンテキストが拡張メタファイルデバイスコンテキストを識別すると、エラー (および関数は0を返します) が発生します。 すべてのデバイスでサポートされるわけではありません MaskBlt 。 アプリケーションは GetDeviceCaps 、デバイスがこの機能をサポートしているかどうかを判断するためにを呼び出す必要があります。 マスクビットマップが指定されていない場合、この関数は BitBlt 、前景ラスター操作コードを使用してとまったく同じように動作します。 マスクビットマップのピクセルオフセットは、ソースデバイスコンテキストのビットマップのポイント (0, 0) にマップされます。 マスクビットマップにマスクのセットが含まれている場合に便利です。アプリケーションでは、に送信されるピクセルオフセットと四角形のサイズを調整することで、これらのいずれかをマスク blitting タスクに簡単に適用でき MaskBlt ます。

CDC::ModifyWorldTransform

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

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

パラメーター

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

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

戻り値

成功時に 0 以外の値を返します。

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

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

Remarks

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

CDC::MoveTo

現在の位置を、 と (または によって) 指定 x y されたポイントに移動します point

CPoint MoveTo(
    int x,
    int y);

CPoint MoveTo(POINT point);

パラメーター

x
新しい位置の論理 x 座標を指定します。

y
新しい位置の論理 y 座標を指定します。

point
新しい位置を指定します。 このパラメーターには 構造体 POINT または CPoint オブジェクトを渡します。

戻り値

オブジェクトとしての前の位置の x 座標と y 座標 CPoint

の例を参照してください CRect::CenterPoint

CDC::OffsetClipRgn

指定したオフセットによって、デバイス コンテキストのクリッピング領域を移動します。

int OffsetClipRgn(
    int x,
    int y);

int OffsetClipRgn(SIZE size);

パラメーター

x
左または右に移動する論理ユニットの数を指定します。

y
上下に移動する論理ユニットの数を指定します。

size
オフセットする量を指定します。

戻り値

新しいリージョンの型。 次のいずれかの値を指定できます。

  • COMPLEXREGION クリッピング領域の境界線が重なっています。

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

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

  • SIMPLEREGION クリッピング領域には、重なり合う境界線はありません。

Remarks

関数は、領域単位を 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

Remarks

ハンドルを使用して、API を直接Windows呼び出します。

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

Remarks

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

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

Remarks

円弧の中心は、および (または によって) 指定された外接する四角形 x1 y1 x2 y2 の中心です lpRect 。 円弧の開始点と終了点は、および (または x3 y3 および ) x4 y4 で指定 ptStart されます ptEnd

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

この関数によって描画される図は、 まで拡張されますが、右座標と下座標は含まれます。 つまり、図の高さは であり、 y2 - y1 図形の幅は です x2 - x1 。 外接する四角形の幅と高さは、どちらも 2 単位を超え、32,767 単位未満である必要があります。

void CDCView::DrawPie(CDC *pDC)
{
   // Fill the client area with a simple pie chart. A
   // big blue slice covers 75% of the pie, from
   // 6 o'clock to 3 o'clock. This portion is filled
   // with blue and has a blue edge. The remaining 25%
   // is filled with a red, diagonal hatch and has
   // a red edge.

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

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

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

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

   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

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

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

   // Same parameters, but reverse start and end points.
   pDC->Pie(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

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

CDC::PlayMetaFile

指定したメタファイルの内容をデバイス コンテキストで再生します。

BOOL PlayMetaFile(HMETAFILE hMF);

BOOL PlayMetaFile(
    HENHMETAFILE hEnhMetaFile,
    LPCRECT lpBounds);

パラメーター

hMF
再生するメタファイルを識別します。

hEnhMetaFile
拡張メタファイルを識別します。

lpBounds
画像の RECT 表示に使用される外接する四角形の座標を含む 構造体または オブジェクト CRect をポイントします。 座標は論理単位で指定されます。

戻り値

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

Remarks

メタファイルは、任意の回数再生できます。

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

拡張メタファイルに省略可能なパレットが含まれている場合、アプリケーションでは、出力デバイスでカラー パレットを設定してから の 2 番目のバージョンを呼び出すことによって、一貫性のある色を実現できます PlayMetaFile 。 省略可能なパレットを取得するには、 関数を GetEnhMetaFilePaletteEntries Windowsします。 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 を返します。

Remarks

指定されたビットマスク ハンドルが有効な白黒ビットマップを識別する場合、関数はこのビットマップを使用して、ソース四角形からの色データのビットをマスクします。

並列四辺形 (D) の 4 番目の頂点は、最初の 3 つの点 (A、B、C) をベクトルとして扱い、D = B + C - A を計算することで定義されます。

ビットマスクが存在する場合、マスクの値 1 は、コピー元のピクセルの色をコピー先にコピーする必要を示します。 マスクの値 0 は、変換先のピクセルの色が変更されないかどうかを示します。

マスクの四角形がソースとコピー先の四角形よりも小さい場合、関数はマスク パターンをレプリケートします。

スケーリング、変換、およびリフレクション変換は、ソース デバイス コンテキストで許可されます。ただし、回転変換とせん断変換はそうではありません。 マスク ビットマップが白黒ビットマップではない場合は、エラーが発生します。 必要に応じて、宛先デバイス コンテキストのストレッチ モードを使用して、ピクセルを拡大または圧縮する方法を決定します。 拡張メタファイルが記録されている場合、ソース デバイス コンテキストで拡張メタファイル デバイス コンテキストが識別された場合、エラーが発生します。

コピー先の座標は、コピー先デバイス コンテキストに従って変換されます。コピー元の座標は、コピー元デバイス コンテキストに従って変換されます。 ソース変換に回転または回転がある場合は、エラーが返されます。 変換先とソースの四角形の色の形式が同じではない場合は、変換元の四角形を変換先の四角形 PlgBlt と一致します。 すべてのデバイスが をサポートしている場合ではありません PlgBlt 。 詳細については、メンバー関数のラスター機能 RC_BITBLT の説明を CDC::GetDeviceCaps 参照してください。

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

CDC::PolyBezier

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

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

パラメーター

lpPoints
スプラインのエンドポイント POINT と制御ポイントを含むデータ構造の配列をポイントします。

nCount
配列内のポイントの数を指定 lpPoints します。 各 Bzier スプラインには 2 つの制御ポイントとエンドポイントが必要であり、最初のスプラインには追加の開始点が必要なので、この値は描画するスプラインの 3 倍を超える数である必要があります。

戻り値

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

Remarks

この関数は、 パラメーターで指定されたエンドポイントと制御ポイントを使用して、3 次ベジエ スプラインを描画 lpPoints します。 最初のスプラインは、2 番目と 3 番目の点を制御ポイントとして使用して、最初の点から 4 番目の点に描画されます。 シーケンス内の後続の各スプラインには、さらに 3 つの点が必要です。前のスプラインの終了点が開始点として使用され、シーケンス内の次の 2 つの点が制御点、3 番目の点が終了点です。

現在の位置は、 関数によって使用も更新も PolyBezier されません。 図形が塗りつぶされていない。 この関数は、現在のペンを使用して線を描画します。

CDC::PolyBezierTo

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

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

パラメーター

lpPoints
エンドポイントとコントロール ポイント POINT を含むデータ構造の配列をポイントします。

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

戻り値

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

Remarks

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

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

CDC::PolyDraw

一連の線セグメントと Bzier スプラインを描画します。

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

パラメーター

lpPoints
各セグメントのエンドポイントと、各 Bzier スプラインのエンドポイントと制御ポイントを含むデータ構造 POINT の配列をポイントします。

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

  • PT_MOVETO このポイントが不一体の図形を開始します。 このポイントは、新しい現在の位置になります。

  • PT_LINETO 現在の位置からこのポイントに線を描画し、それが新しい現在位置に描画される必要がある場合に指定します。

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

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

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

  • PT_CLOSEFIGURE``PT_LINETOこのポイントの型または型が終了した後に、図形が自動的に閉じられるように指定し PT_BEZIERTO ます。 この地点から最新のまたはポイントまで直線が描画され PT_MOVETO MoveTo ます。

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

nCount
配列内の地点の合計数を指定し lpPoints ます。配列内のバイト数と同じ lpTypes です。

戻り値

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

Remarks

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

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

CDC::Polygon

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

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

パラメーター

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

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

戻り値

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

Remarks

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

現在の多角形入力モードは、 GetPolyFillMode メンバー関数とメンバー関数を使用して取得または設定でき SetPolyFillMode ます。

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

   // draw with a thick blue pen
   CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
   CPen *pOldPen = pDC->SelectObject(&penBlue);

   // and a solid red brush
   CBrush brushRed(RGB(255, 0, 0));
   CBrush *pOldBrush = pDC->SelectObject(&brushRed);

   // Find the midpoints of the top, right, left, and bottom
   // of the client area. They will be the vertices of our polygon.
   CPoint pts[4];
   pts[0].x = rect.left + rect.Width() / 2;
   pts[0].y = rect.top;

   pts[1].x = rect.right;
   pts[1].y = rect.top + rect.Height() / 2;

   pts[2].x = pts[0].x;
   pts[2].y = rect.bottom;

   pts[3].x = rect.left;
   pts[3].y = pts[1].y;

   // Calling Polygon() on that array will draw three lines
   // between the points, as well as an additional line to
   // close the shape--from the last point to the first point
   // we specified.
   pDC->Polygon(pts, 4);

   // Put back the old objects.
   pDC->SelectObject(pOldPen);
   pDC->SelectObject(pOldBrush);
}

CDC::Polyline

で指定された点を結ぶ線分のセットを描画 lpPoints します。

BOOL Polyline(
    LPPOINT lpPoints,
    int nCount);

パラメーター

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

nCount`
配列内の点の数を指定します。 この値は2以上である必要があります。

戻り値

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

Remarks

線は、現在のペンを使用して、最初の点から後続の点まで描画されます。 メンバー関数とは異なり LineToPolyline 関数は、現在の位置を使用したり更新したりすることはありません。

詳細については、Windows SDK の「」を参照してください PolyLine

CDC::PolylineTo

1つ以上の直線を描画します。

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

パラメーター

lpPoints
POINT線の頂点を格納するデータ構造体の配列を指します。

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

戻り値

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

Remarks

現在の位置から、現在のペンを使用してパラメーターによって指定された最初の点まで、直線が描画され lpPoints ます。 関数は、行を追加するたびに、前の行の終了点からで指定された次の点まで描画 lpPoints します。 PolylineTo 現在の位置を最後の行の終了位置に移動します。 この関数によって描画された線分が閉じた図形を形成する場合、図形は塗りつぶされません。

CDC::PolyPolygon

現在の多角形入力モードを使用して塗りつぶされた多角形を2つ以上作成します。

BOOL PolyPolygon(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount);

パラメーター

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

lpPolyCounts
は、整数の配列を指します。各整数は、配列内のいずれかの多角形の点の数を指定し lpPoints ます。

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

戻り値

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

Remarks

ポリゴンは、結合されていないか、重複している可能性があります。

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

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

現在の多角形入力モードは、 GetPolyFillMode メンバー関数とメンバー関数を使用して取得または設定でき SetPolyFillMode ます。

CDC::PolyPolyline

複数の系列の接続された線分を描画します。

BOOL PolyPolyline(
    const POINT* lpPoints,
    const DWORD* lpPolyPoints,
    int nCount);

パラメーター

lpPoints
ポリラインの頂点を格納する構造体の配列を指します。 ポリラインは連続して指定されます。

lpPolyPoints
対応する多角形の配列内の点の数を指定する変数の配列をポイントし lpPoints ます。 各エントリは2以上である必要があります。

nCount
配列内の合計カウント数を指定し lpPolyPoints ます。

戻り値

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

Remarks

線分は、現在のペンを使用して描画されます。 セグメントで形成された図形は塗りつぶされません。 現在の位置は、この関数によって使用されることも更新されることもありません。

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

印刷アプリケーションのメンバー関数によってインストールされた abort 関数を呼び出し、 SetAbortProc 印刷を終了する必要があるかどうかを照会します。

BOOL QueryAbort() const;

戻り値

印刷を続行する場合、または中止プロシージャが存在しない場合、戻り値は0以外になります。 印刷ジョブを終了する必要がある場合は0です。 戻り値は、abort 関数によって指定されます。

CDC::RealizePalette

現在の論理パレットからシステムパレットにエントリをマップします。

UINT RealizePalette();

戻り値

システムパレット内の異なるエントリにマップされた論理パレット内のエントリの数を示します。 これは、論理パレットが最後に認識されてからシステムパレットの変更に対応するために、この関数が再マップしたエントリの数を表します。

Remarks

論理カラーパレットは、カラー集中型のアプリケーションとシステムの間のバッファーとして機能します。これにより、アプリケーションは、独自に表示した色や他のウィンドウで表示されている色に干渉することなく、必要な数の色を使用できます。

ウィンドウに入力フォーカスがあり、を呼び出すと 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 を返します。

Remarks

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

四角形は、右と下の座標まで拡張されますが、含めではありません。 つまり、四角形の高さは であり y2 - y1 、四角形の幅は です x2 - x1 。 四角形の幅と高さは、どちらも 2 単位を超え、32,767 単位未満である必要があります。

void CDCView::DrawRectangle(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // draw a thick black rectangle filled with blue
   pDC->Rectangle(rect);

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::RectVisible

指定した四角形の一部が、表示コンテキストのクリッピング領域内にあるかどうかを判断します。

virtual BOOL RectVisible(LPCRECT lpRect) const;

パラメーター

lpRect
指定した RECT 四角形の論理座標を含む 構造体または CRect オブジェクトをポイントします。

戻り値

指定した四角形の一部がクリッピング領域内にある場合は 0 以外。それ以外の場合は 0。

CDC::ReleaseAttribDC

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

virtual void ReleaseAttribDC();

Remarks

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

CDC::ReleaseOutputDC

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

virtual void ReleaseOutputDC();

Remarks

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

CDC::ResetDC

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

BOOL ResetDC(const DEVMODE* lpDevMode);

パラメーター

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

戻り値

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

Remarks

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

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

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

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

CDC::RestoreDC

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

virtual BOOL RestoreDC(int nSavedDC);

パラメーター

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

戻り値

指定したコンテキストが復元された場合は 0 以外。それ以外の場合は 0。

Remarks

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

Remarks

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

この関数が描画する図は、 まで拡張されますが、右座標と下座標は含まれます。 つまり、図の高さは であり、 y2 - y1 図形の幅は です x2 - x1 。 外接する四角形の高さと幅は、どちらも 2 単位を超え、32,767 単位未満である必要があります。

void CDCView::DrawRoundRect(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // Draw a thick black rectangle filled with blue
   // corners rounded at a 17-unit radius. Note that
   // a radius of three or less is not noticeable because
   // the pen is three units wide.
   pDC->RoundRect(rect, CPoint(17, 17));

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::SaveDC

状態情報 (クリッピング領域、選択したオブジェクト、マッピング モードなど) を Windows によって保持されるコンテキスト スタックにコピーすることで、デバイス コンテキストの現在の状態を保存します。

virtual int SaveDC();

戻り値

保存されたデバイス コンテキストを識別する整数。 エラーが発生した場合は 0 です。 この戻り値は、 を呼び出してデバイス コンテキストを復元するために使用できます RestoreDC

Remarks

保存されたデバイス コンテキストは、 を使用して後で復元できます 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 単位)。

Remarks

数式は次のように記述されます。

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

Remarks

数式は次のように記述されます。

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です。

Remarks

がの場合 lpRectUpdate NULL 、Windows は更新の四角形を計算しません。 pRgnUpdate との両方 lpRectUpdate がの場合 NULL 、Windows は更新領域を計算しません。 pRgnUpdate がでない場合 NULL 、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 を返します。

Remarks

識別されたデバイスコンテキストには、閉じたパスが含まれている必要があります。

CDC::SelectClipRgn

デバイスコンテキストの現在のクリッピング領域として、指定された領域を選択します。

int SelectClipRgn(CRgn* pRgn);

int SelectClipRgn(
    CRgn* pRgn,
    int nMode);

パラメーター

pRgn
選択するリージョンを識別します。

  • この関数の最初のバージョンでは、この値がの場合、 NULL クライアント領域全体が選択され、出力がウィンドウにクリップされたままになります。

  • この関数の2番目のバージョンでは、 NULL モードが指定されている場合にのみ、このハンドルを使用でき RGN_COPY ます。

nMode
実行する操作を指定します。 次のいずれかの値を指定する必要があります。

  • RGN_AND 新しいクリッピング領域は、現在のクリップ領域とで識別される領域の重なり合う領域を結合し pRgn ます。

  • RGN_COPY 新しいクリッピング領域は、によって識別される領域のコピーです pRgn 。 この機能は、の最初のバージョンと同じです SelectClipRgn 。 によって識別される領域がの場合 pRgnNULL 、新しいクリッピング領域が既定のクリッピング領域 (null 領域) になります。

  • RGN_DIFF 新しいクリッピング領域は、現在のクリッピング領域の領域と、で識別される領域から除外された領域を結合し pRgn ます。

  • RGN_OR 新しいクリッピング領域は、現在のクリップ領域とで識別される領域を結合し pRgn ます。

  • RGN_XOR 新しいクリッピング領域では、現在のクリップ領域とで識別される領域が結合され pRgn ますが、重複する領域は除外されます。

戻り値

領域の型。 次のいずれかの値を指定できます。

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

  • ERROR デバイスコンテキストまたはリージョンが無効です。

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

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

Remarks

選択された領域のコピーのみが使用されます。 リージョン自体は、他の任意の数のデバイスコンテキストに対して選択することも、削除することもできます。

関数は、指定された領域の座標がデバイス単位で指定されていることを前提としています。 一部のプリンターデバイスは、テキストメトリックを表現するために必要な精度を維持するために、グラフィックス出力よりも高い解像度でテキスト出力をサポートしています。 これらのデバイスは、より高い解像度 (テキスト単位) でデバイスユニットを報告します。 これらのデバイスは、複数のレポートされたデバイスユニットが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

戻り値

置換されるオブジェクトへのポインター。 これは、 CGdiObject CPen 使用される関数のバージョンに応じて、から派生したいずれかのクラスのオブジェクトへのポインターです。 エラーが発生した場合、戻り値はです NULL 。 この関数は、一時オブジェクトへのポインターを返す場合があります。 この一時オブジェクトは、1つの Windows メッセージの処理中にのみ有効です。 詳細については、「CGdiObject::FromHandle」を参照してください。

Region パラメーターを受け取るメンバー関数のバージョンでは、メンバー関数と同じタスクが実行され SelectClipRgn ます。 戻り値には、次のいずれかを指定できます。

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

  • ERROR デバイスコンテキストまたはリージョンが無効です。

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

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

Remarks

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

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

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

CDC::SelectPalette

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

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

パラメーター

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

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

戻り値

で指定された CPalette パレットに置き換えられた論理パレットを識別する オブジェクトへのポインター pPalette 。 エラー NULL が発生した場合は です。

Remarks

新しいパレットは、デバイス コンテキストに表示される色を制御するために GDI によって使用されるパレット オブジェクトになり、前のパレットを置き換えます。

アプリケーションでは、論理パレットを複数のデバイス コンテキストに選択できます。 ただし、論理パレットに対する変更は、選択されているすべてのデバイス コンテキストに影響します。 アプリケーションが複数のデバイス コンテキストにパレットを選択する場合、デバイス コンテキストはすべて同じ物理デバイスに属している必要があります。

CDC::SelectStockObject

定義済みのストック ペン、ブラシ、またはフォントの 1 つに対応 CGdiObject する オブジェクトを選択します。

virtual CGdiObject* SelectStockObject(int nIndex);

パラメーター

nIndex
必要なストック オブジェクトの種類を指定します。 次のいずれかの値を指定できます。

  • BLACK_BRUSH 黒いブラシ。

  • DKGRAY_BRUSH 濃い灰色のブラシ。

  • GRAY_BRUSH 灰色のブラシ。

  • HOLLOW_BRUSH くぼみブラシ。

  • LTGRAY_BRUSH 薄い灰色のブラシ。

  • NULL_BRUSH Null ブラシ。

  • WHITE_BRUSH 白いブラシ。

  • BLACK_PEN 黒いペン。

  • NULL_PEN Null ペン。

  • WHITE_PEN 白いペン。

  • ANSI_FIXED_FONT ANSI 固定システム フォント。

  • ANSI_VAR_FONT ANSI 変数システム フォント。

  • DEVICE_DEFAULT_FONT デバイスに依存するフォント。

  • OEM_FIXED_FONT OEM 依存の固定フォント。

  • SYSTEM_FONT システム フォント。 既定では、Windowsシステム フォントを使用して、メニュー、ダイアログ ボックス コントロール、その他のテキストを描画します。 ただし、ダイアログやウィンドウで使用されるフォントの取得には依存しない SYSTEM_FONT 方が最適です。 代わりに、 パラメーターを指定 SystemParametersInfo して 関数を SPI_GETNONCLIENTMETRICS 使用して、現在のフォントを取得します。 SystemParametersInfo では、現在のテーマが考慮され、キャプション、メニュー、メッセージ ダイアログのフォント情報が提供されます。

  • SYSTEM_FIXED_FONTバージョン 3.0 より前のWindowsで使用される固定幅のシステム フォント。 このオブジェクトは、以前のバージョンの Windows。

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

戻り値

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

CDC::SetAbortProc

印刷ジョブの中止プロシージャをインストールします。

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

パラメーター

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

戻り値

関数の結果を指定 SetAbortProc します。 次の値の中には、他の値よりも可能性が高い値がありますが、すべて可能です。

  • SP_ERROR 一般的なエラー。

  • SP_OUTOFDISK 現在、スプーリングに使用できるディスク領域が十分ではなく、使用できる領域はこれ以上はありません。

  • SP_OUTOFMEMORY スプーリングに使用できるメモリが十分ではありません。

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

Remarks

アプリケーションがスプール中に印刷ジョブを取り消す場合は、メンバー関数を使用して印刷ジョブを開始する前に中止関数を設定する 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。

Remarks

既定の方向は反時計回りです。 関数 SetArcDirection は、次の関数が描画する方向を指定します。

Arc
ArcTo Rectangle
Chord RoundRect
Ellipse

CDC::SetAttribDC

この関数を呼び出して、属性デバイス コンテキスト を設定します m_hAttribDC

virtual void SetAttribDC(HDC hDC);

パラメーター

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

Remarks

このメンバー関数は、デバイス コンテキストを オブジェクトにアタッチ CDC しません。 出力デバイス コンテキストだけが オブジェクトにアタッチ CDC されます。

CDC::SetBkColor

現在の背景色を指定した色に設定します。

virtual COLORREF SetBkColor(COLORREF crColor);

パラメーター

crColor
新しい背景色を指定します。

戻り値

RGB 色値としての前の背景色。 エラーが発生した場合、戻り値は0x80000000 になります。

Remarks

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

指定した色をデバイスで表示できない場合は、背景色が最も近い物理的色に設定されます。

CDC::SetBkMode

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

int SetBkMode(int nBkMode);

パラメーター

nBkMode
設定するモードを指定します。 このパラメーターには、次のいずれかの値を指定できます。

  • OPAQUE 背景は、テキスト、ハッチブラシ、またはペンが描画される前に、現在の背景色で塗りつぶされます。 これは、既定のバックグラウンドモードです。

  • TRANSPARENT 背景は、描画前に変更されません。

戻り値

前のバックグラウンドモード。

Remarks

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

の例を参照してください 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 境界の累積がオンになっています。

Remarks

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 ます。

戻り値

デバイスユニット内のブラシの前の原点。

Remarks

ブラシの原点の既定の座標は、(0, 0) です。 ブラシの原点を変更するには、 UnrealizeObject オブジェクトの関数を呼び出し、 CBrush SetBrushOrg を呼び出してから、メンバー関数を呼び出して、 SelectObject デバイスコンテキストにブラシを選択します。

SetBrushOrgWith stock オブジェクトは使用しないで CBrush ください。

CDC::SetColorAdjustment

指定された値を使用して、デバイスコンテキストのカラー調整値を設定します。

BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);

パラメーター

lpColorAdjust
COLORADJUSTMENTカラー調整値を含むデータ構造体を指します。

戻り値

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

Remarks

カラー調整値は、モードが設定されている場合に、メンバー関数の呼び出しのソースビットマップの入力色を調整するために使用され CDC::StretchBlt HALFTONE ます。

CDC::SetDCBrushColor

現在のデバイスコンテキスト (DC) ブラシの色を、指定された色の値に設定します。

COLORREF SetDCBrushColor(COLORREF crColor);

パラメーター

crColor
新しいブラシの色を指定します。

戻り値

関数が成功した場合、戻り値は以前の DC ブラシの色を値として指定し COLORREF ます。

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

Remarks

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

CDC::SetDCPenColor

現在のデバイスコンテキスト (DC) のペンの色を、指定された色の値に設定します。

COLORREF SetDCPenColor(COLORREF crColor);

パラメーター

crColor
新しいペンの色を指定します。

戻り値

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

Remarks

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

CDC::SetGraphicsMode

指定されたデバイスコンテキストのグラフィックモードを設定します。

int SetGraphicsMode(int iMode);

パラメーター

iMode
グラフィックスモードを指定します。 このパラメーターに指定できる値の一覧については、「」を参照してください SetGraphicsMode

戻り値

成功した場合、古いグラフィックスモードを返します。

失敗した場合は0を返します。 拡張エラー情報を取得するには、を呼び出し GetLastError ます。

Remarks

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

CDC::SetLayout

このメンバー関数を呼び出して、デバイスコンテキストのテキストとグラフィックスのレイアウトを右から左に変更します。これは、アラビア語やヘブライ語などのカルチャの標準レイアウトです。

DWORD SetLayout(DWORD dwLayout);

パラメーター

dwLayout
デバイスコンテキストレイアウトおよびビットマップコントロールフラグ。 次の値の組み合わせを指定できます。

意味
LAYOUT_BITMAPORIENTATIONPRESERVED およびの呼び出しのすべてのリフレクションを無効にし CDC::BitBlt CDC::StretchBlt ます。
LAYOUT_RTL 既定の横方向レイアウトを右から左に設定します。
LAYOUT_LTR 既定のレイアウトを左から右に設定します。

戻り値

成功した場合は、デバイスコンテキストの前のレイアウト。

失敗した場合は GDI_ERROR 。 拡張エラー情報を取得するには、を呼び出し GetLastError ます。

Remarks

通常、 SetLayout ウィンドウに対してを呼び出すことはありません。 代わりに、などの 拡張ウィンドウスタイル を設定して、ウィンドウの右から左へのレイアウトを制御し WS_EX_RTLREADING ます。 プリンターやメタファイルなどのデバイスコンテキストは、このレイアウトを継承しません。 右から左へのレイアウトのためにデバイスコンテキストを設定する唯一の方法は、を呼び出すことです SetLayout

を呼び出すと SetLayout(LAYOUT_RTL) 、に SetLayout よってマッピングモードがに自動的に変更さ MM_ISOTROPIC れます。 その結果、後続のへの呼び出しでは、で GetMapMode はなくが返され MM_ISOTROPIC MM_TEXT ます。

多くのビットマップがあるなど、場合によっては、左から右へのレイアウトを保持する必要があります。 このような場合は、またはを呼び出してイメージをレンダリング BitBlt StretchBlt し、のビットマップコントロールフラグ dwLayout をに設定し LAYOUT_BITMAPORIENTATIONPRESERVED ます。

フラグを使用してレイアウトを変更すると LAYOUT_RTL 、通常は右または左を指定するフラグが逆になります。 混乱を避けるために、標準フラグの代替名を定義することもできます。 推奨される代替フラグ名の一覧については、Windows SDK の「」を参照してください SetLayout

CDC::SetMapMode

マッピングモードを設定します。

virtual int SetMapMode(int nMapMode);

パラメーター

nMapMode
新しいマッピングモードを指定します。 次のいずれかの値を指定できます。

  • MM_ANISOTROPIC 論理ユニットは、任意の大きさの軸を持つ任意の単位に変換されます。 マッピングモードをに設定し MM_ANISOTROPIC ても、現在のウィンドウまたはビューポートの設定は変更されません。 単位、向き、およびスケーリングを変更するには、 SetWindowExt SetViewportExt メンバー関数とメンバー関数を呼び出します。

  • MM_HIENGLISH 各論理ユニットは0.001 インチに変換されます。 正の x は右側です。正の y は稼働しています。

  • MM_HIMETRIC 各論理ユニットは0.01 ミリメートルに変換されます。 正の x は右側です。正の y は稼働しています。

  • MM_ISOTROPIC 論理ユニットは、同じようにスケールされた軸を持つ任意の単位に変換されます。つまり、x 軸に沿って1ユニットが y 軸に沿って1単位になります。 およびのメンバー関数を使用して、 SetWindowExt SetViewportExt 必要な単位と軸の方向を指定します。 GDI は、x と y の単位が同じサイズであることを確認するために、必要に応じて調整を行います。

  • MM_LOENGLISH 各論理ユニットは0.01 インチに変換されます。 正の x は右側です。正の y は稼働しています。

  • MM_LOMETRIC 各論理ユニットは0.1 ミリメートルに変換されます。 正の x は右側です。正の y は稼働しています。

  • MM_TEXT 各論理ユニットは1つのデバイスピクセルに変換されます。 正の x は右側です。正の y がダウンしています。

  • MM_TWIPS 各論理ユニットは、ポイントの1/20 に変換されます。 (ポイントは1/72 インチであるため、twip は1/1440 インチです)。正の x は右側です。正の y は稼働しています。

戻り値

以前のマッピングモード。

Remarks

マッピングモードは、論理ユニットをデバイスユニットに変換するために使用される単位を定義します。また、デバイスの x 軸と y 軸の向きも定義します。 GDI は、マッピングモードを使用して論理座標を適切なデバイス座標に変換します。 MM_TEXTモードを使用すると、アプリケーションはデバイスピクセルで作業できます。1単位は1ピクセルです。 ピクセルの物理サイズは、デバイスごとに異なります。

MM_HIENGLISH、、 MM_HIMETRIC MM_LOENGLISHMM_LOMETRIC 、およびの MM_TWIPS 各モードは、物理的に意味のある単位 (インチやミリメートルなど) で描画する必要があるアプリケーションに役立ちます。 モードでは、 MM_ISOTROPIC イメージの正確な形状を維持することが重要な場合に、1:1 の縦横比が保証されます。 モードでは、 MM_ANISOTROPIC x 座標と y 座標を個別に調整できます。

注意

SetLayoutを呼び出して、DC (デバイスコンテキスト) を右から左へのレイアウトに変更すると、に SetLayout よってマッピングモードがに自動的に変更され MM_ISOTROPIC ます。

の例を参照してください CView::OnPrepareDC

CDC::SetMapperFlags

論理フォントを物理フォントに変換するときに、フォントマッパーによって使用されるメソッドを変更します。

DWORD SetMapperFlags(DWORD dwFlag);

パラメーター

dwFlag
フォントマッパーが、フォントの縦横の高さと幅をデバイスに一致させるかどうかを指定します。 この値がの場合 ASPECT_FILTERING 、マッパーは、指定されたデバイスの x 軸と y のアスペクトが完全に一致するフォントのみを選択します。

戻り値

フォントマッパーフラグの前の値。

Remarks

アプリケーションでを使用して、 SetMapperFlags フォントマッパーが、指定されたデバイスの縦横比と完全に一致する物理フォントのみを選択するようにすることができます。

ラスターフォントのみを使用するアプリケーションでは、関数を使用して、 SetMapperFlags フォントマッパーによって選択されたフォントが、指定されたデバイスで魅力的で読み取り可能であることを確認できます。 スケーラブル (TrueType) フォントを使用するアプリケーションでは、通常、を使用しません SetMapperFlags

論理フォントの指定に一致する縦横比を持つ物理フォントがない場合、GDI は新しい縦横比を選択し、この新しい縦横比に一致するフォントを選択します。

CDC::SetMiterLimit

デバイスコンテキストのマイター結合の長さの制限を設定します。

BOOL SetMiterLimit(float fMiterLimit);

パラメーター

fMiterLimit
デバイスコンテキストの新しいマイター制限を指定します。

戻り値

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

Remarks

マイタの長さは、結合の内側の線の壁面と、結合の外側の線の壁面の交差部分との距離として定義されます。 マイターリミットは、マイタ長が線の幅に対して許容される最大の比率です。 既定のマイター制限は10.0 です。

CDC::SetOutputDC

出力デバイスコンテキストを設定するには、このメンバー関数を呼び出し m_hDC ます。

virtual void SetOutputDC(HDC hDC);

パラメーター

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

Remarks

このメンバー関数は、デバイスコンテキストがオブジェクトにアタッチされていない場合にのみ呼び出すことができ 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 値。 COLORREFこの値の説明については、Windows SDK の「」を参照してください。

point
設定する点の論理 x 座標と y 座標を指定します。 POINTこのパラメーターには、構造体またはオブジェクトのいずれかを渡すことができ CPoint ます。

戻り値

ポイントが実際に描画される色の RGB 値。 この値は、 crColor その色の近似値が使用されている場合、で指定した値と異なる場合があります。 関数が失敗した場合 (ポイントがクリッピング領域の外側にある場合)、戻り値は-1 になります。

Remarks

ポイントはクリッピング領域に存在する必要があります。 点がクリッピング領域にない場合、関数は何も行いません。

一部のデバイスでは、SetPixel 関数がサポートされていません。 デバイスでがサポートされているかどうかを判断するには、インデックスを使用して SetPixel メンバー関数を呼び出し、 GetDeviceCaps RASTERCAPS フラグの戻り値を確認し 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 を返します。

Remarks

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

CDC::SetPolyFillMode

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

int SetPolyFillMode(int nPolyFillMode);

パラメーター

nPolyFillMode
新しい塗り分けモードを指定します。 この値は、 または のいずれか ALTERNATE になります WINDING 。 の既定のモードは、 Windowsです ALTERNATE

戻り値

成功した場合は、前の塗りモード。それ以外の場合は 0。

Remarks

多角形塗りつぶしモードが の場合、システムは、各スキャンライン上の奇数と偶数の多角形の辺の間の領域 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 逆 (最終的なピクセル = ~ (ペン ^ 画面ピクセル)) です。

戻り値

前の描画モード。

この値は、SDK の Windowsできます。

Remarks

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

描画モードはラスター デバイス専用です。ベクター デバイスには適用されません。 描画モードは、2 つの変数の可能なすべてのブール値の組み合わせを表すバイナリ ラスター演算コードです。2 項演算子 、、および (排他)、および 1 項演算 を & | ^ | 使用します ~

CDC::SetStretchBltMode

メンバー関数のビットマップストレッチ モードを StretchBlt 設定します。

int SetStretchBltMode(int nStretchMode);

パラメーター

nStretchMode
拡大モードを指定します。 次のいずれかの値を指定できます。

[説明]
BLACKONWHITE 削除されたピクセルと & 既存のピクセルの色の値を使用してブール演算を実行します。 ビットマップが白黒ビットマップの場合、このモードでは白ピクセルを犠牲に黒ピクセルが保持されます。
COLORONCOLOR ピクセルを削除します。 このモードでは、情報を保持しようとせずに、削除されたピクセル行はすべて削除されます。
HALFTONE マップ四角形のピクセルを、コピー先の四角形のピクセル ブロックに分割します。 ピクセルのターゲット ブロックの平均色は、ソース ピクセルの色を近似します。
ストレッチ モードを HALFTONE 設定した後、アプリケーションは Win32 関数を呼び出してブラシの原点 SetBrushOrgEx を設定する必要があります。 これが失敗した場合は、ブラシの不一定が発生します。
STRETCH_ANDSCANS Windows 95/98: と同じですBLACKONWHITE
STRETCH_DELETESCANS Windows 95/98: と同じですCOLORONCOLOR
STRETCH_HALFTONE Windows 95/98: と同じです HALFTONE
STRETCH_ORSCANS Windows 95/98: と同じですWHITEONBLACK
WHITEONBLACK 削除されたピクセルと | 既存のピクセルの色の値を使用してブール演算を実行します。 ビットマップが白黒ビットマップの場合、このモードでは黒ピクセルを犠牲に白ピクセルが保持されます。

戻り値

前のストレッチ モード。 STRETCH_ANDSCANSSTRETCH_DELETESCANS、または STRETCH_ORSCANS を指定できます。

Remarks

ビットマップストレッチ モードでは、 関数を使用して圧縮されたビットマップから情報を削除する方法を定義します。

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

このモードでは、他の 3 つのモードよりも多くのソース イメージの処理が必要です。他のモードよりも遅くなりますが、高品質の HALFTONE イメージが生成されます。 また、ブラシの 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です。

Remarks

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

CDC::SetTextCharacterExtra

Intercharacter 間隔の量を設定します。

int SetTextCharacterExtra(int nCharExtra);

パラメーター

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

戻り値

前の intercharacter 間隔の量。

Remarks

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

CDC::SetTextColor

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

virtual COLORREF SetTextColor(COLORREF crColor);

パラメーター

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

戻り値

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

Remarks

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

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

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

CDC::SetTextJustification

文字列内の改行文字にスペースを追加します。

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

パラメーター

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

nBreakCount
行の改行文字数を指定します。

戻り値

関数が正常に実行された場合は、それ以外の場合は0です。

Remarks

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

SetTextJustificationメンバー関数が呼び出された後、テキスト出力関数 (など) を呼び出すと、指定した TextOut 区切り文字の数の間に、指定した余分なスペースが均等に配分されます。 通常、改行文字は空白文字 (ASCII 32) ですが、他の文字としてフォントで定義することもできます。

このメンバー関数 GetTextExtent は、通常、と共に使用され SetTextJustification ます。 GetTextExtent 指定された行の配置前の幅を計算します。 アプリケーションでは、 nBreakExtra によって返された値を、 GetTextExtent 配置後の文字列の幅から減算することによって、パラメーターに指定する領域の大きさを決定できます。

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

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

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

CDC::SetViewportExt

デバイスコンテキストのビューポートの x と y の範囲を設定します。

virtual CSize SetViewportExt(
    int cx,
    int cy);

CSize SetViewportExt(SIZE size);

パラメーター

cx
ビューポートの x 範囲を指定します (デバイス単位)。

cy
ビューポートの y 範囲を指定します (デバイス単位)。

size
ビューポートの x と y の範囲 (デバイス単位) を指定します。

戻り値

オブジェクトとしてのビューポートの前のエクステント CSize 。 エラーが発生すると、返されたオブジェクトの x 座標と y 座標の CSize 両方が0に設定されます。

Remarks

ビューポートは、デバイスコンテキストウィンドウと共に、GDI が論理座標系のポイントを、実際のデバイスの座標系のポイントにどのようにマップするかを定義します。 つまり、GDI が論理座標をデバイス座標に変換する方法を定義します。

次のマッピングモードが設定されている場合、との呼び出し SetWindowExt SetViewportExt は無視されます。

MM_HIENGLISH MM_LOMETRIC
MM_HIMETRIC MM_TEXT
MM_LOENGLISH MM_TWIPS

MM_ISOTROPICMode が設定されている場合、アプリケーションはを 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

Remarks

ビューポートは、デバイスコンテキストウィンドウと共に、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 。 エラーが発生した場合は、返されたオブジェクトの x 座標と y 座標の CSize 両方が0に設定されます。

Remarks

ウィンドウは、デバイスコンテキストビューポートと共に、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 原点。

Remarks

ウィンドウは、デバイス コンテキスト ビューポートと共に、GDI が論理座標系内のポイントをデバイス座標系内のポイントにマップする方法を定義します。

ウィンドウの原点は、GDI がビューポートの原点 (関数で指定されたデバイス座標系内のポイント) をマップする論理座標系内のポイントをマーク SetWindowOrg します。 GDI は、ウィンドウの原点をビューポートの原点にマップするために必要なのと同じプロセスに従って、他のすべての点をマップします。 たとえば、ウィンドウの原点の点を囲む円内のすべてのポイントは、ビューポートの原点の点を囲む円になります。 同様に、ウィンドウの原点を通過する線内のすべてのポイントは、ビューポートの原点を通過する行になります。

CDC::SetWorldTransform

指定したデバイス コンテキストのワールド空間とページ空間の間の 2 次元線形変換を設定します。 この変換は、グラフィックス出力の拡大縮小、回転、回転、または変換に使用できます。

BOOL SetWorldTransform(const XFORM& rXform);

パラメーター

rXform
変換データ XFORM を含む 構造体への参照。

戻り値

成功時に 0 以外の値を返します。

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

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

Remarks

このメソッドは、GDI Windowsをラップします SetWorldTransform

CDC::StartDoc

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

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

パラメーター

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

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

戻り値

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

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

Remarks

これにより、1 ページを超えるドキュメントが他のジョブと相互に存在しなくなる可能性があります。

バージョンWindows 3.1 以降の場合、この関数はプリンター エスケープを置 STARTDOC き換える機能です。 この関数を使用すると、複数のページを含むドキュメントが他の印刷ジョブと相互に使用されません。

StartDoc はメタファイル内では使用できません。

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

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 以上、エラーが発生した場合は負の値。

Remarks

StartPage は、 をに取って NEWFRAME 、エスケープ BANDINFO します。

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

システムは、 と の呼 ResetDC び出しの間でメンバー関数を StartPage 無効にします EndPage

の例を参照してください 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 ブール型 OR 演算子を使用して、変換先ビットマップとソース ビットマップを組み合わせた結果を 反転 します。

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

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

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

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

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

  • SRCERASE 変換先ビットマップを反転し、ブール型 AND 演算子を使用して結果をソース ビットマップと 結合 します。

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

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

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

戻り値

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

Remarks

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

関数は、 によって指定されたソース デバイスから、メンバー関数が呼び出されているデバイス コンテキスト オブジェクトによって表される宛先デバイスにビットマップ StretchBlt pSrcDC を移動します。 xSrc ySrc 、、、 nSrcWidth および パラメーターは、ソース四角形の左上隅と nSrcHeight ディメンションを定義します。 、、、および パラメーターは、左上隅と、移動先の四角形 x y nWidth nHeight の大きさを示します。 で指定されたラスター操作では、ソース ビットマップとターゲット デバイス上に既に存在するビットを組み dwRop 合わせる方法を定義します。

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

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

コピー先ビットマップ、コピー元ビットマップ、およびパターン ビットマップの色の形式が異なる場合は、StretchBlt によって、コピー元ビットマップとパターン ビットマップが、コピー先ビットマップに合わせて変換されます。 変換では、コピー先デバイス コンテキストの前景色と背景色が使用されます。

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

一部のデバイスでは、StretchBlt 関数がサポートされていません。 デバイスでがサポートされているかどうかを判断するには、インデックスを使用して StretchBlt メンバー関数を呼び出し、 GetDeviceCaps RASTERCAPS フラグの戻り値を確認し RC_STRETCHBLT ます。

CDC::StrokeAndFillPath

パス内の開いているすべての図形を閉じ、現在のペンを使用してパスの輪郭をストロークし、現在のブラシを使用して内部を塗りつぶします。

BOOL StrokeAndFillPath();

戻り値

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

Remarks

デバイスコンテキストには、閉じたパスが含まれている必要があります。 この StrokeAndFillPath メンバー関数は、パス内のすべての開いている図形を閉じ、パスを個別に描画して塗りつぶすのと同じ効果があります。ただし、ペンの幅が広い場合でも、塗りつぶされた領域がストローク領域と重なることはありません。

CDC::StrokePath

現在のペンを使用して、指定したパスを描画します。

BOOL StrokePath();

戻り値

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

Remarks

デバイスコンテキストには、閉じたパスが含まれている必要があります。

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

Remarks

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

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

既定では、関数は現在位置を使用することも、更新することもありません。 アプリケーションで関数を呼び出すときに現在の位置を更新する必要がある場合、アプリケーションは、 SetTextAlign nFlags をに設定して、メンバー関数を呼び出すことができ TA_UPDATECP ます。 このフラグが Windows 設定されている場合、では、 x y 現在の位置を使用して、への後続の呼び出しで、パラメーターとパラメーターが無視され TabbedTextOut ます。

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

Remarks

文字の起点は文字セルの左上隅です。 既定では、関数は現在位置を使用することも、更新することもありません。

アプリケーションがを呼び出すときに現在の位置を更新する必要がある場合 TextOut 、アプリケーションは SetTextAlign nFlags をに設定して、メンバー関数を呼び出すことができ TA_UPDATECP ます。 このフラグが Windows 設定されている場合、では、 x y 現在の位置を使用して、への後続の呼び出しで、パラメーターとパラメーターが無視され TextOut ます。

の例を参照してください 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

Remarks

TransparentBlt 透過性を許可します。つまり、によって示される RGB 色 clrTransparent は、転送用に透明に表示されます。

詳細については、Windows SDK の「」を参照してください TransparentBlt

CDC::UpdateColors

クライアント領域の現在の色をピクセル単位でシステムパレットに一致させることによって、デバイスコンテキストのクライアント領域を更新します。

void UpdateColors();

Remarks

認識された論理パレットを持つ非アクティブウィンドウは、 UpdateColors システムパレットが変更されたときにクライアント領域を再描画する代わりに、を呼び出すことができます。

カラーパレットの使用の詳細については、Windows SDK の「」を参照してください UpdateColors

この UpdateColors メンバー関数は、通常、領域を再描画するよりも高速にクライアント領域を更新します。 ただし、関数は、システムパレットが変更される前に各ピクセルの色に基づいて色の変換を実行するため、この関数を呼び出すたびに、一部の色の精度が失われます。

CDC::WidenPath

現在のパスを、デバイスコンテキストで現在選択されているペンを使用して描画される領域として再定義します。

BOOL WidenPath();

戻り値

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

Remarks

この関数は、現在のペンが2番目のバージョンのメンバー関数によって作成されたジオメトリックペンである場合 CreatePen 、またはペンがの最初のバージョンで作成され、 CreatePen 幅が1より大きいデバイス単位の場合にのみ成功します。 デバイスコンテキストには、閉じたパスが含まれている必要があります。 パス内のすべてのベジエ曲線は、拡大された曲線のおおよその直線のシーケンスに変換されます。 そのため、が呼び出された後、パスにはベジエ曲線が残っていません WidenPath

関連項目

CObject 講義
階層図
CPaintDC 講義
CWindowDC 講義
CClientDC 講義
CMetaFileDC 講義