Linguagem C - Trabalhando com área de anotações(edit) - Revisado em 27/08/2022

main.html
/**
Código revisado em 27/08/2022
*/

#include <windows.h>

#define ID_EDIT 1

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

TCHAR szAppName[] = TEXT("Notepad");

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, PSTR szCL, int iCS) {
   HWND hwnd;
   MSG  msg;
   WNDCLASS wndclass;

   wndclass.style = CS_HREDRAW | CS_VREDRAW;
   wndclass.lpfnWndProc = WndProc;
   wndclass.cbClsExtra = 0;
   wndclass.cbWndExtra = 0;
   wndclass.hInstance  = hI;
   wndclass.hIcon   = LoadIcon(NULL, IDI_APPLICATION);
   wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
   wndclass.hbrBackground = GetSysColorBrush(COLOR_INFOBK);
   wndclass.lpszMenuName  = NULL;
   wndclass.lpszClassName = szAppName;
   
   if(!RegisterClass(&wndclass)) {
      MessageBox(
         NULL,
         TEXT("This program requires Windows NT!"),
         szAppName,
         MB_ICONERROR
      );
      return 0;
   }
   hwnd = CreateWindow(
      szAppName, szAppName, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
      NULL, NULL, hI, NULL
   );

   ShowWindow(hwnd, iCS);
   UpdateWindow(hwnd);

   while(GetMessage(&msg, NULL, 0, 0)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lp) {
   static HWND hwndEdit;
   
   switch(msg) {
      case WM_CREATE:
         hwndEdit = CreateWindow( //Cria a área de anotações(edit)
            TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL |
            WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE |
            ES_AUTOHSCROLL | ES_AUTOVSCROLL,
            0, 0, 0, 0,
            hwnd,(HMENU)ID_EDIT,((LPCREATESTRUCT)lp)->hInstance,NULL
         ); //(HMENU)ID_EDIT -> recupera a área do texto..
         return 0;
      case WM_SETFOCUS:
         SetFocus(hwndEdit);//Destaca a área de anotações
         return 0;
      case WM_SIZE:
         MoveWindow(
            hwndEdit, //Identificador da área de anotações(edit)
            0, //Posição em relação ao lado esquerdo da janela
            0, //Posição em relação ao Topo da janela(Vertical)
            LOWORD(lp),//Mantém a largura proporcional a janela principal
            HIWORD(lp),//Mantém a altura proporcional a janela principal
            TRUE
         );
         return 0;
      case WM_COMMAND:
         if(LOWORD(wP)==ID_EDIT) { //Verifica se não existe memória..
            if(HIWORD(wP)==EN_ERRSPACE || HIWORD(wP)==EN_MAXTEXT) {
               MessageBox(
                  hwnd,
                  TEXT("Edit control out of space."),
                  szAppName,
                  MB_OK | MB_ICONSTOP
               );
            }
         } //suficiente ou se excedeu o número de caracteres..
         return 0;
      case WM_DESTROY:
         PostQuitMessage(0);
         return 0;
   }
   return DefWindowProc(hwnd, msg, wP, lp);
}

Comentários