vc ++关于void C**Dlg::OnPaint()
新建MFC,创建基本对话框。看C**DLG.cpp中就有这个C**Dlg::OnPaint()函数,但是我在新建一个对话框,新建一个类就没有这个函数,那么如下程序我该写在...
新建MFC,创建基本对话框。看C**DLG.cpp中就有这个C**Dlg::OnPaint()函数,但是我在新建一个对话框,新建一个类就没有这个函数,那么如下程序我该写在什么位置上呢?
void CSlecDlg::OnPaint()
{
CPaintDC dc(this);
if (IsIconic())
{
// device context for painting
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
{DrawUserPhoto(50,30,&dc); //我需要用到这个函数。需要显示bmp图片
CDialog::OnPaint();
}
}
/////////////////在屏幕上显示图像///////////////////
void member::DrawUserPhoto(int x, int y, CDC *pDC)
{
if(!m_hPhotoBitmap) return;
HBITMAP OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(m_hPhotoBitmap);
pDC->BitBlt(x,y,300,450,&MemDC,0,0,WHITENESS);
MemDC.SelectObject(OldBitmap);
} 展开
void CSlecDlg::OnPaint()
{
CPaintDC dc(this);
if (IsIconic())
{
// device context for painting
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
{DrawUserPhoto(50,30,&dc); //我需要用到这个函数。需要显示bmp图片
CDialog::OnPaint();
}
}
/////////////////在屏幕上显示图像///////////////////
void member::DrawUserPhoto(int x, int y, CDC *pDC)
{
if(!m_hPhotoBitmap) return;
HBITMAP OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(m_hPhotoBitmap);
pDC->BitBlt(x,y,300,450,&MemDC,0,0,WHITENESS);
MemDC.SelectObject(OldBitmap);
} 展开
1个回答
展开全部
对话框类的OnPaint函数的功能是不可替代的,它会在程序界面需要更新(比如窗口放缩,切换,还原,覆盖)的时候,被自动触发调用。
使用classwizard,重载对话框的WM_PAINT消息,会增加对话框OnPaint函数实体就可以了。
使用classwizard,重载对话框的WM_PAINT消息,会增加对话框OnPaint函数实体就可以了。
追问
如何使用classwizard的呀?小弟我刚学习,是说重载完成后,新的类的对话框也有onpaint了么?老的对话框的opaint也在吗?
追答
是的,重载完成后,新的类的对话框也有onpaint了
classwizard是最常用的VC向导工具,一定要熟悉。各个版本方式不同,如VC6,多个地方可以启动,可以在菜单view—classwizard开启。选中WM_PAINT,AddFunction就可以了。
文库中有详细的图文讲解:
http://wenku.baidu.com/view/97e93674a417866fb84a8ec0.html
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询