在MFC中如何设计对话框的背景颜色和按扭颜色? 5

比如说把背景设置成红色、蓝色或者插入一张图片等... 比如说把背景设置成红色、蓝色或者插入一张图片等 展开
 我来答
wangliujiede
2011-05-27 · TA获得超过110个赞
知道答主
回答量:60
采纳率:0%
帮助的人:34.9万
展开全部
把你的图包含到程序的“Bitmap资源”里,提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以
具体步骤如下:
背景图像加载很简单,你只需要做以下几步即可(假设你的登陆界面对话框类名叫“CLoginDlg”):
(1)菜单“Insert(插入)”->"Resource(资源)",选择Bitmap,然后点“Import...(引入)”,选择你的背景图像(最好为bmp格式的,其它格式好像不行),然后假设该资源ID为“IDB_BITMAP1”;(系统默认就是这个ID)
(2)在LoginDlg.h下声明一个CBitmap m_BKbitmap;
(3)在LoginDlg.cpp的构造函数中:m_BKbitmap.LoadBitmap(IDB_BITMAP1);
如果有错的话,将上面第三条注释掉,再看看。

定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码
else
{
//CDialog::OnPaint();//要禁止这个调用
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);
//IDB_BITMAP1是你自己的图对应的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
gmajdgvt
2011-05-24 · TA获得超过456个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:111万
展开全部
在类中加个画刷成员brush,再在OnInitDialogj里面加创建画刷的代码,
如:brush.CreateSolidBrush(RGB(255,0,0));(当然你也可以创建位图画刷)
再对你的对话框加入OnCtlColor的消息响应,
在函数体里面其它的不变返回值改为return (HBRUSH) brush.GetSafeHandle();
最后在你的Button按扭的响应里加入:
1,去掉你已经创建的画刷 brush.DeleteObject();
2,重新创建一个画刷如 brush.CreateSolidBrush(RGB(0,255,0));
3, 刷新一下 Invalidate();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
G土匪G
2011-05-28
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
四楼的方法虽然可以将图片贴上去,但是会将对话框上的控件遮住;并且加载图片不一定非要加载到工程中,用LoadImage可以直接加载本地磁盘的文件,二楼的可以方法可以解决图片将控件遮住的问题,这里就不重复了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户77495
2011-05-26 · TA获得超过564个赞
知道小有建树答主
回答量:861
采纳率:0%
帮助的人:489万
展开全部

COLORREF color = dlg.GetColor();
获取颜色,dlg是CColorDlg dlg.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式