1, 新建MFC SDI工程Test
2, 在视图类CTestView添加成员变量 CDC *pDc
3, 响应OnLButtonDown消息void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
pDc = GetDC();
pDc->MoveTo(point);
}4, 响应OnLButtonUp消息void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
pDc->LineTo(point);
}然后我运行程序,在A点按下鼠标不放,拖动到B点放开鼠标,为什么没有画出线出来?
如果我将pDc->LineTo(point)移动到OnLButtonDown函数里面是可以画线的
我跟踪的了程序,发现OnLButtonUp函数被执行了,里面的pDc->LineTo(point)这个代码也被执行到了,但就是没有线条出来还有我想知道为什么MFC中总是有这些莫名其妙的,让我无法解释的,稀奇古怪的错误出现?
2, 在视图类CTestView添加成员变量 CDC *pDc
3, 响应OnLButtonDown消息void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
pDc = GetDC();
pDc->MoveTo(point);
}4, 响应OnLButtonUp消息void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
pDc->LineTo(point);
}然后我运行程序,在A点按下鼠标不放,拖动到B点放开鼠标,为什么没有画出线出来?
如果我将pDc->LineTo(point)移动到OnLButtonDown函数里面是可以画线的
我跟踪的了程序,发现OnLButtonUp函数被执行了,里面的pDc->LineTo(point)这个代码也被执行到了,但就是没有线条出来还有我想知道为什么MFC中总是有这些莫名其妙的,让我无法解释的,稀奇古怪的错误出现?
解决方案 »
- VC++ 中InfoViewer无法显示
- 内存拷贝
- MFC对话框菜单控制问题
- 我想把我的这几年的代码共享出来,大约几百兆,放那里呢?
- usbkey插拔问题
- 我new两个以上的线程,为什么始终只有两个线程工作?
- 如何將一個CString類型的變量內容傳遞到一個帶指針類型參數的函數中?
- COM调用问题:怎样在应用程序调用完COM的方法,并退出后,使COM继续运行?
- 向大虾请教关于用程序模拟键盘和鼠标的输入问题?(mouse_event和keybd_event)
- VC 中CLASSVIEW看不到类问题
- MFC对话框中,我想通过一个加载区域的按钮控制另一个区域的加载窗体
- 关于SetFilePointer()的问题
这个pDC是从哪来的呢?
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
pDc = GetDC();
m_ptStart = point;
}
void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
pDc->MoveTo(m_ptStart);
pDc->LineTo(point);
}
这样就可以了,但是画图要到画图的消息函数里进行.
而且用GetDC完后要进行::ReleaseDC,否则会内存泄露,还有要判断指针pDC是否为空...
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptStart = point;
}
void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
CClientDC dc(this);
dc.MoveTo(m_ptStart);
dc.LineTo(point);
}
void CMoveToView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_sPoint = point;
CView::OnLButtonDown(nFlags, point);
}void CMoveToView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_pDc = GetDC();
m_pDc->MoveTo(m_sPoint);
m_pDc->LineTo(point);
ReleaseDC(m_pDc);
CView::OnLButtonUp(nFlags, point);
}
你的有问题,这样就OK了,看看。