作业帮 > 综合 > 作业

MFC C++初学,一个工程下有2个类,都有ONPAINT函数,那么在对话窗中绘制矩形应该用哪个类的ONPAINT函数?

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/20 00:03:51
MFC C++初学,一个工程下有2个类,都有ONPAINT函数,那么在对话窗中绘制矩形应该用哪个类的ONPAINT函数?
ONPAINT函数到底是在什么时候响应的?如果几个类都有ONPAINT,那么在对话框中相应矩形应该是用哪个类的ONPAINT?
void CMyDlgOpenGLDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND,reinterpret_cast(dc.GetSafeHdc()),0);
// 使图标在工作区矩形中居中
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;
// 绘制图标
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
比如说这两个同一个工程下的类的ONPAINT,如果我要画矩形究竟是哪个在类的ONPAINT上写代码,还有
BOOL CMyDlgOpenGLDlg::OnInitDialog()这个函数也可以画矩形,究竟是怎么回事?
{
CDialogEx::OnInitDialog();
.
// TODO:在此添加额外的初始化代码
CRect rect(7,7,600,600); //定义OpenGL 绘图窗口的矩形大小
//创建COpenGL类对象
m_pDisplay->Create(NULL,//缺省的窗口
.return true;}谢谢阿
MFC C++初学,一个工程下有2个类,都有ONPAINT函数,那么在对话窗中绘制矩形应该用哪个类的ONPAINT函数?
onpaint 就是系统认为需要重新绘制该图形时调用.例如某个窗口从被遮挡到不被遮挡,那么这个位置就得重绘的时候就会调用onpaint.调用的可能性有很多,例如最大最小化等.有多个onpaint就可以理解为多个地方会重绘,两者可以是相互独立互不影响的.你想在哪一个地方重绘就在哪一个地方写.至于在初始化画是可以的,不过你尝试让他被遮挡(例如其他窗口),或者最小化再还原,就会发现画的东西没了.
再问: 我的问题是,为什么在对话框类的ONPAINT是空的,但是在自定义类里写的ONPAINT却能在对话框中显示
再答: “对话框的onpaint为空”这句不能理解。函数体完整啊