Skip to content

Commit

Permalink
feat: implement the second lab
Browse files Browse the repository at this point in the history
  • Loading branch information
MrKonstantinSh committed Dec 2, 2020
1 parent 2486677 commit 24b8d89
Showing 1 changed file with 82 additions and 6 deletions.
88 changes: 82 additions & 6 deletions Lab_2/Lab_2/Lab_2.cpp
Original file line number Diff line number Diff line change
@@ -1,16 +1,81 @@
#include <Windows.h>
#include <string>
#include <fstream>

using namespace std;

#define BACKGROUND_COLOR COLOR_WINDOW

constexpr auto WINDOW_NAME = "Lab_2";
constexpr auto PATH_TO_FILE = "D:\\text.txt";
constexpr auto NUM_OF_COLUMNS = 4;
constexpr auto NUM_OF_ROWS = 6;

ATOM RegisterWindowClass(HINSTANCE);
BOOL InitWindowInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR cmdLine, int cmdShowMode)
string _listOfData[NUM_OF_COLUMNS * NUM_OF_ROWS];
int _userWindowWidth = 0;
int _userWindowHeight = 0;

void GetDataFromFile()
{
int requiredNumOfLines = NUM_OF_COLUMNS * NUM_OF_ROWS;

ifstream file(PATH_TO_FILE);

int i = 0;
while (getline(file, _listOfData[i]) && i < requiredNumOfLines)
i++;

file.close();
}

void DrawTableWithText(HWND hWnd)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(cmdLine);
RECT rect;
PAINTSTRUCT paintStruct;
HDC hdc = BeginPaint(hWnd, &paintStruct);

int columnWidth = _userWindowWidth / NUM_OF_COLUMNS;
int tableHeight = 0;

for (int i = 0; i < NUM_OF_ROWS; i++)
{
int currentMaxColumnHeight = 0;

for (int j = 0; j < NUM_OF_COLUMNS; j++)
{
SetTextColor(hdc, RGB(128, 57, 30));

LPCSTR dataItem = _listOfData[NUM_OF_COLUMNS * i + j].c_str();
int lengthOfDataItem = strlen(dataItem);

SetRect(&rect, j * columnWidth + 1, tableHeight + 1, (j + 1) * columnWidth - 1, _userWindowHeight);
int strHeight = DrawTextA(hdc, dataItem, lengthOfDataItem, &rect, DT_WORDBREAK);

if (strHeight > currentMaxColumnHeight)
currentMaxColumnHeight = strHeight;

}

tableHeight += currentMaxColumnHeight;

MoveToEx(hdc, 0, tableHeight, NULL);
LineTo(hdc, _userWindowWidth, tableHeight);
}

for (int i = 1; i < NUM_OF_COLUMNS; i++)
{
int columnPosition = i * columnWidth;
MoveToEx(hdc, columnPosition, 0, NULL);
LineTo(hdc, columnPosition, tableHeight);
}
}

int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR cmdLine, _In_ int cmdShowMode)
{
MSG msg;

RegisterWindowClass(hInstance);
Expand Down Expand Up @@ -39,7 +104,7 @@ ATOM RegisterWindowClass(HINSTANCE hInstance)
windowClassEx.hInstance = hInstance;
windowClassEx.hIcon = LoadIcon(0, IDI_WINLOGO);;
windowClassEx.hCursor = LoadCursor(0, IDC_ARROW);
windowClassEx.hbrBackground = (HBRUSH)(COLOR_WINDOW);
windowClassEx.hbrBackground = CreateSolidBrush(GetSysColor(BACKGROUND_COLOR));
windowClassEx.lpszMenuName = 0;
windowClassEx.lpszClassName = WINDOW_NAME;
windowClassEx.hIconSm = 0;
Expand All @@ -58,7 +123,6 @@ BOOL InitWindowInstance(HINSTANCE hInstance, int cmdShowMode)
return FALSE;

ShowWindow(hWnd, cmdShowMode);
UpdateWindow(hWnd);

return TRUE;
}
Expand All @@ -67,6 +131,18 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
GetDataFromFile();
break;
case WM_PAINT:
{
DrawTableWithText(hWnd);
break;
}
case WM_SIZE:
_userWindowWidth = LOWORD(lParam);
_userWindowHeight = HIWORD(lParam);
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
Expand All @@ -75,4 +151,4 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}

return 0;
}
}

0 comments on commit 24b8d89

Please sign in to comment.