lijianjun714
驱动小牛
驱动小牛
  • 注册日期2006-08-24
  • 最后登录2009-09-24
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望349点
  • 贡献值0点
  • 好评度162点
  • 原创分0分
  • 专家分0分
阅读:1037回复:1

OnDraw函数如何调用?急急急急!

楼主#
更多 发布于:2007-03-06 13:27
  我在做一个基于单文档的应用程序时遇到的情况:如下,想通过消息传递方式从CKeeTouch_DebugApp类发消息给CKeeTouch_DebugView类,调用CView类的OnDraw函数;

代码如下:

//CKeeTouch_DebugApp类
void CKeeTouch_DebugApp::OnDrawX()
{
  DebugView.WhichView=0;
  int k=DebugView.WhichView;
  ::PostMessage(DebugView.m_hWnd,WM_DRAWX, 0,   0);
}


//CKeeTouch_DebugView类
ON_MESSAGE(WM_DRAWX,Draw)
void CKeeTouch_DebugView::Draw()
{
  Invalidate();//程序每次走到这里就报错
  UpdateWindow();

}
void CKeeTouch_DebugView::OnDraw(CDC* pDC)
{
    CDC   MemDC;  
  CBitmap   MemBitmap;
  int nWidth=1024,nHeight=650;      
  MemDC.CreateCompatibleDC(NULL);  
    MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);  
    CBitmap   *pOldBit=MemDC.SelectObject(&MemBitmap);  
  MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(0,255,255));
      pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
  MemBitmap.DeleteObject();  
  MemDC.DeleteDC();
}

程序才VC下编译是通过的,可惜运行的时候每次走到调用   Invalidate()函数就出错!请问是为什么?我改怎么改呀!
hanyufeng
驱动牛犊
驱动牛犊
  • 注册日期2007-01-23
  • 最后登录2007-02-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-14 17:56
CKeeTouch_DebugApp类里的DebugView 不应该是CKeeTouch_DebugView类型的对象,而应该是这个类型的指针,然后在CKeeTouch_DebugApp::OnDrawX获取CKeeTouch_DebugView 的指针就可以了吧
游客

返回顶部