0

我在 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*)”:无法将参数 1 从“HANDLE”转换为“CWnd*”

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

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

4

0 回答 0