关于windows的消息响应机制,请高手指点

关于windows的消息响应机制一直不是很明白。比如我用如下代码做了一个窗口,包含一个按钮,一个静态文本框。现在我想实现点击按钮的时候,静态文本框中的文本内容显示一个随机数字,应该怎么写?请高手指点!

#include<windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void OutputErrorMessage()
{
    LPVOID lpMsgBuf;
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
        (LPTSTR)&lpMsgBuf,
        0,
        NULL
    );
    MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK | MB_ICONINFORMATION);
    LocalFree(lpMsgBuf);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    WNDCLASS wMain;
    HWND hwnd;
    MSG msg;
    static TCHAR szAppName[] = TEXT("test");

    wMain.lpfnWndProc = WndProc;
    wMain.style = CS_HREDRAW | CS_VREDRAW;
    wMain.hInstance = hInstance;
    wMain.cbClsExtra = 0;
    wMain.cbWndExtra = 0;
    wMain.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
    wMain.hCursor = LoadCursor(NULL, IDC_ARROW);
    wMain.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wMain.lpszClassName = szAppName;
    wMain.lpszMenuName = NULL;
    if (!RegisterClass(&wMain))
    {
        OutputErrorMessage();
        MessageBox(NULL, TEXT("无法注册窗口类!"), TEXT("错误"), MB_OK | MB_ICONERROR);
        return 0;
    }
    

    hwnd = CreateWindow(szAppName, TEXT("test"), WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL);

    if (ShowWindow(hwnd, iCmdShow))
    {
        OutputErrorMessage();
    }
    UpdateWindow(hwnd);

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

    return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  static HWND hwndButton;
  static HWND hwndStatic;
  
  switch (message)
    {
    case WM_CREATE:
      hwndButton = CreateWindow(TEXT("BUTTON"), TEXT("test"),
          WS_CHILD | WS_VISIBLE | BS_CENTER,
          100, 400, 80, 50,
          hwnd, NULL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
      hwndStatic = CreateWindow(TEXT("static"), NULL,
                    WS_CHILD | WS_VISIBLE | ES_LEFT | SS_NOTIFY | SS_CENTER | WS_BORDER,
                    100, 50, 100, 100,
                    hwnd, NULL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
      return 0;
    case WM_COMMAND:
      return 0;
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
    }
  return DefWindowProc(hwnd, message, wParam, lParam);
}
 

你可以了解下sendmsg 和 postmsg这两个函数