做一旋钮,有刻度和刻度值,如何实现刻度和刻度值的背景透明,且拖动时也如此???

fffei 2003-08-21 08:57:50
做一旋钮,有刻度和刻度值,如何实现刻度和刻度值的背景透明,且拖动时也如此???我总是无法实现拖动时也保持透明,总是会被很多背景上的东西符着于上。烦也,请叫大家了!!!!
如有例程请发:sclxr@sina.com
...全文
44 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fffei 2003-08-24
  • 打赏
  • 举报
回复
ringphone(临风) ,你好,用SetWindowRgn对不规则窗口实现起来速度真的是很慢。
对于你所说的第2中方法呢,我不知道在哪个消息函数里记录将被遮盖的背景。总是一不小心就把自己也给记录进去了。
请教!!
ringphone 2003-08-24
  • 打赏
  • 举报
回复
你应该是实现父窗口的OnPaint消息的,在父窗口的OnPaint中把旋钮覆盖的图象记录下来。另外用setWindowRgn是可以很快的,你不应该用GetPixelV等函数,而是直接对图象数据操作,用GetDIBits可以得到图象数据,然后对数组操作判断哪个是透明色。
fffei 2003-08-23
  • 打赏
  • 举报
回复
hydcumt(hyd) ,你好!
是的,我想要的就是创建时就能指定父窗口的类。
我也试过用CreateEx建立,但是在移动窗口的的过程中父窗口背景上的东西总是会掉到我建立的这个窗口上,又因为我是保留自己建立的这个窗口的一部分(为了方便对非单一色父窗口背景透明),所以用INVALIDATE也是完全无用的。
另外我想说的是那个SetLayeredWindowAttributes函数,WM_POPUP不能与WM_CHILD 同时使用,这样有很大局限性啊。
hydcumt 2003-08-23
  • 打赏
  • 举报
回复
在2000中,要想SetLayeredWindowAttributes有作用,你新创建的窗口必须具备WM_POPUP属性,否则不起作用。
还有一种方法可以创建一个全透明的窗口:
我曾经建了个仪表盘就是这样做的:
CreateEx(0,
AfxRegisterWndClass(0,::LoadCursor(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDC_MENU_CURSOR))),
_T(""),
WS_VISIBLE | WS_CHILD |WS_EX_TOPMOST,//|WS_POPUP,
nUpTopX,
nUpTopY,
nWidth,
nHeight,
hwndParent,
NULL,
NULL );
ShowWindow(SW_SHOW);
UpdateWindow();
ringphone 2003-08-23
  • 打赏
  • 举报
回复
SetLayeredWindowAttributes对窗口也有用,但在WIN98不支持,因此不建议你使用这种方法。你要实现透明可以有几个方法,一是实现不规则窗口,这样有关背景上的东西就一点麻烦都没有。还有就是记录被你窗口遮挡住的图案,绘制到窗口实现视觉上的透明。
fffei 2003-08-21
  • 打赏
  • 举报
回复
顺便问一下,SetLayeredWindowAttributes是不是只对对话框才有用啊????????????????????????????????
fffei 2003-08-21
  • 打赏
  • 举报
回复
是窗口,派生自CWnd。
哦,谢谢你理我啊
ringphone 2003-08-21
  • 打赏
  • 举报
回复
请问你的旋钮是一个什么样的东西?图片还是窗口.根据不同的类型有不同的处理方法.
fffei 2003-08-21
  • 打赏
  • 举报
回复
555555555555555555555555555555555555555555
都没人理我:(

15,979

社区成员

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

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