因为我要用多线程编数据处理加显示程序,所以自定义了线程函数,但提示不能使用GetDC(),在其他VIEW类成员函数中就可以直接使用,谁教我,谢谢。

解决方案 »

  1.   

    多线程有时候是有些限制,不过听说用发送消息的方法可以解决此类问题,我是从这个帖子中得到的想法:
    http://community.csdn.net/Expert/topic/3704/3704703.xml?temp=6.031436E-02你参考一下
      

  2.   

    恩,是可以通过PostMessage(hwnd,LP,hp);发送消息来使程序某一部分接收应用MFC方便编程,可我是新手,不知道窗口程序的常用指针的获取方便,比方我要得到主程序句柄,AfxGetApp();
    可我现在想获得VIEW类的操作指针,不然我还是不知道如何直接操作pDC直接绘制图形;在VIEW类的函数中直接使用GetDC()是无参数的,但在外部,或者在自定义函数中是GetDC(HWND);请知道的人指教。
      

  3.   

    在View类中GetDC()没有参数,是因为它的参数外置了,即它获取的就是View本身的DC,而在外部,必须指明是获取哪个控件(基本上所有控件都有自己的DC)的DC,其参数HWND,就是所获取控件的DC的句柄。获取应用程序:AfxGetApp();
    获取主框架:AfxGetMainWnd();,或者AfxGetApp()->m_hWndMain;
    获取激活的View(如果是单文档的,就肯定激活的),设主框架指针位pMainWnd,则方法为:
                pMainWnd->GetActiveView();
    获取View的DC,设View的指针为pView,则方法为:
                pView->GetDC();
    或者:      ::GetDC(pView->m_hWnd);至于如何发送消息,我也不太懂,请其他高人解答……
      

  4.   

    谢谢帮助,明天我就试试,发送消息应该不会有大问题,不少书上都有写的。只是不知道今天为什么我自定义了VIEW类的消息后,在消息执行函数里还是不能执行VIEW类默认的GetDC(),提示信息显示getdc()也是全局函数,也需要HWND的参数。
      

  5.   

    不好意思,上面获取主框架的第二种方法有点问题,我说的是获取主框架句柄的方法,如果要获取主框架指针,除了第一种方法外,还可以是:AfxGetApp()->m_pMainWnd