2014-07-05 24 views
0

我使用StretchDIBits()創建了一個圖片控件(ID = IDC_PICTURE)來顯示原始數據。原始數據圖像不顯示在使用StretchDIBits的圖片控件中

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

在下面一行...

hWndCtl =::GetDlgItem(hDlg,IDC_PICTURE); 

...你還沒有初始化hDlg,所以它可能是失敗,hWndCtl正在返回NULL

,這一行...

hdc =:: GetDC(hWndCtl); 

...實際上是GetDC(NULL),讓你桌面的DC。

因此,要解決這個問題,請確保你通過對話框HWNDGetDlgItem或者,因爲你正在使用MFC,使用CWndGetDlgItemCDialog派生類中是這樣的:

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 ... 
相關問題