基于对话框的程序,对话框背景图片上实现下拉框,只实现竖直下拉。每排四个动态创建的自绘按钮PNG图片,一共20个PNG按钮图片。如下图:初始化运行程序,有两排PNG按钮图片。现要实现下拉,看到后面的PNG图片。只实现竖直下拉。竖直下拉滚动条如下图:
下拉框透明,融合对话框背景图片(下拉框中创建动态自绘按钮贴PNG图片。)
望,CSDN中的高手们给予解决,方法。。谢谢!
下拉框透明,融合对话框背景图片(下拉框中创建动态自绘按钮贴PNG图片。)
望,CSDN中的高手们给予解决,方法。。谢谢!
20个按钮就用5行4列,每一个里面放一个按钮,然后高度设置成为两行的高度,就看来刚好适合了..
BRUSH CTestVscrollButtonPNGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔
if(nCtlColor==CTLCOLOR_EDIT && pWnd->GetDlgCtrlID()==IDC_LIST1) //注意此处的(pWnd->),否则没效果
{
pDC->SetTextColor(RGB(0,0,255));
//pDC->SetBkColor(RGB(0,0,0)); //设置文本背景色
pDC->SetBkMode(TRANSPARENT); //设置背景透明
}
return hbr;
}
nCtlColor==CTLCOLOR_EDIT 这样你改一下,试一试,应该好使的。
HBRUSH CCalcStockDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
//pWnd=::GetDlgItem(m_hWnd,IDC_PROMPT);
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
char Text[100];
::GetClassName(*pWnd,Text,30);///////获取控件类型,为比对并过滤控件群做准备。
if(strcmp(Text,"Combobox")==0)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_PROMPT:
pDC->SetBkColor(RGB(0,255,0));
pDC->SetTextColor(RGB(255,0,0));
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
OnCtlColor 这个可以实现窗体背景透明你看这响应改改就OK了
这段代码还是不能实现CListCtrl控件背景透明,和对话框背景图片一样
运行的时候对话框背景图片上显示白色边框,可是一拖动窗口,白色边框就没有了。
pDC->SetBkColor(RGB(0,255,0));
pDC->SetTextColor(RGB(255,0,0));
//////加上一句,试一试.
SetBkMode(Transparent);
HBRUSH CTestVscrollButtonPNGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔
//if(nCtlColor==CTLCOLOR_EDIT && pWnd->GetDlgCtrlID()==IDC_LIST1) //注意此处的(pWnd->),否则没效果
//{
// pDC->SetTextColor(RGB(0,0,255));
// //pDC->SetBkColor(RGB(0,0,0)); //设置文本背景色
// pDC->SetBkMode(TRANSPARENT); //设置背景透明
//} /*if (pWnd == this)
{
return m_brBk;
}*/ /*if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == 10000)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}*/ char Text[100];
::GetClassName(*pWnd,Text,30); ///////获取控件类型,为比对并过滤控件群做准备。
if(strcmp(Text,"Combobox") == 0)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_LIST1:
pDC->SetBkColor(RGB(0,255,0));
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
break;
}
} return hbr;
}
参考这个代码
http://download.csdn.net/download/gameslq/3639974
根据代码思路调整成自己的。
高手们,帮忙看看
高手们帮忙看看!
可以参考下