if(m_Position.x>0)
{
                TEXTMETRIC metric;
       CDC* pDC;
       pDC->GetTextMetrics(&metric);  
       m_Position.x=m_Position.x-metric.tmAveCharWidth;

}
m_Position是记录鼠标的位置的,但我在调试时出现:D:\Microsoft Visual Studio\Roger's\notoolbar\NotoolbarView.cpp(142) : warning C4700: local variable 'pDC' used without having been initialized
这是为什么啊,而且程序运行到这一步就会出现异常而关闭。

解决方案 »

  1.   

    你的pDC是无效的
    NEW 一个 或从某个HWND 上获得一个
      

  2.   

    指针没有初始化,使用pDC = new CDC(this);
    不要忘了最后delete pDC;或者pDC = GetDC();
    使用完后ReleaseDC(pDC);
      

  3.   

    D:\Microsoft Visual Studio\Roger's\notoolbar\NotoolbarView.cpp(142) : warning C4700: local variable 'pDC' used without having been initialized这一句是编译时出现的吧?改为
    CDC* pDC = GetDC();
      

  4.   

    if(m_Position.x>0)
    {
                    TEXTMETRIC metric;
           CClientDC dc(this);
           dc.GetTextMetrics(&metric);  
           m_Position.x=m_Position.x-metric.tmAveCharWidth;

    }
      

  5.   

    你的pDC是一个野指针,你给他赋了什么东东了?你要给它指定具体的某一个设备描述表!
      

  6.   

    CDC *pDC = new CDC;
    pDC->CreateCompatableDC( ... );
    ....
      

  7.   

    还是 
    CClientDC dc(this)
    比较好
      

  8.   

    强烈推荐听In355Hz(好象一条狗) ( )的。简单明了。
    我罗索几句:
    this->GetDC()是得到当前窗口的描述。
    用哪个窗口去GetDC()就得到哪个窗口的DC。
      

  9.   

    Up顺便再提醒,GetDC()调后,一定要调用ReleaseDC(),否则资源会丢失,而调试器无法查出