Невозможно отобразить ввод текста в новом текстовом поле - PullRequest
0 голосов
/ 29 апреля 2019

В настоящее время я пытаюсь создать программу, которая позволяет мне вводить текст внутри разных текстовых полей. Оттуда у меня есть кнопка для отображения текста в текстовом поле ниже. Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю кнопку, в этом текстовом поле ничего не отображается.

Для этой простой программы я использую C и Windows API для этого.

Объявление переменных для текстовых полей

#define GENERATE_BUTTON 1
HMENU hMenu;
HWND hFirst,hLast;

Чехол Generate Button, используемый для кнопки

LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    switch ( msg)
    {
    case WM_COMMAND:
        switch(wp)
        {

        case 1:
            MessageBeep(MB_OK);
            break;

        case GENERATE_BUTTON:
            char Fname[30],Lname[30],out[200];
            GetWindowText(hFirst,Fname,30);
            GetWindowText(hLast,Lname,30);

            strcpy(out,Fname);
            strcat(out,Lname);

            SetWindowText(hOut,out);

            break;

        }

Код текстового поля

void AddControls(HWND hWnd)
{
    CreateWindowW(L"static",L"First Name:",WS_VISIBLE | WS_CHILD,10,10,100,20,hWnd,
                  NULL,NULL,NULL);
    hFirst = CreateWindowW(L"Edit",L"",WS_VISIBLE | WS_CHILD , 90,10,130,20,hWnd,
                  NULL,NULL,NULL);

    CreateWindowW(L"static",L"Last Name:",WS_VISIBLE | WS_CHILD,10,40,100,20,hWnd,
                  NULL,NULL,NULL);
    hLast = CreateWindowW(L"Edit",L"",WS_VISIBLE | WS_CHILD , 90,40,130,20,hWnd,
                  NULL,NULL,NULL);

    hOut = CreateWindowW(L"Edit","",WS_VISIBLE | WS_CHILD | WS_BORDER, 25,300,500,150,hWnd,NULL,NULL,NULL);

    CreateWindowW(L"Button",L"Display",WS_VISIBLE | WS_CHILD,250,410,70,20,hWnd,{HMENU}GENERATE_BUTTON,NULL,NULL);

Я просто хочу, чтобы он отображал имя и фамилию, но сейчас, когда я нажимаю кнопку отображения, он ничего не делает.

1 Ответ

0 голосов
/ 30 апреля 2019

Я снова запустил твой код. Есть некоторые ошибки, которые необходимо исправить.

CreateWindowW(L"Button",L"Display",WS_VISIBLE | WS_CHILD,250,500,70,20,hWnd,(HMENU)GENERATE_BUTTON,NULL,NULL);

Элементы управления кнопками нельзя поместить в элементы управления редактированием, иначе они будут недействительными.

Я не видел ваше hOut заявление. Может быть, вам нужно обратить на это внимание.

Как сказал @ Реми Лебо, Удалить case 1.

Вот код, который я изменил, чтобы получить нужные вам результаты.

case GENERATE_BUTTON:
{
   TCHAR Fname[512], Lname[512], out[512];
   GetWindowText(hFirst, Fname, 512);
   GetWindowText(hLast, Lname, 512);
   wcscpy_s(out, 512, Fname);
   wcscat_s(out, 512, Lname);
   SetWindowText(hOut, out);

   MessageBeep(MB_OK);
   break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...