非网页 我想利用 Active 的方法 来实现作图.首先捕获两个消息 鼠标DOWN和 UP 消息。void CActiveCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
m_OldPoint = point;
COleControl::OnLButtonDown(nFlags, point);
}void CActiveCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_NewPoint = point;
COleControl::OnLButtonUp(nFlags, point);
}然后添加一个方法void CActiveCtrl::MakeMap(SHORT LineStyle, SHORT LineType, SHORT lWith)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_nLineStyle = LineStyle; //画图风格
m_lWith = lWith; //宽度
m_LineType = LineType; // 画图类型
MakeMaping();
}然后作图函数。
void CActiveCtrl::MakeMaping()
{
CClientDC dc(this);
CPen m_Pen(m_nLineStyle,m_lWith,RGB(255,0,0));
dc.SelectObject(&m_Pen);
CBrush *m_Brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(m_Brush);
switch (m_LineType)
{
case 1:dc.Ellipse(CRect(m_OldPoint,m_NewPoint));
break;
case 2:dc.MoveTo(m_OldPoint);
dc.LineTo(m_NewPoint);
break;
case 3:dc.SetPixel(m_NewPoint,RGB(255,0,0));
break;
case 4:dc.Rectangle(CRect(m_OldPoint,m_NewPoint));
break;
}
}问题是为啥我测试没有效果呢?哪儿出错了啊因为我想通过方法来实现调用作图函数 所以 应该如何编写代码才是正确的啊?
{
m_OldPoint = point;
COleControl::OnLButtonDown(nFlags, point);
}void CActiveCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_NewPoint = point;
COleControl::OnLButtonUp(nFlags, point);
}然后添加一个方法void CActiveCtrl::MakeMap(SHORT LineStyle, SHORT LineType, SHORT lWith)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_nLineStyle = LineStyle; //画图风格
m_lWith = lWith; //宽度
m_LineType = LineType; // 画图类型
MakeMaping();
}然后作图函数。
void CActiveCtrl::MakeMaping()
{
CClientDC dc(this);
CPen m_Pen(m_nLineStyle,m_lWith,RGB(255,0,0));
dc.SelectObject(&m_Pen);
CBrush *m_Brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(m_Brush);
switch (m_LineType)
{
case 1:dc.Ellipse(CRect(m_OldPoint,m_NewPoint));
break;
case 2:dc.MoveTo(m_OldPoint);
dc.LineTo(m_NewPoint);
break;
case 3:dc.SetPixel(m_NewPoint,RGB(255,0,0));
break;
case 4:dc.Rectangle(CRect(m_OldPoint,m_NewPoint));
break;
}
}问题是为啥我测试没有效果呢?哪儿出错了啊因为我想通过方法来实现调用作图函数 所以 应该如何编写代码才是正确的啊?
解决方案 »
- AddNew的时候报错“当前记录集不支持更新,这可能是提供程序的限制,也可能是选定锁定类型的限制”
- 请大家购买skinbeauty的换肤控件,以免上当。
- 怎样判断combobox是否为空
- 用openprocess做了一個全局鉤子實現進程防殺,關閉程序時任務管理器出錯
- 找图片,呵呵,哪里有电脑通过usb与手持设备通讯的gif图片?
- 关于MFC在框架的cpp中引用视图的头文件的问题
- 用VC++实现“字体的笔画借助OpenGL绘制的六面体实现”(100分,谢谢)
- 由VC编写的程序到VS2008中的错误如何修改
- 哪里有Microsoft Visual C++ for Windows CE 下载?
- 为何无法注册窗口类啊~~~~!!
- 类似mediaplay 的精简版是怎么处理?是怎么将完整版本切换到精简版的?
- 一个关于对话框处理函数的问题
是方法啊。。在另一个IDE中 测试的时候 调用了的
Active1.MakeMap(0,1,1) 没有任何效果!
我想一般实在鼠标弹起时触发绘图吧? 但是你的代码中可能没有触发
void CActiveCtrl::OnLButtonDown(UINT nFlags, CPoint point)//鼠标按下消息
{
m_OldPoint = point;
COleControl::OnLButtonDown(nFlags, point);
}void CActiveCtrl::OnLButtonUp(UINT nFlags, CPoint point)//鼠标放开消息
{
CClientDC dc(GetDesktopWindow());//桌面作图
CPen m_Pen(PS_SOLID,m_lWith,RGB(255,0,0));
dc.SelectObject(&m_Pen);
CBrush *m_Brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(m_Brush);
switch (m_LineType)
{
case 1:dc.Ellipse(CRect(m_OldPoint,point));
break;
case 2:dc.MoveTo(m_OldPoint);
dc.LineTo(point);
break;
case 3:dc.SetPixel(point,RGB(255,0,0));
break;
case 4:dc.Rectangle(CRect(m_OldPoint,point));
break;
}
COleControl::OnLButtonUp(nFlags, point);
}void CActiveCtrl::MakeMap(int LineType,int lWith)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_lWith = lWith;
m_LineType = LineType;
}
还是没法作图,不明白怎么回事了!