iga肾病能买重疾保险吗:layered?window
来源:百度文库 编辑:偶看新闻 时间:2024/05/03 10:24:50
想用 UpdateLayeredWindow 就千万不能调用 SetLayeredWindowAttribut
另外:
调用 SetLayeredWindowAttribut
然而调用 UpdateLayeredWindow 之后系统就不管了,以后不会再有 WM_PAINT 消息
// 使用 SetLayeredWindowAttribut
{
// Initialize
BLENDFUNCTION Blend = {AC_SRC_OVER, 0, 255,AC_SRC_ALPHA };
SetLayeredWindowAttribut
}
// 使用 UpdateLayeredWindow 的例子,窗口的扩展样式一定需要带有 WS_EX_LAYERED
void OnPaint(HWND hWnd)
{
RECT rect;
::GetWindowRect(hWnd, &rect);
POINT ptWinPos = {rect.left, rect.top};
SIZE sizeWindow = {rect.right - rect.left, rect.bottom - rect.top};
HDC hdc = ::GetDC (hWnd);
HDC hdcGdi = ::CreateCompatibleDC (hdc);
HBITMAP hBitMap = ::CreateCompatibleBitmap(hdc, rect.right - rect.left, rect.bottom - rect.top);
HGDIOBJ hOldBmp = ::SelectObject(hdcGdi, hBitMap);
// 在这里加入绘图代码
// GDI 不支持 Alpha 透明,所以GDI绘图会有问题
// GDI+ 支持 Alpha,可以使用
// 据我的使用结果来看,如果善用 GetDIBits 和 SetDIBitsToDevice 的话,使用GDI绘图,性能上感觉要好一些
POINT ptSrc = {0, 0};
// Initialize
BLENDFUNCTION Blend = {AC_SRC_OVER, 0, 255,AC_SRC_ALPHA };
::UpdateLayeredWindow(hWnd, NULL, &ptWinPos, &sizeWindow, hdcGdi, &ptSrc, 0, &Blend, ULW_ALPHA);
::SelectObject(hdcGdi, hOldBmp);
::DeleteObject(hBitMap);
::DeleteDC(hdcGdi);
hdcGdi = NULL;
::ReleaseDC(hWnd, hdc);
}