想用PIC控件在界面上放一个背景图,然后再在这上面添加几个按钮,但显示的时候,那张图总把按钮挡住了,不知道有没什么好办法解决?
解决方案 »
- 如何在对话框大小不变的情况下仍然能够响应onsizing()消息
- 求在VC MFC中创建多个工具栏的代码
- 串口类取得的数据实时的发送到视图
- 关于串口通信中,奇偶校验的问题?
- CSDN的高手在哪里?
- 有谁知道每次使用MSCOMM控件接收和传送数据前需不需要清除接收和输入缓冲区,怎么清除?
- ServU-FTP组建的FTP服务器,Telnet方式下客户端发送什么命令可以更改FTP账号的口令
- 请问各位大虾怎样在一个几百M的二进制文件中查找某个数据段?
- InternetGetConnectedState的连接问题?
- socket通信的问题
- combobox的下拉框内容显示超出范围后,如何让它根据内容长度自动变长呢?
- 关于存入mysql中的中文乱码的问题!
最好的方法是在WM_ERASEBKGND消息中直接绘制图片,而不是使用控件。
{
static CBrush hbr; CRect rc;
GetClientRect(&rc); if(hbr.m_hObject==NULL){
hbr.CreatePatternBrush(&bmp);
bmp.DeleteObject();
}
pDC->FillRect(&rc,&hbr);
return 1;
}这样写不知道是不是可以,怎么发现根本就没响应这个消息呢ON_WM_ERASEBKGND()
BOOL CAddPoi::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rect;
CBitmap bitmap;
BITMAP bmp;
CDC dcCompatible; bitmap.LoadBitmap(IDB_BITMAP47);
bitmap.GetBitmap(&bmp);
dcCompatible.CreateCompatibleDC(pDC);
CBitmap *pOlBitmap = dcCompatible.SelectObject(&bitmap);
GetWindowRect(&rect); pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
dcCompatible.SelectObject(pOlBitmap);
DeleteDC(dcCompatible.m_hDC);
return TRUE;
//return CDialog::OnEraseBkgnd(pDC);
}
GetDlgItem(IDC_STATIC1)->ModifyStyle(0, WS_CLIPSIBLINGS);
注意,控件ID不要用IDC_STATIC。
赞同!因为在初始的时候所有的CStatic 类型的 静态文本框 和 Picture控件都共享同一个IDC_STATIC,直接GetDlgItem指定会出错。另外,可以试试看把被遮挡的按钮ctrl+x 剪切后,再次
ctrl+v 粘贴上去,应该也能解决被遮挡的问题。