收录日期:2020/10/31 00:40:19 时间:2016/07/11 11:05:10 标签:界面
我这边遇到一个小的问题,就是我在我的对话框上面放了一个位图,用来做整个对话框的背景色,我是在整个程序完成以后才添加的这个picture位图,问题来了,我原来在对话框上设置的一些控键不显示了,只有我把鼠标放到按纽的位置的时候才显示按纽,有几个原先加的pictuer小的位图干脆就不显示了,即使是鼠标放到它所在的位置,这种情况应该怎么解决啊????我知道是跟添加的顺序有关的,我如何在不改变添加顺序的情况下来显示我添加的所有控键呢???
位图怎么显示的?

直接在OnEraseBkgnd绘制就行了
看下这篇帖子

Tile, center and stretch a bitmap as your MFC dialog background

http://www.codeproject.com/KB/dialog/bmpdlg01.aspx
一般来说应该在OnEraseBkgnd(CDC* pDC)中加上位图背景,用picture会覆盖别的控件.
引用 2 楼 ilovedrv 的回复:
看下这篇帖子 

Tile, center and stretch a bitmap as your MFC dialog background 

http://www.codeproject.com/KB/dialog/bmpdlg01.aspx


正解~~
通常的做法是响应窗口的WM_ERASEBKGND消息来贴图;也可以响应WM_PAINT消息贴图。
如果用一个Picture控件,把这个控件设置为Tab顺序的第1个就可以了。
楼上正解
// in .h  CBitmap m_bitmap;
// in contors: m_bitmap.LoadBitmap(IDB_CLOUDS);//改成你的位图
BOOL CDlgHasToolBarDlg::OnEraseBkgnd(CDC* pDC) 
{
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMem.SelectObject(&m_bitmap);
// Retrieve the size of our bitmap...
BITMAP bmp;
m_bitmap.GetObject(sizeof(bmp),&bmp);
// and the size of our window's client area
CRect rect;
GetClientRect(&rect);
// Fill the window's client area with our bitmap
pDC->StretchBlt(rect.left, rect.top,rect.Width(), rect.Height(),
&dcMem,0, 0, bmp.bmWidth, bmp.bmHeight,SRCCOPY);
dcMem.SelectObject( pOldBitmap );
//
return TRUE;//CDialog::OnEraseBkgnd(pDC);
}
另外dlg通常看不到OnEraseBkgnd,先在"class info"中把dialog改为window,搞好OnEraseBkgnd消息后再改回去,当然你也可以自己写.
改变picture和控件的重绘次数即可。
写错了:改变picture和控件的重绘次序即可。
.............................
我知道是跟添加的顺序有关的,我如何在不改变添加顺序的情况下来显示我添加的所有控键呢???
-----------------------------------------------------------------------------------
从你的问题来看,似乎位图是动态加入的.因此,在不改变有关次序的前提下显示所有控件的方法一般有:
1.自己设计Cdialog的派生类,如2楼所给示例;
2.发送wm-paint消息,重绘对话框内所有控件.
处理WM_ERASEBKGND消息

Can I catch the event when browser window is being maximized Or minimized? javascrifpt实现读数据库功能! 有什么办法可以把用c语言做的程序翻译到delphi来做啊? 请问internal怎么使用? 广州公司招聘.NET开发工程师(2人) 关于在xslt文件里面建立批量删除的问题? 怎么模拟CTRL+ENTER按键啊? 怎样在VCL类继承的组件中作图?? ShowWindow()问题? 急!jbuilderX修改sqlsever2000数据问题??? 请问怎样实现xsl改变日期显示的格式?急 大家帮得看看。 如何判断 string 字符串中第i个字符是否为双字节字的第一个字节? 调用资源出错,错在哪里呢?谢谢。 dbedit的自动保存问题? VC中能否实现从OCX控件读出类来 小问题,有劳各位帮忙 谢谢 文件存储 Tomcat的中文文件名问题~~Help~~ 请问VC里面怎样知道一个变量或一个数据类型的定义位置.感谢!!! frames vs form 请问什么情况下会遇到“参数 *** 没有默认值” 如何遍历一个目录下的所有文件,并取得其各文件的文件名??? 日期时间问题? 谢谢!!! 本站的下载中心在那里?请告知,马上给分 怎样用MFC写一个没有标题栏和菜单的界面? 菜鸟问题(咱穷给不起分啊!!而且这是菜鸟问题,谁都可以回答,^_^) 200分在对话框上画曲线,长度要比对话框的长度大