处理CWnd *的手柄? (MFC)

时间:2013-03-19 14:23:23

标签: c++ visual-studio-2010 mfc type-conversion handle

我在MFC程序中有一段代码如下:

    HANDLE newhandle = m_hWnd;    //A

    //draw the bitmap image on the window        
    BITMAP* bi = new BITMAP;
    CBitmap bmp;
    bmp.Attach(transferbitmap);
    CClientDC dc(newhandle);      //B
    //...
    //...
    //...

在线' A',我创建了一个名为newhandle的HANDLE,并将其设置为 m_hWnd ,类型为CWnd * 。这条线单独编译(使用Visual Studio 2010)很好,似乎工作。但是,看看行' B'当我尝试使用newhandle代替m_hWnd时,我收到了编译错误:

  

错误C2664:' CClientDC :: CClientDC(CWnd *)' :无法从' HANDLE'转换参数1到' CWnd *'

当我使用m_hWnd代替newhandle时,程序编译并运行正常。

我的问题是(是),为什么编译器让我将新句柄设置为CWnd *,但是当我尝试使用它时会发生错误?此外,有没有办法使用非MFC窗口句柄来替换m_hWnd,因为我试图从我的代码的较低级别删除所有MFC特定的代码?

0 个答案:

没有答案