0

CDCに配置された3つのビットマップを描画しCDC、それをに渡す単一のを使用したいと思いUpdateLayeredWindowます。私の問題はSIZE* psize、UpdateLayeredWindow関数のパラメーターを正しく取得できないことです。誰か助けてもらえますか?私は何をしますか?

BLENDFUNCTION bBlendFnc = {
    AC_SRC_OVER,
    0,
    255,
    AC_SRC_ALPHA
};

CBitmap btCdcBuff;
CBitmap* cache;
BITMAP hbCdcBuff;

btCdcBuff.CreateCompatibleBitmap(pCdcMain, szWndSize.cx, szWndSize.cy); btCdcBuff.GetBitmap(&hbCdcBuff);

cache = pCdcMain->SelectObject(&btCdcBuff); // pCdcMain is a compatible CDC with the screen (pCdcScreen)

Blend(&btIcon); // This function just creates a compatible CDC from a CPaintDC, selects the passed in CBitmap via SelectObject and AlphaBlends it to the pCdcMain.
pCdcMain->SelectObject(cache);

UpdateLayeredWindow(pCdcScreen, NULL, new CSize(hbCdcBuff.bmWidth, hbCdcBuff.bmHeight), pCdcMain, new CPoint(0, 0), 0, &bBlendFnc, ULW_ALPHA) // This fails and returns false
4

1 に答える 1

0

UpdateLayeredWindowでCreateCompatibleBitmapを使用する場合は、作成されたビットマップが正しい形式になるように、画面のCDC(つまり、pCdcMainではなくpCdcScreen)を渡すようにしてください。このスレッドを参照してください:http ://social.msdn.microsoft.com/Forums/en/windowsuidevelopment/thread/1fbcf5e4-b9eb-4537-bf0b-d330aa333fea

于 2012-04-19T16:32:54.883 に答える