15,980
社区成员
发帖
与我相关
我的任务
分享
void CtestDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
int Width = rect.right - rect.left;
int Height = rect.bottom - rect.top;
CDC *pDC = this->GetDC();
CDC MenmDC;
CBitmap MemBitmap;
MenmDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC, Width, Height);
CBitmap *pOldBit = MenmDC.SelectObject(&MemBitmap);
/*********************************************************/
MenmDC.FillSolidRect(0, 0, Width, Height, RGB(255, 128, 0));
//根据变量计数,绘制当前进度条的长度
using namespace Gdiplus;
Graphics graphics(MenmDC.m_hDC);
graphics.DrawImage(m_ImgScroll, Rect(30, 120, m_ImgScroll->GetWidth() * ((float)m_Tick / (float)100), m_ImgScroll->GetHeight()), 0, 0, m_ImgScroll->GetWidth() * ((float)m_Tick / (float)100), m_ImgScroll->GetHeight(), UnitPixel);
/*********************************************************/
pDC->BitBlt(0, 0, Width, Height, &MenmDC, 0, 0, SRCCOPY);
MenmDC.SelectObject(pOldBit);
MemBitmap.DeleteObject();
MenmDC.DeleteDC();
ReleaseDC(pDC);
}
BOOL CtestDlg::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
void CtestDlg::OnTimer(UINT nIDEvent)
{
switch (nIDEvent)
{
case 1201:
{
++ m_Tick;
if (m_Tick >= 100)
{
m_Tick = 0;
}
//获取当前进度条需要绘制的长度,并刷新之
CRect rect;
rect.left = 30;
rect.top = 120;
rect.right = rect.left + m_ImgScroll->GetWidth() * ((float)m_Tick / (float)100);
rect.bottom = rect.top + m_ImgScroll->GetHeight();
InvalidateRect(&rect, FALSE);
}
break;
}
}
afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
m_brush.CreateSolidBrush(RGB(255, 0, 255));
DWORD dwExStyle = GetWindowLong(m_hWnd,GWL_EXSTYLE);
::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwExStyle|0x80000);
::SetLayeredWindowAttributes(this->GetSafeHwnd(), 0xff00ff, 0, 1);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
HBRUSH DJL_BoxCtrl::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (IDC_STATIC_CTRL_MSG == pWnd->GetDlgCtrlID() ||
IDC_STATIC_CTRL_HELP == pWnd->GetDlgCtrlID() ||
IDC_STATIC_CTRL_CONTRIVE == pWnd->GetDlgCtrlID() ||
IDC_STATIC_CTRL_MEMBERCOUNT == pWnd->GetDlgCtrlID())
{
pDC->SetTextColor(RGB(255, 255, 255));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
if(CTLCOLOR_DLG == nCtlColor)
{
return m_brush;
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}