送分题!!!在sdk中怎么实现静态文本框的透明效果?????

wjy88 2002-03-14 03:40:45
BOOL CALLBACK TestCplProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
case WM_CTLCOLORSTATIC:

{

HDC hDC = (HDC)wParam;

SetBkMode(hDC,TRANSPARENT);

//return (LRESULT)(HBRUSH)GetStockObject(NULL_BRUSH);
return (BOOL)(HBRUSH)GetStockObject(NULL_BRUSH);
}

case WM_ERASEBKGND:
InitBack(hwnd);
return TRUE;


}
代码如上为什么不行啊?
...全文
169 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjy88 2002-04-08
  • 打赏
  • 举报
回复
决定令开一贴专门讨论slider的透明问题!!现在结贴!
sunbo394 2002-04-05
  • 打赏
  • 举报
回复
做一个slider子类,自己绘图,然后把对话框中的控件子类化
Cline 2002-04-05
  • 打赏
  • 举报
回复
1.如果STATIC透明,那当改变它的内容时,在背景上(比如Dialog)就会出现重迭。
2.MFC的CStatic好像不支持自画。

我在对话框上显示透明文字,文字随改动(比如:音频播放进度),是这样做的。
1。把CButton放平---------自画
2。把背景的内容(比如对话框的CButton区域)保存起来-----CBitmap.
3。CButton每次绘画时,保存起来的内容刷一下,再画文字。

以供参考!
hnyyy 2002-04-05
  • 打赏
  • 举报
回复
让那个静态文本框隐藏,然后获得其在客户区的位置为m_rect;
在OnPaint中dc.DrawText("sth",m_rect,DT_...);
行不行?
jyu1221 2002-04-04
  • 打赏
  • 举报
回复
用以下代码,测试过了,可以的。
case WM_CTLCOLORSTATIC:
SetBkMode((HDC) wParam,TRANSPARENT);
break;
jywwm 2002-04-04
  • 打赏
  • 举报
回复
我顶!!
逸少 2002-04-02
  • 打赏
  • 举报
回复
窗口子类化,重写STATIC 类的 WM_PAINT 消息的响应 ,使用透明模式。
wjy88 2002-04-02
  • 打赏
  • 举报
回复
for chzy00(逸少) :
说详细点,最好给段代码看看!!谢谢
分不够可以再加!!!
y_x_j_0 2002-03-28
  • 打赏
  • 举报
回复
关注
allenrose 2002-03-26
  • 打赏
  • 举报
回复
用微软的GDI++试一试
我不是大明 2002-03-26
  • 打赏
  • 举报
回复
具体哪些不理想!
chdan 2002-03-26
  • 打赏
  • 举报
回复
对不起,对slider好像没有什么方便的办法
buleshark 2002-03-26
  • 打赏
  • 举报
回复
不管什么窗体,都是由画刷画出的,要想透明,就是要用一个空的画刷
具体如下:
LPCTSTR lpWndCls = AfxRegisterWndClass(CS_DBLCLKS,hCursor,NULL);//(HBRUSH)brush);
BOOL bRet = CWnd::CreateEx(WS_EX_TRANSPARENT, lpWndCls, NULL,
WS_POPUP|WS_VISIBLE,nStarx, nStarym_nWndWidth,m_nWndHeight,
pWndParent->GetSafeHwnd(), NULL, NULL);
如果还不行,留下E-mail给你个透明窗体类看看
chdan 2002-03-22
  • 打赏
  • 举报
回复
wjy88 (明明) :
你的方法是可行的,但对静态文本框还要加设WS_EX_TRANSPARENT属性,否则Tab Order也会影响最终呈现结果。
WM_ERASEBKGND中也不用做特殊处理
wjy88 2002-03-22
  • 打赏
  • 举报
回复
for wenzuodan(wenzuodan) :

我要的是静态文本框不要盖住它所在窗体的背景图片!!!
cz 2002-03-22
  • 打赏
  • 举报
回复
CEdit的问题解决了,在有输入时,调用其父窗口的InvalidateRect函数刷新相应的父窗口的区域。

这个问题困扰我很久了,我也试着把父窗口的内容在CEdit中重绘制,重写CEdit的OnPaint,效果不理想。
cz 2002-03-22
  • 打赏
  • 举报
回复
slider也应该存在这种问题。
cz 2002-03-22
  • 打赏
  • 举报
回复
这种方法对于不变的CStatic是可行的,但是对于要更新的控件如,CEdit效果
就不行了,背景没有办法擦除,效果一团糟。
有没有解决CEdit的透明问题,就像PaintBrush中的在图片上透明写字一样。
(不要说重新写一个CEdit)
wjy88 2002-03-22
  • 打赏
  • 举报
回复
for chdan(chdan):
谢谢你,一定给你加分,你知道怎么把slider设为透明吗?
wenzuodan 2002-03-21
  • 打赏
  • 举报
回复
具体实现什么功能都不清楚,叫别人怎么给你意见?
你要的是静太文本框在移动覆盖其他窗口时将显示被覆盖的窗口吗?
加载更多回复(12)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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