需要在界面中画线,使用MFC生成的基于对话框的程序。
把以下代码放到OnInitDialog函数中: CDC* pDC;
CPen pen1;
pen1.CreatePen(PS_SOLID,2,RGB(0,0,255));
CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);
pDC->MoveTo(0,0);
pDC->LineTo(10,10);
pen1.DeleteObject();编译无法通过。感觉是肯定不对,如果能放到OnDraw或者OnPaint里就会好些,但是肯定还有别的毛病。
求教如何解决这个画线的问题。
把以下代码放到OnInitDialog函数中: CDC* pDC;
CPen pen1;
pen1.CreatePen(PS_SOLID,2,RGB(0,0,255));
CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);
pDC->MoveTo(0,0);
pDC->LineTo(10,10);
pen1.DeleteObject();编译无法通过。感觉是肯定不对,如果能放到OnDraw或者OnPaint里就会好些,但是肯定还有别的毛病。
求教如何解决这个画线的问题。
还有 最后,要先把pen1选出设备描述表
再把它删了
就是要在删除之前
pDC->SelectObject(pPenOld);
CDC* pDC;
CPen pen1;
pDC = GetDC();
pen1.CreatePen(PS_SOLID,2,RGB(0,0,255));
pDC->SelectObject(pen1);
pDC->MoveTo(100, 200);
pDC->LineTo(100, 230);
pen1.DeleteObject();
ReleaseDC(pDC);
void CTP03Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(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); CPen pen1;
pen1.CreatePen(PS_SOLID,3,RGB(0,0,255));
CPen* pPenOld=(CPen*)dc.SelectObject(&pen1);
dc.MoveTo(0,0);
dc.LineTo(100,100);
dc.SelectObject(pPenOld);
pen1.DeleteObject(); }
else
{
CDialog::OnPaint();
}
}
{
if (IsIconic())
{
CPaintDC dc(this); // 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
{
CPaintDC dc(this);
CDC* pDC;
CPen pen1;
pDC = GetDC();
pen1.CreatePen(PS_SOLID,2,RGB(0,0,255));
// CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);
pDC->SelectObject(pen1);
pDC->MoveTo(100, 200);
pDC->LineTo(100, 230);
pen1.DeleteObject();
ReleaseDC(pDC);
CDialog::OnPaint();
}
}
CPen pen1;
pen1.CreatePen(PS_SOLID,3,RGB(0,0,255));
CPen* pPenOld=(CPen*)dc.SelectObject(&pen1);
dc.MoveTo(0,0);
dc.LineTo(100,100);
dc.SelectObject(pPenOld);
pen1.DeleteObject();放在最下面,就是
else
{
CDialog::OnPaint();
}
的下面