现在碰到这样一个问题:我在一个dialog上画了几个按钮,按钮的背景色是张图片,但是刚打开这个程序的时候图片和问题都显示不出来,只有重新刷新一下才能显示出来。这个有哪几方面的原因?
在OnPaint中这部分代码是这样的:
CDC* BtOrderOKDC=BtOrderOK.GetDC();
MemDC.SelectObject(&m_BmpOrderBtn);
BtOrderOKDC->BitBlt(0,0,ORDER_BT_W,ORDER_BT_H,&MemDC,0,0,SRCCOPY);
BtOrderOKDC->SetTextColor(RGB(255,255,255));
BtOrderOKDC->SelectObject(&m_font3);
BtOrderOKDC->SetBkMode(TRANSPARENT);
BtOrderOKDC->ExtTextOut(45,12,ETO_CLIPPED, NULL, L"OK", 2, NULL);
BtOrderOKDC->DeleteDC();
CDC* BtOrderCancelDC=BtOrderCancel.GetDC();
MemDC.SelectObject(&m_BmpOrderBtn);
BtOrderCancelDC->BitBlt(0,0,ORDER_BT_W,ORDER_BT_H,&MemDC,0,0,SRCCOPY);
BtOrderCancelDC->SetTextColor(RGB(255,255,255));
BtOrderCancelDC->SelectObject(&m_font3);
BtOrderCancelDC->SetBkMode(TRANSPARENT);
BtOrderCancelDC->ExtTextOut(30,12,ETO_CLIPPED, NULL, L"Cancel", 6, NULL);
BtOrderCancelDC->DeleteDC();
CDC* BtOrderDefaultDC=BtOrderDefault.GetDC();
MemDC.SelectObject(&m_BmpOrderBtn);
BtOrderDefaultDC->BitBlt(0,0,ORDER_BT_W,ORDER_BT_H,&MemDC,0,0,SRCCOPY);
BtOrderDefaultDC->SetTextColor(RGB(255,255,255));
BtOrderDefaultDC->SelectObject(&m_font3);
BtOrderDefaultDC->SetBkMode(TRANSPARENT);
BtOrderDefaultDC->ExtTextOut(30,12,ETO_CLIPPED, NULL, L"Default", 7, NULL);
BtOrderDefaultDC->DeleteDC();
在OnctrlColor中返回的是CDialog::OnCtlColor(pDC, pWnd, nCtlColor)的值