【问题标题】:CreateDIBSection in MFC and rendering using picture controlMFC中创建DIBSection并使用图片控件进行渲染
【发布时间】:2011-07-01 05:22:14
【问题描述】:

我正在使用调用 CreateDIBSection 在 MFC 中创建一个 DIB 部分。我从调用中得到一个HBITMAP,我将它传递到我的 MFC 项目中的另一个对话框。在另一个对话框中,我使用CStatic::SetBitmap(HBITMAP) 调用来渲染位图。但由于某种原因,我什么都看不到。如果这是在同一个对话框中完成,这工作得很好,但我想在一个对话框中创建位图并在另一个对话框中显示。

创建DIBSection的代码是

//-----------------BEGINNING OF FIRST DIALOG--------------------------------------------------

 LPVOID pViewBitmapBits = NULL;

   BITMAPINFOHEADER BMHeaderInfo;
   memset(&BMHeaderInfo, 0, sizeof(BITMAPINFOHEADER));
   BMHeaderInfo.biSize        = sizeof(BITMAPINFOHEADER);
   BMHeaderInfo.biWidth       = 800;
   BMHeaderInfo.biHeight      = 400;
   BMHeaderInfo.biPlanes      = 1;
   BMHeaderInfo.biBitCount    = 8;
   BMHeaderInfo.biCompression = BI_RGB;
   BMHeaderInfo.biSizeImage   = 0;
   BMHeaderInfo.biClrUsed     = 0;
   BMHeaderInfo.biClrImportant= 0;



   BITMAPINFO BMInfo;
   memset(&BMInfo, 0, sizeof(BMInfo));
   BMInfo.bmiHeader = BMHeaderInfo;
   BMInfo.bmiColors[0].rgbBlue=255;




  HBITMAP hGlobalBitMap = CreateDIBSection(m_pParentSheet->test.m_hDC, &BMInfo, DIB_RGB_COLORS, &pViewBitmapBits, NULL, NULL);
   SelectObject(m_pParentSheet->test.m_hDC, hGlobalBitMap);

//--------------------------END OF FIRST DIALOG----------------------------------


//-----------------------------BEGINNING OF SECOND DIALOG----------------------------------------

void CreateViewDlg::OnBnClickedButton2()

{

   m_pic.SetBitmap(hGlobalBitMap );

}

//------------------------------------END OF SECOND DIALOG---------------------------------

请帮我解决这个问题。 HBITMAPHandles 的使用有什么限制吗?

【问题讨论】:

    标签: c++ mfc bitmap image hbitmap


    【解决方案1】:
    HBITMAP hGlobalBitMap = ...

    看起来像局部变量隐藏了全局变量。

    【讨论】:

    • 我也试图让它全球化。我在另一个对话框中使用 extern 访问变量,但无济于事......
    猜你喜欢
    • 2013-11-30
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2023-04-09
    相关资源
    最近更新 更多