Hello

Im trying to debug WM_KEYDOWN messages in Visual Studio 2022 in order to see why I dont get Ctrl-A message in the second edit box but I dont see any message in the debug output window.

Im sending Ctrl-A to the hOutput edit box but the focus arrives on the hCombo1 combo box.

Code:
#define BUILD_WINDOWS
#include "Capitalizor.h"

LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HFONT    hBig, hFont;
    HDC    hdc;
    hWnd2 = hWnd;
    LRESULT index;
    switch (message)
    {
    case WM_CREATE:
        hdc = GetDC(HWND_DESKTOP);
        hFont = CreateFont(-MulDiv(9, GetDeviceCaps(hdc, LOGPIXELSY), 72),
            0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,
            CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE,
            get_os_ver() == VER_LONGHORN ? "Segoe UI" : "Times New Roman");
        hBig = CreateFont(-MulDiv(12, GetDeviceCaps(hdc, LOGPIXELSY), 72),
            0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,
            CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE,
            get_os_ver() == VER_LONGHORN ? "Segoe UI" : "Times New Roman");

        hTitle1 = CreateWindow(
            "static", "Text:",
            WS_VISIBLE | WS_CHILD,
            20, 30, 60, 20,
            hWnd, (HMENU)90, 0, NULL);
        SendMessage(hTitle1, WM_SETFONT, (WPARAM)hBig, FALSE);

        hInput = CreateWindowEx(
            WS_EX_CLIENTEDGE, "EDIT", "",
            WS_CHILD | WS_VISIBLE | WS_VSCROLL |
            ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
            100, 30, 300, 40,
            hWnd, (HMENU)IDB_TEXT1, 0, NULL);

        hTitle2 = CreateWindow(
            "static", "Result:",
            WS_VISIBLE | WS_CHILD,
            20, 80, 60, 20,
            hWnd, (HMENU)92, 0, NULL);
        SendMessage(hTitle2, WM_SETFONT, (WPARAM)hBig, FALSE);

        hOutput = CreateWindowEx(
            WS_EX_CLIENTEDGE, "EDIT", "",
            WS_CHILD | WS_VISIBLE | WS_VSCROLL |
            ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
            100, 80, 300, 40,
            hWnd, (HMENU)IDB_TEXT2, 0, NULL);

        hTitle3 = CreateWindow(
            "static", "Select:",
            WS_VISIBLE | WS_CHILD,
            20, 130, 60, 20,
            hWnd, (HMENU)93, 0, NULL);
        SendMessage(hTitle3, WM_SETFONT, (WPARAM)hBig, FALSE);

        hCombo1 = CreateWindowEx(
            WS_EX_CLIENTEDGE, "combobox", 0,
            WS_VISIBLE | WS_TABSTOP | WS_CHILD |
            CBS_DROPDOWNLIST,
            100, 130, 220, 260,
            hWnd, (HMENU)IDC_COMBO1, 0, NULL);

        FillListBox(hCombo1);

        SetWindowText(hInput, "ipsum dolor sit amet, consectetur adipiscing");

        ReleaseDC(hWnd, hdc);
        return 0;

    case WM_COMMAND:
        switch (HIWORD(wParam))
        {
        case CBN_CLOSEUP:
            switch (LOWORD(wParam))
            {
            case IDC_COMBO1:
                index = SendMessage(hCombo1, CB_GETCURSEL, (WPARAM)0, 0L);
                GetDlgItemText(hWnd, IDB_TEXT1, szValue, 1024);
                if (strlen(szValue) < 1)
                {
                    MessageBox(hWnd2, "Text not entered!", "Error!", MB_ICONEXCLAMATION | MB_OK);
                }
                else
                {
                    ChoiceCheck(index);
                }
                break;
            }
        }
        return 0;

    case WM_KEYDOWN:
        if (wParam == 'A' && (::GetKeyState(VK_CONTROL) & 0x8000) != 0) //(wParam == VK_CONTROL)
        {
            // WM_SETFOCUS needs for EM_SETSEL to work
            SendMessage(hOutput, WM_SETFOCUS, 0, 0);
            SendMessage(hOutput, EM_SETSEL, 0, -1);
            cout << "[keydown]\n";
        }
        else if (wParam == 'C' && (::GetKeyState(VK_CONTROL) & 0x8000) != 0)
        {
            cout << "[copy]\n";
            GetWindowText(hOutput, szValue, 512);
            cout << "[" << szValue << "]\n";
        }
        return 0;

        // remove box behind text
    case WM_CTLCOLORSTATIC:
        if (GetDlgItem(hWnd, 90) == (HWND)lParam)
        {
            SetBkMode((HDC)wParam, TRANSPARENT);
            return (LRESULT)GetStockObject(HOLLOW_BRUSH);
        }
        else if (GetDlgItem(hWnd, 92) == (HWND)lParam)
        {
            SetBkMode((HDC)wParam, TRANSPARENT);
            return (LRESULT)GetStockObject(HOLLOW_BRUSH);
        }
        else if (GetDlgItem(hWnd, 93) == (HWND)lParam)
        {
            SetBkMode((HDC)wParam, TRANSPARENT);
            return (LRESULT)GetStockObject(HOLLOW_BRUSH);
        }
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    } // message switch
    return DefWindowProc(hWnd, message, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hThisInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszArgument,
    int nFunsterStil)
{
    HWND hWnd;
    MSG msg;
    WNDCLASSEX wincl;
    char szClassName[] = "Universal Converter 1.0";

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof(WNDCLASSEX);
    wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    BackG = wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;

    if (!RegisterClassEx(&wincl))
        return 0;

    hWnd = CreateWindowEx(
        0,
        szClassName,
        szClassName,
        WS_SYSMENU | WS_MINIMIZEBOX,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        450,
        200,
        HWND_DESKTOP,
        NULL,
        hThisInstance,
        NULL
    );

    ShowWindow(hWnd, nFunsterStil);

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

    return msg.wParam;
}