想用MFC做个界面,但不知道如何在MFC对话框中插入背景图片,把这图片用于登录界面的背景
想用MFC做个界面,但不知道如何在MFC对话框中插入背景图片,把这图片用于登录界面的背景,还有那个按钮控件,如何用图片来代替,希望高手详细指教下,还有要修改的代码也写上,...
想用MFC做个界面,但不知道如何在MFC对话框中插入背景图片,把这图片用于登录界面的背景,还有那个按钮控件,如何用图片来代替,希望高手详细指教下,还有要修改的代码也写上,谢谢啦。菜鸟正在努力学习中。
展开
4个回答
展开全部
背景图像加载很简单,你只需要做以下几步即可(假设你的登陆界面对话框类名叫“CLoginDlg”):
(1)菜单“Insert”->"Resource",选择Bitmap,然后点“Import...”,选择你的背景图像,然后假设该资源ID为“IDB_BITMAP1”;
(2)在LoginDlg.h下声明一个CBitmap m_BKbitmap;
(3)在LoginDlg.cpp的构造函数中:m_BKbitmap.LoadBitmap(IDB_BITMAP1);
(4)在LoginDlg.cpp的OnPaint()函数中写上:
void CLoginDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
BITMAP bm;
CRect rect;
CDC dcMem;
m_BKbitmap.GetBitmap (&bm);
GetClientRect(&rect);
dcMem.CreateCompatibleDC (&dc);
CBitmap *oldbitmap=dcMem.SelectObject (&m_BKbitmap);
dc.BitBlt (0,0,bm.bmWidth ,bm.bmHeight ,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(oldbitmap);
CDialog::OnPaint();
}
}
你的问题就OK了。
关于按钮控件显示图片,建议你可以下载一个CButton的继承类,什么“CButtonST”啊、“CBtnST”啊、“CDlgShadeButtonST”啊,自己手写的话不划算,有很多现成的控件类,都写的非常好,完全可以拿来为我们所用。
(1)菜单“Insert”->"Resource",选择Bitmap,然后点“Import...”,选择你的背景图像,然后假设该资源ID为“IDB_BITMAP1”;
(2)在LoginDlg.h下声明一个CBitmap m_BKbitmap;
(3)在LoginDlg.cpp的构造函数中:m_BKbitmap.LoadBitmap(IDB_BITMAP1);
(4)在LoginDlg.cpp的OnPaint()函数中写上:
void CLoginDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
BITMAP bm;
CRect rect;
CDC dcMem;
m_BKbitmap.GetBitmap (&bm);
GetClientRect(&rect);
dcMem.CreateCompatibleDC (&dc);
CBitmap *oldbitmap=dcMem.SelectObject (&m_BKbitmap);
dc.BitBlt (0,0,bm.bmWidth ,bm.bmHeight ,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(oldbitmap);
CDialog::OnPaint();
}
}
你的问题就OK了。
关于按钮控件显示图片,建议你可以下载一个CButton的继承类,什么“CButtonST”啊、“CBtnST”啊、“CDlgShadeButtonST”啊,自己手写的话不划算,有很多现成的控件类,都写的非常好,完全可以拿来为我们所用。
展开全部
对话框右边有个“控制”小工具条,有个按钮是图像 ,用它插入,设置图片的属性后,最后在菜单->布局->Tab顺序,把背景图片的号码改为最大
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void CLogin::ShowPic()
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
HBITMAP hbitmap=(HBITMAP)bmp.Detach();
m_key.ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);
m_key.SetBitmap(hbitmap);
UpdateData(false);
}
int CLogin::DoModal()
{
return CDialog::DoModal();
}
BOOL CLogin::OnInitDialog()
{
CDialog::OnInitDialog();
ShowPic();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用对话框的OnPaint绘制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询