如何在对话框内画圆,当在圆内点击鼠标左键时,圆随鼠标移动;当松开鼠标时
圆返回原来位置。如何实现?
圆返回原来位置。如何实现?
解决方案 »
- [求助]CStatic如何换行。急急急!
- 为什么我的VC6的Warning level设为none了,还输出警告信息?
- 我编译boost jam时出错,大家帮我看看该怎么解决?
- Dll可以导出 宏、模板函数、模板类、typedef定义 吗?可以的怎么导?
- 在不同的操作系统中,按钮显示的相对位置不正确!
- 我用ado写了个基于对话框的程序,出现error runtime. 谢谢!!!
- 请进来:菜单项的COMMAND消息处理函数的问题?
- 如何自画 CSliderCtrl 派生类?
- CALLBACK类型应该怎么添加,请大家帮我啊
- 毕设做的只剩最后一点了,有偿帮忙,谢谢各位大哥了
- 文字识别,高分相送
- VS .net 2003下的中文显示问题
代码:
void CRDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int x=point.x;
int y=point.y;
CDC *pDC=GetDC();
pDC->SetROP2(R2_XORPEN);
pDC->SelectStockObject(GRAY_BRUSH);
pDC->Ellipse(x-10, y-10, x+10, y+10); CDialog::OnMouseMove(nFlags, point);}
然后在OnMouseMove中画移动的圆,如果要避免一连串的话,要有擦除的语句
WM_LBUTTONUP中m_flag=TRUE,然后在先前记录的位子画圆
void CDfdDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_rcStart.PtInRect(point))
{
m_flag = TRUE;//左键按下记录
m_ptStart = point;//起始点
m_rcLast = m_rcStart;//起始圆
}
CDialog::OnLButtonDown(nFlags, point);
}void CDfdDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_flag = FALSE;
CDC *dc = GetDC();
CRect rcClient;
GetClientRect(&rcClient);
dc->FillSolidRect(&rcClient,dc->GetBkColor());
dc->Ellipse(&m_rcStart);
ReleaseDC(dc);
CDialog::OnLButtonUp(nFlags, point);
}void CDfdDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_flag)
{
CDC * dc = GetDC();
CRect rcClient;
GetClientRect(&rcClient);
CPoint ptTo = point;
dc->FillSolidRect(&rcClient,dc->GetBkColor());
dc->Ellipse(m_rcLast.left+point.x,m_rcLast.top+point.y,m_rcLast.right+point.x,m_rcLast.bottom+point.y);
ReleaseDC(dc);
}
CDialog::OnMouseMove(nFlags, point);
}
如果要完整文档,请留下电子邮件地址
是什么类型?
pDC->SetROP2(R2_XORPEN);//设置异或模式
pDC->Ellipse(....l); //在屏模上绘制圆;
//屏模上有圆
//再次绘制,就可以插除;
pDC->Ellipse(.....); //插除
//屏模上没有圆