#include "l_bitmap.h"
L_LTDIS_API L_INT L_PaintDCOverlayCallback(pCallbackData、pBitmap、nIndex、pSrc、pClipSrc、pDst、pClipDst、uROP3);
pPAINTCALLBACKDATA pCallbackData; |
/* コールバックデータ構造へのポインター*/ |
pBITMAPHANDLE pBitmap; |
/* オーバレイを格納している主要なビットマップ操作機能へのポインター*/ |
L_INT nIndex; |
/* 描画のために使われるオーバレイビットマップのインデックス*/ |
L_RECT * pSrc; |
/*ソース長方形(オーバレイ座標ででなく、pBitmap座標で!)*/ |
L_RECT * pClipSrc; |
長方形(オーバレイ座標ででなく、pBitmap座標で!)をクリップしている/*ソース*/ |
L_RECT * pDst; |
/*デスティネーション四角形(オーバレイ座標ででなく、pBitmap座標で)*/ |
L_RECT * pClipDst; |
長方形(オーバレイ座標ででなく、pBitmap座標で)*/をクリップしている/*デスティネーション |
L_UINT32 uROP3; |
/* 表示のためのウィンドウROP code*/ |
カスタムコールバックを使用して指定されたインデックスでオーバレイを描画します。自動的に描画されないオーバレイを描画するために、この関数を使います。
パラメーター |
説明 |
pCallbackData |
デバイスコンテキスト(DC)と描画コールバックを格納している構造体へのポインタ。デバイスコンテキストのマッピング方式は、MM_TEXTでなければなりません。 |
hDC |
ディスプレイの表面としての使い方へのデバイスコンテキスト(例えば画面)へのハンドル。デバイスコンテキストのマッピング方式は、MM_TEXTでなければなりません。 |
pBitmap |
主なビットマップを参照文に引用しているビットマップハンドルへのポインター。 |
nIndex |
描画のために使われるオーバレイのインデックス。オーバレイは、ビットマップを持っていなければなりません。オーバレイがビットマップbitplaneに埋め込まれるならば、この関数を呼び出す前にオーバレイビットマップを作成することを確認します。このインデックスはゼロから始まります。 |
pSrc |
ディスプレイソースとしての使い方にビットマップの部分を指定するWindows RECT構造体へのポインター。 |
|
RECT構造体の座標は、主なビットマップに対する相対座標です。デフォルトを使うためにNULLを渡すことができます。そして、それは主なビットマップと一致します。 |
pClipSrc |
描画するためにディスプレイソースの部分を指定するWindows RECT構造体へのポインター。通常、ソースビットマップの一部が変更したとき、これが表示を更新するために使われます。 |
|
RECT構造体の座標は、主なビットマップに対する相対座標です。デフォルトを使うためにNULLを渡すことができます。そして、それは主なビットマップと一致します。 |
pDst |
ソース長方形がどのように拡大縮小されるか、そして、imageがどのようにデバイスコンテキストで配置されるか決定するWindows RECT構造体へのポインター。 |
|
RECT構造体の座標は、デバイスコンテキストに対する相対座標です。デフォルトが、このパラメーターのためにありません。RECT構造体を指定しなければなりません。 |
pClipDst |
描画するためにディスプレイ長方形の部分を指定するWindows RECT構造体へのポインター。通常、ユーザーが別のウィンドウを移動する場合など、表示面の変更を更新するために使用します。覆い隠された画像の一部が明らかになります。 |
|
RECT構造体の座標は、デバイスコンテキストに対する相対座標です。デフォルトを使うためにNULLを渡すことができます。そして、それはデバイスコンテキストと一致します。しかし、ほとんどの場合、Windows WM_PAINTメッセージによって返される長方形を使わなければなりません。 |
uFlags |
デスティネーション四角形はどうか決定するWindows ROP codeが、更新しました。このパラメーターは、Windowsビットブリット関数と同じコードをとります。通常の描画のために、SRCCOPYを使います。 |
uROP3 |
デスティネーション四角形はどうか決定するWindows ROP codeが、更新しました。このパラメーターは、Windowsビットブリット関数と同じコードをとります。通常の描画のために、SRCCOPYを使います。 |
戻り値
SUCCESS |
関数は成功しました。 |
<1 |
エラーが発生しました。リターンコードを参照してください |
コメント
PAINTCALLBACKDATA構造体で保存されるならば、描画しているHDC。「どのGDI関数をオーバーライドすることができるかに関する詳細のためのそのドキュメンテーション」を参照してください。
この関数は、オーバレイビットマップを描画します。描画長方形の詳細については、L_PaintDCを参照します。L_PaintDCは、OVERLAY_AUTOPAINTをOVERLAYATTRIBUTES構造体のuFlagsメンバで設定しておくすべてのオーバレイを描画します。オーバレイは、インデックス順序をのぼる際に描画されます:オーバレイ0は最初に描画されて、そして1などの上に横たわりました
オーバレイを手動で描画するために、この関数を使います。たとえば、オーバレイが描画される命令を変更するために、オーバレイのOVERLAYATTRIBUTES構造体のuFlagsメンバからOVERLAY_AUTOPAINTフラグをクリアして、直接L_PaintDCOverlayCallbackを呼び出します。
一時的にオーバレイを最上位にするために、L_PaintDCの後L_PaintDCOverlayCallbackを呼び出します。永久にオーバレイを最上位にして、そのインデックスを変更して、それに最高のものを与えることは、インデックスを定義しました。
オーバレイビットマップの1ピクセルは、OVERLAYATTRIBUTES構造体のcrColorメンバでカラーを設定して描画されます。オーバレイビットマップの0のピクセルは、透明であると思われます。
OVERLAY_AUTOPAINTフラグとcrColorを含むオーバレイ属性の詳細については、OVERLAYATTRIBUTESを参照します。
必須のDLLとライブラリ
ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください。 |
Win32 x 64
参照
サンプル
このサンプルは、pBitmapがオーバレイを格納すると仮定します。まるでオーバレイ0がそうであるように、それは見た目にします一番上の、サンプルはhDCも前提とします、そして、pDestはどこかほかで初期化されました。
L_INT PaintDCCallbackOverlayExample(HDC hDC, pBITMAPHANDLE pBitmap, LPRECT pDest) { L_INT nRet; PAINTCALLBACKDATA PaintCallbackData; /* Initialize the paint callback data structure */ memset(&PaintCallbackData, 0, sizeof(PaintCallbackData)); PaintCallbackData.uStructSize = sizeof(PAINTCALLBACKDATA); PaintCallbackData.pDisplay = hDC; /* set the paint callbacks for the GDI functions you are overriding here PaintCallbackData.pIsCompatibleDC = MyIsCompatibleDC; PaintCallbackData.pStretchDIBits = MyStretchDIBits; etc */ nRet = L_PaintDCCallback(&PaintCallbackData, pBitmap, NULL, NULL, pDest, NULL, SRCCOPY); if(nRet != SUCCESS) return nRet; nRet = L_PaintDCOverlayCallback(&PaintCallbackData, pBitmap, 0, NULL, NULL, pDest, NULL, SRCCOPY); if(nRet != SUCCESS) return nRet; /* Now overlay 0 is topmost (it covers all the other overlays) */ return SUCCESS; }