MFC,用控件在界面上加一个背景图,显示时图片会遮住这个界面上的按钮,请教各位,该怎么办?
答案:2 悬赏:60 手机版
解决时间 2021-03-18 00:49
- 提问者网友:浪荡绅士
- 2021-03-17 03:14
MFC,用控件在界面上加一个背景图,显示时图片会遮住这个界面上的按钮,请教各位,该怎么办?
最佳答案
- 五星知识达人网友:白昼之月
- 2021-03-17 04:13
不要用控件加背景图!可以直接加的!像下面这样做,我就是这样做的,没问题!
先载入一张图片,如ID为IDB_BITMAP
头文件中:
CBrush m_brBk;//在public中定义
源文件中:
在初始化函数OnInitDialog()中加入: (或者在构造函数中)
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();
return TRUE; // return TRUE unless you set the focus to a control
}
再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),
添加如下:
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd == this)
{
return m_brBk;
}
return hbr;
}
先载入一张图片,如ID为IDB_BITMAP
头文件中:
CBrush m_brBk;//在public中定义
源文件中:
在初始化函数OnInitDialog()中加入: (或者在构造函数中)
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();
return TRUE; // return TRUE unless you set the focus to a control
}
再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),
添加如下:
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd == this)
{
return m_brBk;
}
return hbr;
}
全部回答
- 1楼网友:归鹤鸣
- 2021-03-17 05:28
不要用控件做背景,可以在OnPaint或OnDraw函数里绘制追问在OnPaint或OnDraw函数里怎么绘制啊?能不能说具体点,最好能有类似的代码参考一下追答你的是对话框还是文档/视结构?可以把源程序发过来,我给你改追问我的是dialog,源程序就算了吧,还是我自己想想办法,多练习练习吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯