我在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特定的代码?