15,979
社区成员
发帖
与我相关
我的任务
分享
CPaintDC dc(this); // device context for painting
BLENDFUNCTION blend;
blend.BlendOp = 0;
blend.BlendFlags = 0;
blend.AlphaFormat = 1;
blend.SourceConstantAlpha = 255;//原对话框设置为全透明
CRect rc;
GetClientRect(&rc);
ClientToScreen(&rc);
//窗体样式设为层级窗体
DWORD dwExStyle = GetWindowLong(m_hWnd,GWL_EXSTYLE);
SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^WS_EX_LAYERED);
HDC m_hdcMemory;
//绘制内存位图
……
CImage ImgSrc;
ImgSrc.Load(m_strImage);
ImgSrc.Draw(m_hdcMemory,0,30);//将图片画到内存DC上
//使用UpdateLayerWindow进行窗口透明处理
SIZE sizeWindow = {rc.Width(),rc.Height()};
POINT ptWinPos = {rc.left, rc.top};
POINT ptSrc = {0, 0};
UpdateLayeredWindow(CDC::FromHandle(hdcTemp),&ptWinPos,&sizeWindow,
CDC::FromHandle(m_hdcMemory), &ptSrc, RGB(255,0,255), &blend, ULW_COLORKEY);