直接在OnInitDialog()函数中添加即可;
CRect rc;
m_ctrlPic.GetClientRect(&rc);
CDC* pdcpic = m_ctrlPic.GetDC(); //m_ctrlPic是Picture控件的变量
CBitmap bitmap1;
bitmap1.LoadBitmap(IDB_BITMAP_PROTOCOL_3); //IDB_BITMAP_PROTOCOL_3是要加载的位图的ID
BITMAP bmp1;
bitmap1.GetBitmap(&bmp1);
CDC memdc;
memdc.CreateCompatibleDC(pdcpic);
memdc.SelectObject(&bitmap1);
CDC ppdc;
ppdc.CreateCompatibleDC(pdcpic);
CBitmap bmpbuf; //bmpbuf是要放入控件中的位图
bmpbuf.CreateCompatibleBitmap(pdcpic, rc.right, rc.bottom);
ppdc.SelectObject(&bmpbuf);
ppdc.StretchBlt(rc.left, rc.top, rc.Width(), rc.Height(), &memdc, 0, 0, bmp1.bmWidth, bmp1.bmHeight, SRCCOPY); //将IDB_BITMAP_PROTOCOL_3复制到bmpbuf位图中,并按指定的大小转换
m_ctrlPic.SetBitmap((HBITMAP)bmpbuf.Detach());
m_ctrlPic.ReleaseDC(pdcpic);
memdc.DeleteDC();
ppdc.DeleteDC();
这是在做MFC程序DPI适配中遇到的问题,dpi改变后picture控件不会