我自己做了一个按钮类,在其中的DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)中调用一个透明效果处理DrawTransBitmap(....),但是这个按钮显示的时候,只有第一次是正常的透明的,
但是当这个按钮被别的窗口覆盖以后,再还原显示出来的时候,
这个按钮的背景就变成刚刚那个窗口的背景颜色了,不透明了,请问我应该怎么修改呢?
我只在DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)中进行了透明处理,是不是还应该在别的地方也做呢?
但是当这个按钮被别的窗口覆盖以后,再还原显示出来的时候,
这个按钮的背景就变成刚刚那个窗口的背景颜色了,不透明了,请问我应该怎么修改呢?
我只在DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)中进行了透明处理,是不是还应该在别的地方也做呢?
解决方案 »
- npapi 插件如何主动调用 js 里面的函数
- 如何把两个VC++6.0项目合并
- VC 鼠标移动到Static Text控件上改变字体颜色,离开恢复其原颜色
- ATM软件技术交流群84307820
- [[[[[有难度的问题!高手快来!送分1000!]]]]]
- 炮炮,请进
- 函数调用方式中的PASCAL是什么意思?
- 在线等待, 如何隐藏菜单下的某一项
- 如何监控网络邻居,在何时对共享文件进行了什么样的操作
- 请问如何列出iis中所有虚拟目录的物理路径?
- 怎样将字符串添加到access表的对应字段中(vc数据库小问题)
- 100分求助:microsoft visual c++ runtime library, runtime error
SetBkMode((HDC)wParam, TRANSPARENT);
return (LONG)GetStockObject(NULL_BRUSH);
我在网上找了一圈没找到
我响应OnCtlColor()消息,但是它的返回值和你告诉我的不一样啊,是不是我方法不对呢?
应该怎么做才对啊?
{
HBRUSH hbr = CGameFrameView::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_BTN)
{
return (HBRUSH)GetStockObject(NULL_BRUSH);
} return hbr;
}但是还是没好,麻烦你再帮我看看行吗,我需不需要在CSkinButton类中,再做些什么呢?
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_EDIT)
pDC->SetTextColor(RGB(0,0,255)); if(nCtlColor== CTLCOLOR_LISTBOX)
{
HBRUSH m_hbrush;
m_hbrush=CreateSolidBrush(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT);
//设置字体颜色
pDC->SetTextColor(RGB(255,255,255));
return m_hbrush;
}
CBrush m_cBrush;
m_cBrush.CreateSolidBrush(RGB(0,255,255));
switch(nCtlColor)
{
case CTLCOLOR_DLG:
pDC->SetBkMode(TRANSPARENT);
break;
case CTLCOLOR_STATIC:
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(0,255,255));
break;
}
DeleteObject(m_cBrush);
// TODO: Return a different brush if the default is not desired
return hbr;
}
只画有图形的地方,不画背景,应该让Button的父窗口刷新一下如何让父窗口刷新呢?
只画有图形的地方,不画背景,应该让Button的父窗口刷新一下如何让父窗口刷新呢?
只画有图形的地方,不画背景,应该让Button的父窗口刷新一下如何让父窗口刷新呢?