社区
界面
帖子详情
对话框上放一个pic控件来显示一张背景图,这图显示的时候却总把它上面的控件挡住了
warsour
2009-01-22 02:30:33
想用PIC控件在界面上放一个背景图,然后再在这上面添加几个按钮,但显示的时候,那张图总把按钮挡住了,不知道有没什么好办法解决?
...全文
294
12
打赏
收藏
对话框上放一个pic控件来显示一张背景图,这图显示的时候却总把它上面的控件挡住了
想用PIC控件在界面上放一个背景图,然后再在这上面添加几个按钮,但显示的时候,那张图总把按钮挡住了,不知道有没什么好办法解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Fireway2008
2009-01-23
打赏
举报
回复
[Quote=引用 8 楼 cnzdgs 的回复:]
给pic控件加上WS_CLIPSIBLINGS风格就可以了:
GetDlgItem(IDC_STATIC1)->ModifyStyle(0, WS_CLIPSIBLINGS);
注意,控件ID不要用IDC_STATIC。
[/Quote]
赞同!因为在初始的时候所有的CStatic 类型的 静态文本框 和 Picture控件都共享同一个IDC_STATIC,直接GetDlgItem指定会出错。
另外,可以试试看把被遮挡的按钮ctrl+x 剪切后,再次
ctrl+v 粘贴上去,应该也能解决被遮挡的问题。
路人乙2019
2009-01-23
打赏
举报
回复
[Quote=引用 1 楼 jameshooo 的回复:]
SetWindowPos(hwndPic, HWND_BOTTOM, ...);
最好的方法是在WM_ERASEBKGND消息中直接绘制图片,而不是使用控件。
[/Quote]也可以得载onerasebackground
showxier
2009-01-23
打赏
举报
回复
[Quote=引用 1 楼 jameshooo 的回复:]
最好的方法是在WM_ERASEBKGND消息中直接绘制图片,而不是使用控件。
[/Quote]
同意.
你看图片在程序中的作用了,如果仅仅只是显示好看,并不要求跟用户有太多交互,那就在背景中绘了.
warsour
2009-01-23
打赏
举报
回复
根本就没响应WM_ERASEBKGND消息,把上面的代码写到OnPaint()里面就可以了,不过这样做似乎更简单GetDlgItem(IDC_STATIC1)->ModifyStyle(0, WS_CLIPSIBLINGS); 谢啦~记得用CTRL+D调整下顺序~
cnzdgs
2009-01-22
打赏
举报
回复
给pic控件加上WS_CLIPSIBLINGS风格就可以了:
GetDlgItem(IDC_STATIC1)->ModifyStyle(0, WS_CLIPSIBLINGS);
注意,控件ID不要用IDC_STATIC。
jackyy_000503
2009-01-22
打赏
举报
回复
响应类的WM_EraseBkgnd 消息,在函数里加入以下代码,把图片画在窗体上当背景,这样就不会挡住按钮了。函数中的 IDB_BITMAP47 是加入资源的图片ID,把这个换成你资源里的图片ID,其它代码不变,就可以了。
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);
}
jbhas
2009-01-22
打赏
举报
回复
TAB顺序+透明
fandh
2009-01-22
打赏
举报
回复
改变TAB键的顺序,好像刷新顺序与这个有关,你将他们间的顺序设置先后试试!
warsour
2009-01-22
打赏
举报
回复
BOOL CFlvRipperDlg::OnEraseBkgnd(CDC* pDC)
{
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()
jameshooo
2009-01-22
打赏
举报
回复
几句话难以说清。还有一种办法可用,就是把按钮都创建为pic控件的子窗口。
warsour
2009-01-22
打赏
举报
回复
直接绘制不是很熟,能否给点代码提示下
jameshooo
2009-01-22
打赏
举报
回复
SetWindowPos(hwndPic, HWND_BOTTOM, ...);
最好的方法是在WM_ERASEBKGND消息中直接绘制图片,而不是使用控件。
SmartBeijing Day06
,这个是我们这样
一个
回答对吧,当然还有
一个
elseif,这是我们发音的
一个
功能,当然我们发音还有
一个
功能,就说我们在聊天的时候,或者说话的时候,它会在手机屏幕中间弹出
一个
对话框
,
对话框
中有个声波,我说句话它...
Qt 菜鸟经验
总
结18则
关于调用 moc 程序处理 signal and slot机制,有时候 qmake 生成的 Makefile 文件并不调用moc来预处理,因此这个时候可以先删除 Makefile,然后再生成。 错误信息大致为: 3.允许这样的语句:Layout->setGeometry( ...
QT小技巧
但在制作典型的多文档和 单文档程序时我们有更好的选择— QmainWindow类,它可以方便的管理其中的菜单工具条主窗口和状态条等,在窗体几何属性发生变化时也能完美的实现内部组件缩放,这比用传统的几何 布局类来管理要...
Qt小技巧
答:重新实现这个窗体的 closeEvent()函数,加入判断操作 void MainWindow::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettings(); event->accept(); } else { event->i
Qt 技术积累
总
结(-) 1> 定时器的使用 QTimer ... 创建
一个
画布, objWidget 为当前 画笔的要画到哪里, 一般为 Widget 对象 ... 可以绘制图片 ... 设置背景颜色 ...
一个
Action 相当于
一个
具体的菜单项 ...
界面
15,978
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章