Picture 控件,不知怎样加载图片?
我是这样做的:
CBitmap Bitmap;
BITMAP bm;
Bitmap.LoadBitmap(IDB_BITMAP1);
Bitmap.GetObject(sizeof(BITMAP), &bm); ((CStatic*)GetDlgItem(IDC_STATIC_WC))->SetBitmap((HBITMAP)Bitmap.Detach());
但结果不是预期的,请问怎么回事?另外还有一个问题:怎样改变此控件的背景色?

解决方案 »

  1.   

    静态加载的话直接在resourceview中右键点击picture控件
    general-》type中选择Bitmap,在下面的image中选中插入的位图资源
      

  2.   

    右键点击picture控件,general-》type中选择Bitmap,然后再调用你的代码就没事了.
      

  3.   

    还有一个问题就是怎样将控件背景变白呢?
    好像静态控件没有SetBkcolor(...) ?
      

  4.   

    1.定义一个CBitmap m_bitmap和一个Picture 控件对象CStatic m_PIC
    m_bitmap.LoadBitmap(IDB_BITMAP3);
    m_PIC.SetBitmap(m_bitmap);
    即可!
    2.重成生成一个类,处理CtlColor消息:
    HBRUSH CXXXXXXX::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
    // TODO: Change any attributes of the DC herepDC->SetBkMode(TRANSPARENT); //在这设置背景色  
    pDC->SetTextColor(RGB(0,255,255)); //此处设置字体的颜色  
       
    return   HBRUSH(GetStockObject(HOLLOW_BRUSH)); //// TODO: Return a non-NULL brush if the parent's handler should not be called
    //return NULL;
    }
      

  5.   

    得到picture的dc,然后设置其背景颜色
      

  6.   

    ((CStatic*)GetDlgItem(IDC_STATIC_WC))->GetDC()->SetBkColor(RGB(255,255,255));
    怎么又没效果啊?
      

  7.   

    SetBkColor 是设文字背景,不是画刷, 何况你那样写在最后绘制时还是会选用默认画刷的
      

  8.   

    要响应按钮所在对话框的 WM_CTLCOLOR 判断静态控件,返回你的背景画刷,比如HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    switch(nCtlColor)
        {
        case CTLCOLOR_STATIC:
    {
    pDC->SetBkMode(TRANSPARENT);
    static CBrush br(RGB(255,0,0));
    hbr = (HBRUSH)br;
    }
    break;
    default:
    break;
        }
    return hbr;
    }
      

  9.   

    或是象 sxslyy(孤松傲雪) 说的那样再派生一个
    但要注意在类向导中要选择 =WM_CTLCOLOR, 而不是WM_CTLCOLOR消息。