| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #include "stdafx.h"
- #include "CP_Main.h"
- #include "DittoPopupWindow.h"
- CDittoPopupWindow::CDittoPopupWindow()
- {
- m_groupId = -1;
- }
- CDittoPopupWindow::~CDittoPopupWindow()
- {
- }
- BEGIN_MESSAGE_MAP(CDittoPopupWindow, CWndEx)
- ON_WM_CREATE()
- ON_WM_SIZE()
- ON_WM_CTLCOLOR()
- ON_WM_LBUTTONUP()
- END_MESSAGE_MAP()
- int CDittoPopupWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CWndEx::OnCreate(lpCreateStruct) == -1)
- {
- return -1;
- }
- CWndEx::SetCaptionOn(CAPTION_TOP, false, g_Opt.m_Theme.GetCaptionSize(), g_Opt.m_Theme.GetCaptionFontSize());
-
- m_font.CreateFont(-m_DittoWindow.m_dpi.Scale(12), 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 3, 2, 1, 34, _T("MS Sans Serif"));
- m_textLabel.Create(_T("test"), WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this);
- m_textLabel.SetFont(&m_font);
-
- m_progressWnd.Create(WS_CHILD|PBS_SMOOTH, CRect(0, 0, 0, 0), this, 2);
- m_progressWnd.SetRange(0, 100);
- SetWindowText(_T("Running Ditto Updates"));
- //m_textLabel.SetWindowText(_T("test"));
- return 0;
- }
- void CDittoPopupWindow::UpdateText(CString text)
- {
- m_textLabel.SetWindowText(text);
- CRect rect;
- m_textLabel.GetWindowRect(&rect);
- ScreenToClient(&rect);
- InvalidateRect(&rect);
- UpdateWindow();
- PumpMessages();
- }
- void CDittoPopupWindow::SetProgressBarPercent(int percent)
- {
- if(::IsWindowVisible(m_progressWnd.m_hWnd) == FALSE)
- {
- m_progressWnd.ShowWindow(SW_SHOW);
- CRect size;
- GetClientRect(size);
- DoSize(size.Width(), size.Height());
- }
- m_progressWnd.SetPos(percent);
- PumpMessages();
- }
- void CDittoPopupWindow::HideProgressBar()
- {
- m_progressWnd.ShowWindow(SW_HIDE);
- PumpMessages();
- CRect size;
- GetClientRect(size);
- DoSize(size.Width(), size.Height());
- }
- void CDittoPopupWindow::OnSize(UINT nType, int cx, int cy)
- {
- CWndEx::OnSize(nType, cx, cy);
- DoSize(cx, cy);
- }
- void CDittoPopupWindow::DoSize(int cx, int cy)
- {
- if(m_textLabel.m_hWnd != NULL)
- {
- int bottom = 0;
- if(::IsWindowVisible(m_progressWnd.m_hWnd))
- {
- bottom = 50;
- }
- m_textLabel.MoveWindow(10, 10, cx-20, cy-bottom);
- this->Invalidate();
- }
- if(m_progressWnd.m_hWnd != NULL)
- {
- m_progressWnd.MoveWindow(10, cy-40, cx-20, 30);
- }
- }
- HBRUSH CDittoPopupWindow::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- if (pWnd->GetDlgCtrlID() == 0xffff)
- {
- pDC->SetBkMode(TRANSPARENT);
- return reinterpret_cast<HBRUSH>(::GetStockObject(NULL_BRUSH));
- }
- else
- return CWndEx::OnCtlColor(pDC, pWnd, nCtlColor);
- }
- void CDittoPopupWindow::PumpMessages()
- {
- int nLoops = 0;
- MSG msg;
- while (::PeekMessage(&msg, m_hWnd, 0, 0, PM_REMOVE))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- nLoops++;
- if (nLoops > 100)
- break;
- }
- }
- void CDittoPopupWindow::OnLButtonUp(UINT nFlags, CPoint point)
- {
- if(m_groupId > 0)
- {
- CWnd *pParent = this->GetParent();
- if(pParent)
- {
- pParent->PostMessageW(WM_SHOW_DITTO_GROUP, m_groupId, 0);
- }
- }
- }
|