13#include "Stroika/Frameworks/Led/Command.h"
14#include "Stroika/Frameworks/Led/Platform/Windows.h"
15#include "Stroika/Frameworks/Led/SimpleLed.h"
16#include "Stroika/Frameworks/Led/SimpleTextStore.h"
17#include "Stroika/Frameworks/Led/WordProcessor.h"
22using namespace Stroika::Frameworks;
23using namespace Stroika::Frameworks::Led;
24using namespace Stroika::Frameworks::Led::Platform;
29typedef SimpleLedWordProcessor _BASE_;
31typedef SimpleLedLineEditor _BASE_;
34DISABLE_COMPILER_MSC_WARNING_START (4250)
35class MyLedWindow : public _BASE_ {
37 typedef _BASE_ inherited;
40 virtual LRESULT WndProc (UINT message, WPARAM wParam, LPARAM lParam)
override;
46 SetScrollBarType (h, eScrollBarAsNeeded);
47 SetScrollBarType (v, eScrollBarAlways);
49 virtual void OnNCDestroy_Msg ()
override;
51DISABLE_COMPILER_MSC_WARNING_END (4250)
53void MyLedWindow::OnNCDestroy_Msg ()
55 inherited::OnNCDestroy_Msg ();
59#define MAX_LOADSTRING 100
63TCHAR szTitle[MAX_LOADSTRING];
64TCHAR szWindowClass[MAX_LOADSTRING];
66inline const void* LoadAppResource (HINSTANCE hIntstance,
long resID, LPCTSTR resType)
68 HRSRC hrsrc = ::FindResource (hIntstance, MAKEINTRESOURCE (resID), resType);
70 HGLOBAL hglobal = ::LoadResource (hIntstance, hrsrc);
72 const void* lockedData = ::LockResource (hglobal);
78ATOM MyRegisterClass (HINSTANCE hInstance);
79BOOL InitInstance (HINSTANCE,
int);
80LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
81LRESULT CALLBACK About (HWND, UINT, WPARAM, LPARAM);
83int APIENTRY wWinMain (HINSTANCE hInstance, [[maybe_unused]] HINSTANCE hPrevInstance, [[maybe_unused]] LPTSTR lpCmdLine,
int nCmdShow)
86 _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
90 LoadString (hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
91 LoadString (hInstance, IDC_LEDTESTWIN32, szWindowClass, MAX_LOADSTRING);
92 MyRegisterClass (hInstance);
94 StandardUnknownTypeStyleMarker::sUnknownPict = (
const Led_DIB*)LoadAppResource (hInstance, kUnknownEmbeddingPictID, RT_BITMAP);
97 if (!InitInstance (hInstance, nCmdShow)) {
102 HACCEL hAccelTable = LoadAccelerators (hInstance, (LPCTSTR)IDC_LEDTESTWIN32);
104 while (GetMessage (&msg, NULL, 0, 0)) {
105 if (!TranslateAccelerator (msg.hwnd, hAccelTable, &msg)) {
106 TranslateMessage (&msg);
107 DispatchMessage (&msg);
111 return static_cast<int> (msg.wParam);
127ATOM MyRegisterClass (HINSTANCE hInstance)
131 wcex.cbSize =
sizeof (WNDCLASSEX);
133 wcex.style = CS_HREDRAW | CS_VREDRAW;
134 wcex.lpfnWndProc = (WNDPROC)MyLedWindow::StaticWndProc;
137 wcex.hInstance = hInstance;
138 wcex.hIcon = LoadIcon (hInstance, (LPCTSTR)IDI_LEDTESTWIN32);
139 wcex.hCursor = LoadCursor (NULL, IDC_ARROW);
140 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
141 wcex.lpszMenuName = (LPCTSTR)IDC_LEDTESTWIN32;
142 wcex.lpszClassName = szWindowClass;
143 wcex.hIconSm = LoadIcon (wcex.hInstance, (LPCTSTR)IDI_SMALL);
145 return RegisterClassEx (&wcex);
158BOOL InitInstance (HINSTANCE hInstance,
int nCmdShow)
162 MyLedWindow* myWindow =
new MyLedWindow ();
163 myWindow->Create (szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance);
164 HWND hWnd = myWindow->GetHWND ();
166 ShowWindow (hWnd, nCmdShow);
172LRESULT MyLedWindow::WndProc (UINT message, WPARAM wParam, LPARAM lParam)
176 int wmId = LOWORD (wParam);
177 [[maybe_unused]]
int wmEvent = HIWORD (wParam);
178 HWND hWnd = GetHWND ();
182 DialogBox (hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
185 DestroyWindow (hWnd);
188 if (GetCommandHandler ()->CanUndo ())
194 if (GetCommandHandler ()->CanRedo ())
211 case ID_EDIT_SELECT_ALL:
212 OnSelectAllCommand ();
215 return DefWindowProc (message, wParam, lParam);
224 return inherited::WndProc (message, wParam, lParam);
230LRESULT CALLBACK About (HWND hDlg, UINT message, WPARAM wParam, [[maybe_unused]] LPARAM lParam)
237 if (LOWORD (wParam) == IDOK || LOWORD (wParam) == IDCANCEL) {
238 EndDialog (hDlg, LOWORD (wParam));