转自:http://hi.baidu.com/zhuangzi200323/blog/item/68bc3fe90ce00f33b90e2dfe.html
1.设置窗口属性为layer window.
// Set WS_EX_LAYERED on this window
SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 100% alpha
SetLayeredWindowAttributes(0, (255 * 100) / 100, LWA_ALPHA);
2.需要改变的时候如下调用:
SetLayeredWindowAttributes(0, ((255 - nTransparentValue) * 100) / 100, LWA_ALPHA);
BLENDFUNCTION blend;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.SourceConstantAlpha = 255 - nTransparentValue;
blend.SourceConstantAlpha = AC_SRC_ALPHA;
UpdateLayeredWindow(NULL, NULL, NULL, NULL, NULL, NULL, &blend, 2);
注意:窗口属性为layer window后,窗口重绘要由自己负责,可以把一窗口放到layer window之上。