mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 11:14:58 -06:00
94 lines
1.9 KiB
C++
Executable File
94 lines
1.9 KiB
C++
Executable File
// MessagesDialog.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "Common/IntToString.h"
|
|
|
|
#include "Windows/ResourceString.h"
|
|
|
|
#include "MessagesDialog.h"
|
|
|
|
#ifdef LANG
|
|
#include "LangUtils.h"
|
|
#endif
|
|
|
|
using namespace NWindows;
|
|
|
|
#ifdef LANG
|
|
static CIDLangPair kIDLangPairs[] =
|
|
{
|
|
{ IDOK, 0x02000713 }
|
|
};
|
|
#endif
|
|
|
|
void CMessagesDialog::AddMessageDirect(LPCWSTR message)
|
|
{
|
|
int itemIndex = _messageList.GetItemCount();
|
|
wchar_t sz[32];
|
|
ConvertInt64ToString(itemIndex, sz);
|
|
_messageList.InsertItem(itemIndex, sz);
|
|
_messageList.SetSubItem(itemIndex, 1, message);
|
|
}
|
|
|
|
void CMessagesDialog::AddMessage(LPCWSTR message)
|
|
{
|
|
UString s = message;
|
|
while (!s.IsEmpty())
|
|
{
|
|
int pos = s.Find(L'\n');
|
|
if (pos < 0)
|
|
break;
|
|
AddMessageDirect(s.Left(pos));
|
|
s.Delete(0, pos + 1);
|
|
}
|
|
AddMessageDirect(s);
|
|
}
|
|
|
|
bool CMessagesDialog::OnInit()
|
|
{
|
|
#ifdef LANG
|
|
LangSetWindowText(HWND(*this), 0x02000A00);
|
|
LangSetDlgItemsText(HWND(*this), kIDLangPairs, sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]));
|
|
#endif
|
|
_messageList.Attach(GetItem(IDC_MESSAGE_LIST));
|
|
|
|
#ifndef UNDER_CE
|
|
_messageList.SetUnicodeFormat(true);
|
|
#endif
|
|
|
|
_messageList.InsertColumn(0, L"", 30);
|
|
|
|
const UString s =
|
|
#ifdef LANG
|
|
LangString(IDS_MESSAGES_DIALOG_MESSAGE_COLUMN, 0x02000A80);
|
|
#else
|
|
MyLoadStringW(IDS_MESSAGES_DIALOG_MESSAGE_COLUMN);
|
|
#endif
|
|
|
|
_messageList.InsertColumn(1, s, 600);
|
|
|
|
for (int i = 0; i < Messages->Size(); i++)
|
|
AddMessage((*Messages)[i]);
|
|
|
|
_messageList.SetColumnWidthAuto(0);
|
|
_messageList.SetColumnWidthAuto(1);
|
|
NormalizeSize();
|
|
return CModalDialog::OnInit();
|
|
}
|
|
|
|
bool CMessagesDialog::OnSize(WPARAM /* wParam */, int xSize, int ySize)
|
|
{
|
|
int mx, my;
|
|
GetMargins(8, mx, my);
|
|
int bx, by;
|
|
GetItemSizes(IDOK, bx, by);
|
|
int y = ySize - my - by;
|
|
int x = xSize - mx - bx;
|
|
|
|
InvalidateRect(NULL);
|
|
|
|
MoveItem(IDOK, x, y, bx, by);
|
|
_messageList.Move(mx, my, xSize - mx * 2, y - my * 2);
|
|
return false;
|
|
}
|