Fix UI restore when window is resized while in loading screen
[ryzomcore.git] / nelns / login_system / nel_launcher_windows_ext / ProgressDlg.cpp
blob3338a8f9090a7c368e16eb22966e3a6a2a7ee1ca
1 // ProgressDlg.cpp : implementation file
2 //
4 #include "stdafx.h"
5 #include "nel_launcher.h"
6 #include "ProgressDlg.h"
8 #ifdef _DEBUG
9 #define new DEBUG_NEW
10 #undef THIS_FILE
11 static char THIS_FILE[] = __FILE__;
12 #endif
14 #define POS_PROGRESS_X 100
15 #define POS_PROGRESS_Y 32
16 #define POS_PROGRESS_W 300
17 #define POS_PROGRESS_H 6
18 #define TXT_PROGRESS_Y 5
19 #define TXT_PROGRESS_H 15
20 #define BG_MSG_CLR RGB(35, 64, 44)
22 /////////////////////////////////////////////////////////////////////////////
23 // CProgressDlg dialog
26 CProgressDlg::CProgressDlg(CWnd* pParent /*=NULL*/)
27 : CDialog(CProgressDlg::IDD, pParent)
29 //{{AFX_DATA_INIT(CProgressDlg)
30 // NOTE: the ClassWizard will add member initialization here
31 //}}AFX_DATA_INIT
33 m_font.CreateFont(12, 6, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "Arial");
34 m_brushBG.CreateSolidBrush(BG_MSG_CLR);
38 void CProgressDlg::DoDataExchange(CDataExchange* pDX)
40 CDialog::DoDataExchange(pDX);
41 //{{AFX_DATA_MAP(CProgressDlg)
42 // NOTE: the ClassWizard will add DDX and DDV calls here
43 //}}AFX_DATA_MAP
47 BEGIN_MESSAGE_MAP(CProgressDlg, CDialog)
48 //{{AFX_MSG_MAP(CProgressDlg)
49 ON_WM_PAINT()
50 ON_WM_DESTROY()
51 ON_WM_CTLCOLOR()
52 ON_WM_ERASEBKGND()
53 //}}AFX_MSG_MAP
54 END_MESSAGE_MAP()
56 /////////////////////////////////////////////////////////////////////////////
57 // CProgressDlg message handlers
58 void CProgressDlg::Show(BOOL bShow)
60 ShowWindow(bShow);
63 void CProgressDlg::SetRange(int iRange)
65 m_wndBar.SetRange(iRange);
68 void CProgressDlg::UpdatePos(int iPos)
70 m_wndBar.UpdatePos(iPos);
73 void CProgressDlg::UpdateMsg(CString csMsg)
75 CString csLast;
77 GetDlgItemText(IDC_MSG_PROGRESS_STATIC, csLast);
78 if(csMsg != csLast)
79 for(m_iClr = 0; m_iClr < 256; m_iClr += 2)
81 SetDlgItemText(IDC_MSG_PROGRESS_STATIC, csMsg);
82 ::Sleep(2);
86 void CProgressDlg::OnPaint()
88 CPaintDC dc(this); // device context for painting
91 BOOL CProgressDlg::OnInitDialog()
93 CDialog::OnInitDialog();
95 LPCTSTR szClass = AfxRegisterWndClass(NULL);
96 CRect r;
98 GetDlgItem(IDC_MSG_PROGRESS_STATIC)->SetFont(&m_font);
100 m_wndBar.Create(szClass, _T("PatchBar"), WS_CHILD | WS_VISIBLE, r, this, 1234);
101 m_wndBar.MoveWindow(POS_PROGRESS_X, POS_PROGRESS_Y, POS_PROGRESS_W, POS_PROGRESS_H);
102 GetDlgItem(IDC_MSG_PROGRESS_STATIC)->MoveWindow(POS_PROGRESS_X+1, TXT_PROGRESS_Y, POS_PROGRESS_W-2, TXT_PROGRESS_H);
104 m_pictBG.LoadPicture(IDP_PROGRESS);
106 return TRUE; // return TRUE unless you set the focus to a control
107 // EXCEPTION: OCX Property Pages should return FALSE
110 void CProgressDlg::OnDestroy()
112 CDialog::OnDestroy();
114 m_wndBar.DestroyWindow();
117 HBRUSH CProgressDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
119 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
121 if(nCtlColor == CTLCOLOR_STATIC)
123 hbr = m_brushBG;
124 pDC->SetBkColor(BG_MSG_CLR);
125 pDC->SetTextColor(RGB(std::max(m_iClr-100, 0), m_iClr, int(m_iClr/2)));
127 return hbr;
130 BOOL CProgressDlg::OnEraseBkgnd(CDC* pDC)
132 CRect r;
134 GetClientRect(&r);
135 m_pictBG.Display(*pDC, r);
137 return TRUE;