[NOTEPAD] Refactor around _tWinMain (#5135)

- Add hInstance parameter to NOTEPAD_InitData.
- Move some code in _tWinMain into NOTEPAD_InitData.
- Move some code in _tWinMain into WM_CREATE handling.
- Move some code in WM_CLOSE handling into WM_DESTROY handling.
- Fix the exit code of _tWinMain.
CORE-18837
This commit is contained in:
Katayama Hirofumi MZ 2023-03-12 08:26:33 +09:00 committed by GitHub
parent 3b0791547f
commit d0ab35e9da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -253,12 +253,17 @@ static VOID NOTEPAD_FindTerm(VOID)
/*********************************************************************** /***********************************************************************
* Data Initialization * Data Initialization
*/ */
static VOID NOTEPAD_InitData(VOID) static VOID NOTEPAD_InitData(HINSTANCE hInstance)
{ {
LPTSTR p = Globals.szFilter; LPTSTR p;
static const TCHAR txt_files[] = _T("*.txt"); static const TCHAR txt_files[] = _T("*.txt");
static const TCHAR all_files[] = _T("*.*"); static const TCHAR all_files[] = _T("*.*");
ZeroMemory(&Globals, sizeof(Globals));
Globals.hInstance = hInstance;
Globals.encFile = ENCODING_DEFAULT;
p = Globals.szFilter;
p += LoadString(Globals.hInstance, STRING_TEXT_FILES_TXT, p, MAX_STRING_LEN) + 1; p += LoadString(Globals.hInstance, STRING_TEXT_FILES_TXT, p, MAX_STRING_LEN) + 1;
_tcscpy(p, txt_files); _tcscpy(p, txt_files);
p += ARRAY_SIZE(txt_files); p += ARRAY_SIZE(txt_files);
@ -340,8 +345,17 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ {
case WM_CREATE: case WM_CREATE:
Globals.hMainWnd = hWnd;
Globals.hMenu = GetMenu(hWnd); Globals.hMenu = GetMenu(hWnd);
DragAcceptFiles(hWnd, TRUE); /* Accept Drag & Drop */
/* Create controls */
DoCreateEditWindow();
DoShowHideStatusBar();
DIALOG_FileNew(); /* Initialize file info */
// For now, the "Help" dialog is disabled due to the lack of HTML Help support // For now, the "Help" dialog is disabled due to the lack of HTML Help support
EnableMenuItem(Globals.hMenu, CMD_HELP_CONTENTS, MF_BYCOMMAND | MF_GRAYED); EnableMenuItem(Globals.hMenu, CMD_HELP_CONTENTS, MF_BYCOMMAND | MF_GRAYED);
break; break;
@ -354,20 +368,9 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
NOTEPAD_MenuCommand(LOWORD(wParam)); NOTEPAD_MenuCommand(LOWORD(wParam));
break; break;
case WM_DESTROYCLIPBOARD:
/*MessageBox(Globals.hMainWnd, "Empty clipboard", "Debug", MB_ICONEXCLAMATION);*/
break;
case WM_CLOSE: case WM_CLOSE:
if (DoCloseFile()) { if (DoCloseFile())
if (Globals.hFont)
DeleteObject(Globals.hFont);
if (Globals.hDevMode)
GlobalFree(Globals.hDevMode);
if (Globals.hDevNames)
GlobalFree(Globals.hDevNames);
DestroyWindow(hWnd); DestroyWindow(hWnd);
}
break; break;
case WM_QUERYENDSESSION: case WM_QUERYENDSESSION:
@ -377,6 +380,12 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
break; break;
case WM_DESTROY: case WM_DESTROY:
if (Globals.hFont)
DeleteObject(Globals.hFont);
if (Globals.hDevMode)
GlobalFree(Globals.hDevMode);
if (Globals.hDevNames)
GlobalFree(Globals.hDevNames);
SetWindowLongPtr(Globals.hEdit, GWLP_WNDPROC, (LONG_PTR)Globals.EditProc); SetWindowLongPtr(Globals.hEdit, GWLP_WNDPROC, (LONG_PTR)Globals.EditProc);
NOTEPAD_SaveSettingsToRegistry(); NOTEPAD_SaveSettingsToRegistry();
PostQuitMessage(0); PostQuitMessage(0);
@ -574,9 +583,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh
aFINDMSGSTRING = (ATOM)RegisterWindowMessage(FINDMSGSTRING); aFINDMSGSTRING = (ATOM)RegisterWindowMessage(FINDMSGSTRING);
ZeroMemory(&Globals, sizeof(Globals)); NOTEPAD_InitData(hInstance);
Globals.hInstance = hInstance;
Globals.encFile = ENCODING_DEFAULT;
NOTEPAD_LoadSettingsFromRegistry(); NOTEPAD_LoadSettingsFromRegistry();
ZeroMemory(&wndclass, sizeof(wndclass)); ZeroMemory(&wndclass, sizeof(wndclass));
@ -591,11 +598,14 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh
wndclass.hIconSm = (HICON)LoadImage(hInstance, wndclass.hIconSm = (HICON)LoadImage(hInstance,
MAKEINTRESOURCE(IDI_NPICON), MAKEINTRESOURCE(IDI_NPICON),
IMAGE_ICON, IMAGE_ICON,
16, GetSystemMetrics(SM_CXSMICON),
16, GetSystemMetrics(SM_CYSMICON),
0); 0);
if (!RegisterClassEx(&wndclass))
if (!RegisterClassEx(&wndclass)) return FALSE; {
ShowLastError();
return 1;
}
/* Setup windows */ /* Setup windows */
@ -608,37 +618,29 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh
if (!IntersectRect(&rcIntersect, &Globals.main_rect, &info.rcWork)) if (!IntersectRect(&rcIntersect, &Globals.main_rect, &info.rcWork))
x = y = CW_USEDEFAULT; x = y = CW_USEDEFAULT;
Globals.hMainWnd = CreateWindow(className, /* Globals.hMainWnd will be set in WM_CREATE handling */
winName, CreateWindow(className,
WS_OVERLAPPEDWINDOW, winName,
x, WS_OVERLAPPEDWINDOW,
y, x,
Globals.main_rect.right - Globals.main_rect.left, y,
Globals.main_rect.bottom - Globals.main_rect.top, Globals.main_rect.right - Globals.main_rect.left,
NULL, Globals.main_rect.bottom - Globals.main_rect.top,
NULL, NULL,
Globals.hInstance, NULL,
NULL); Globals.hInstance,
NULL);
if (!Globals.hMainWnd) if (!Globals.hMainWnd)
{ {
ShowLastError(); ShowLastError();
ExitProcess(1); return 1;
} }
DoCreateEditWindow();
DoShowHideStatusBar();
NOTEPAD_InitData();
DIALOG_FileNew();
ShowWindow(Globals.hMainWnd, show); ShowWindow(Globals.hMainWnd, show);
UpdateWindow(Globals.hMainWnd); UpdateWindow(Globals.hMainWnd);
DragAcceptFiles(Globals.hMainWnd, TRUE);
if (!HandleCommandLine(cmdline)) if (!HandleCommandLine(cmdline))
{
return 0; return 0;
}
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL)); hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL));