我使用StretchDIBits()制作了一个图片控件(ID = IDC_PICTURE)来显示原始数据。
HWND hDlg,hWndCtl;
hWndCtl =::GetDlgItem(hDlg,IDC_PICTURE);
hdc =:: GetDC(hWndCtl);
::StretchDIBits(hdc,0,0,width,height,0,0,width,height,raw_image,m_pBitMapInfo,DIB_RGB_COLORS,SRCCOPY);
但图像显示在我的桌面屏幕上,而不是我制作的图片控件内。我怎么解决这个问题?非常感谢你。
答案 0 :(得分:0)
在以下一行......
hWndCtl =::GetDlgItem(hDlg,IDC_PICTURE);
...您尚未初始化hDlg
,因此可能会失败并且hWndCtl
将作为NULL
返回。
然后这一行...
hdc =:: GetDC(hWndCtl);
...实际上是GetDC(NULL)
,它为您提供了桌面的DC。
因此,要解决此问题,请确保将对话框的HWND
传递给GetDlgItem
,或者在使用MFC时使用CWnd
版本的GetDlgItem
}来自你的CDialog
派生类,如下所示:
CWnd *pWnd = GetDlgItem(IDC_PICTURE); // add error checking here for NULL return
HDC hdc =::GetDC(pWnd->GetSafeHwnd()); // use the HWND of the control to get the DC
// ... do the blit ...