进度条重绘背景怎么设置

枫青痕 2017-01-11 07:33:27

继承进度条类
里面的刻度表是用加载图片jnp , jnp图片的圆外面是透明的, 现在控件内 刻度以为跟对话框还有色差,我要怎么写能让 刻度外跟对话框别的地方一样的颜色。

HBRUSH CAS3MainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if((pWnd-> GetDlgCtrlID() == IDC_PROGRESS1))
{

pDC->SetBkMode(OPAQUE); //设置背景透明
return HBRUSH(GetStockObject(NULL_BRUSH));
}

// TODO: 在此更改 DC 的任何特性

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
...全文
192 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
枫青痕 2017-01-12
  • 打赏
  • 举报
回复
引用 1 楼 pcradio 的回复:
jnp是什么格式? 转png用GDI+画就行。 或者创建一个圆形的子窗体,窗体的RGN和表盘一样,就GDI贴图上去也行。
DrawThemeParentBackground 在父窗口 对话框OnInitDialog调吗?
	HWND cWnd  = GetDlgItem(IDC_PROGRESS1)->m_hWnd;
	HDC hdc = ::GetDC(cWnd );
	CRect rect;
	GetDlgItem(IDC_PROGRESS1)->GetClientRect(rect);
	ScreenToClient(rect);
	DrawThemeParentBackground(cWnd ,hdc,rect);
	::ReleaseDC(cWnd ,hdc);
GetDlgItem(IDC_PROGRESS1)->m_hWnd;就奔溃了 在对话框OnInitDialog;
枫青痕 2017-01-12
  • 打赏
  • 举报
回复
引用 1 楼 pcradio 的回复:
jnp是什么格式? 转png用GDI+画就行。 或者创建一个圆形的子窗体,窗体的RGN和表盘一样,就GDI贴图上去也行。
说了了 我是用png图片的不是jnp 该子控件是进度条弄不了圆形的 ; 现在想让控件的4个角边和 对话框一样,说白了就是透明; OnCtlColor()好像对进度条无效 调试发现都不进去, IDC_PROGRESS1是进度条ID
叶恭介叶恭介 2017-01-12
  • 打赏
  • 举报
回复
#pragma comment( lib, "UxTheme.lib") DrawThemeParentBackground(m_hWnd, hMemdc, &rt); 调用该函数会自动绘制父窗口内容,从而达到透明 另外可以填充颜色嘛,填充跟对话框一样的背景颜色
枫青痕 2017-01-12
  • 打赏
  • 举报
回复
解决了http://www.cnblogs.com/MaxWoods/p/3742716.html
阿源是少年 2017-01-11
  • 打赏
  • 举报
回复
jnp是什么格式? 转png用GDI+画就行。 或者创建一个圆形的子窗体,窗体的RGN和表盘一样,就GDI贴图上去也行。

15,979

社区成员

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

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