对话框中画线 画线invalidate 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); } else { CDC* pDC = GetDC(); pDC -> MoveTo(CPoint(0,0)); pDC -> LineTo(curMousePoint); ReleaseDC(pDC); CDialog::OnPaint(); } else{CPaintDC dc(this); // 用于绘制的设备上下文// CDC* pDC = GetDC(); 不是这个DCdc.MoveTo(CPoint(0,0));dc. LineTo(curMousePoint);// CDialog::OnPaint();} 把你OnPaint里的内容都删掉重新写成下面这样就可以了void CxxxxDlg::OnPaint(){ CPaintDC dc(this); dc. MoveTo(CPoint(0,0)); dc.LineTo(curMousePoint);} 那就是CDC和CPaintDC的区别造成的了,谢谢了,我去查查两者的区别 用于无效区的DCCPaintDC用于有效区的DCCClientDCCWindowDC 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);}else{ CDC* pDC = GetDC(); pDC -> MoveTo(CPoint(0,0)); pDC -> LineTo(curMousePoint); //curMousePointy该对应到一个特点点 ReleaseDC(pDC);// CDialog::OnPaint(); 此句必须去掉} 专业问题,非诚勿扰。。。谢谢(HttpQueryInfo)! 请教指针失效的问题 怎么收UDP广播包啊? 数字签名,那位给个解决方案? 怎样写代码把两个文件合并成一个文件? 类型转化之char*,CString,_bstr_t,_variant_t,LPCTSTR之间的关系和转换 如何实现OICQ的位图闪动(回答问题确实正确分不够可以加分) 怎么得到对话框的handle vc如何实现模糊编程 在vc里怎样定义一个类 关于局域网数据包截取软件的问题 opc客户端AddItems 返回值为s_false
{
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);
}
else
{
CDC* pDC = GetDC();
pDC -> MoveTo(CPoint(0,0));
pDC -> LineTo(curMousePoint);
ReleaseDC(pDC);
CDialog::OnPaint();
}
else
{
CPaintDC dc(this); // 用于绘制的设备上下文
// CDC* pDC = GetDC(); 不是这个DC
dc.MoveTo(CPoint(0,0));
dc. LineTo(curMousePoint);
// CDialog::OnPaint();
}
重新写成下面这样就可以了void CxxxxDlg::OnPaint()
{
CPaintDC dc(this);
dc. MoveTo(CPoint(0,0));
dc.LineTo(curMousePoint);
}
CPaintDC
用于有效区的DC
CClientDC
CWindowDC
{
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);
}
else
{
CDC* pDC = GetDC();
pDC -> MoveTo(CPoint(0,0));
pDC -> LineTo(curMousePoint); //curMousePointy该对应到一个特点点
ReleaseDC(pDC);
// CDialog::OnPaint(); 此句必须去掉
}