通过参数传递。
注意CDC生存期。

解决方案 »

  1.   

    myCDC必须用GetDC()或CreateDC()等函数初始化
    你可以建一个显示器兼容DC
    CDC *pDisplayMemDC=new CDC;
    pDisplayMemDC->CreateCompatibleDC(NULL);
      

  2.   

    首先,你要得到str显示长度,总是和输出有关,你总是需要一个DC才能输出str,DC一般是两种可能:窗口或者打印输出。假设你是在窗口中输出,你首先要在你那个类里得到窗口的指针或者HWND,假设你使用前一种方法,你有了CWnd *pWnd,那么代码如下:
    CClientDC dc(pWnd);
    CSize mySize = dc.GetTextExtent(str);
      

  3.   

    如果你获得的是那个窗口的HWND,如HWND hWnd,则代码如下:
    HDC hDC = GetDC(hWnd);
    CDC *pDC = CDC::FromHandle(hDC);
    CSize mySize = pDC->GetTextExtent(str);
    ReleaseDC(hWnd, hDC);