1 // MessagesDialog.cpp
2
3 #include "StdAfx.h"
4
5 #include "../../../Common/IntToString.h"
6
7 #include "../../../Windows/ResourceString.h"
8
9 #include "MessagesDialog.h"
10
11 #include "LangUtils.h"
12
13 #include "ProgressDialog2Res.h"
14
15 using namespace NWindows;
16
AddMessageDirect(LPCWSTR message)17 void CMessagesDialog::AddMessageDirect(LPCWSTR message)
18 {
19 const unsigned i = (unsigned)_messageList.GetItemCount();
20 wchar_t sz[16];
21 ConvertUInt32ToString(i, sz);
22 _messageList.InsertItem(i, sz);
23 _messageList.SetSubItem(i, 1, message);
24 }
25
AddMessage(LPCWSTR message)26 void CMessagesDialog::AddMessage(LPCWSTR message)
27 {
28 UString s = message;
29 while (!s.IsEmpty())
30 {
31 const int pos = s.Find(L'\n');
32 if (pos < 0)
33 break;
34 AddMessageDirect(s.Left(pos));
35 s.DeleteFrontal((unsigned)pos + 1);
36 }
37 AddMessageDirect(s);
38 }
39
OnInit()40 bool CMessagesDialog::OnInit()
41 {
42 #ifdef Z7_LANG
43 LangSetWindowText(*this, IDD_MESSAGES);
44 LangSetDlgItems(*this, NULL, 0);
45 SetItemText(IDOK, LangString(IDS_CLOSE));
46 #endif
47 _messageList.Attach(GetItem(IDL_MESSAGE));
48 _messageList.SetUnicodeFormat();
49
50 _messageList.InsertColumn(0, L"", 30);
51 _messageList.InsertColumn(1, LangString(IDS_MESSAGE), 600);
52
53 FOR_VECTOR (i, *Messages)
54 AddMessage((*Messages)[i]);
55
56 _messageList.SetColumnWidthAuto(0);
57 _messageList.SetColumnWidthAuto(1);
58 NormalizeSize();
59 return CModalDialog::OnInit();
60 }
61
OnSize(WPARAM,int xSize,int ySize)62 bool CMessagesDialog::OnSize(WPARAM /* wParam */, int xSize, int ySize)
63 {
64 int mx, my;
65 GetMargins(8, mx, my);
66 int bx, by;
67 GetItemSizes(IDOK, bx, by);
68 int y = ySize - my - by;
69 int x = xSize - mx - bx;
70
71 InvalidateRect(NULL);
72
73 MoveItem(IDOK, x, y, bx, by);
74 _messageList.Move(mx, my, xSize - mx * 2, y - my * 2);
75 return false;
76 }
77