WINCE如何把控件窗口编程透明

devilline 2009-11-27 04:35:16
RT
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
devilline 2009-11-30
  • 打赏
  • 举报
回复
up。。。看看有没有更好的
wfx_net 2009-11-28
  • 打赏
  • 举报
回复
void DrawParentBackground(HWND hChild, HDC hDC, CRect rc)
{//取背景色
HWND hParent = GetParent(hChild);
CPoint pt(rc.TopLeft());
ClientToScreen(hChild, &pt);
ScreenToClient(hParent, &pt);
HDC hMemDC = CreateCompatibleDC(hDC);
CRect rcParent;
GetClientRect(hParent, rcParent);
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rcParent.Width(), rcParent.Height());
HBITMAP hOld = (HBITMAP)SelectObject(hMemDC, hBitmap);
SendMessage(hParent, WM_ERASEBKGND, (WPARAM)hMemDC, 0);
SendMessage(hParent, WM_PRINTCLIENT, (WPARAM)hMemDC, PRF_CLIENT);
BitBlt(hDC, rc.left, rc.top, rc.Width(), rc.Height(), hMemDC, pt.x, pt.y, SRCCOPY);
SelectObject(hMemDC, hOld);
DeleteObject(hBitmap);
DeleteDC(hMemDC);
}

然后在你更改内容后的地方添加
HDC hDC = ::GetDC(m_hWnd);
CRect rc;
static.GetWindowRect(rc);
ScreenToClient(rc);
DrawParentBackground(m_hWnd, hDC, rc);
::ReleaseDC(m_hWnd, hDC);
invalidate();
一定可以的
yschenwei 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwgddx 的回复:]
有些可以ONCTRLCOLOR消息里返回空刷子处理,但是有些控件不行,比如BUTTON, 要不就是自己重写,ONPAINT里面自己画,只画边框和文字就可以了.
要不然就用截取父窗口背景帖到空间窗体背景上.
[/Quote]
还是用第一种方式好点,因为WINCE虽然运行的时候是全屏的,但是也许允许最小化的。而且后面的背景窗口还有可能是动态的。
wwgddx 2009-11-27
  • 打赏
  • 举报
回复
有些可以ONCTRLCOLOR消息里返回空刷子处理,但是有些控件不行,比如BUTTON, 要不就是自己重写,ONPAINT里面自己画,只画边框和文字就可以了.
要不然就用截取父窗口背景帖到空间窗体背景上.

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧