在对话框中添加 WM_PAINT的相应消息,
具体函数实现,如下:
void CTaskRewardDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
if (m_bDataEncoded)
{
int nBmpWidth = pQR_Encode->m_nSymbleSize;
//获取控件的边界大小
CRect rect;
GetDlgItem(IDC_STATIC_QRCODE)->GetClientRect(&rect);
//定义并创建一个内存设备环境DC
CDC *pCurCDC = GetDlgItem(IDC_STATIC_QRCODE)->GetDC();
//CDC *pCurCDC = GetDC();
//创建兼容性的DC
CDC* pWorkDC = new CDC;
pWorkDC->CreateCompatibleDC(pCurCDC);
//pWorkDC->CreateCompatibleDC(NULL);
CBitmap workBitmap;
//workBitmap.CreateCompatibleBitmap(pWorkDC, nBmpWidth, nBmpWidth);
workBitmap.CreateCompatibleBitmap(pWorkDC, rect.Width(), rect.Height());
CBitmap* pOldBitmap = pWorkDC->SelectObject(&workBitmap);//将位图选入临时内存设备环境
// 背景全部画成白色
pWorkDC->PatBlt(0, 0, nBmpWidth, nBmpWidth, WHITENESS);
// 根据二维码内容绘制位图
fo