2016-08-20 2 views
-2

В настоящее время я делаю проект DLL Win32 с WinAPI с пользовательским интерфейсом. Я смущен тем, как я получаю текстовый текст в C++. Вот как выглядит мой код.Как получить текст окна winapi C++?

case Execute: 
    char text[256]; 
    TCHAR TextBuffer[_MAX_PATH]; 
    LRESULT result = SendMessage(Pointers::ExecuteBar, WM_GETTEXT, 256, LPARAM(text)); 
    HandleCommands(std::string(text)); 
    std::string UserInput = (std::string)(char*)TextBuffer; 
    if (Enabled) 
    { 
     HandleCommands(UserInput); 
    } 
    else 
    { 
     PushMessage(L"Not Initialized.", RGB(255, 140, 0)); 
    }; 
    break; 
}; 
break; 

это мой случай Execute функция.

Вот моя кнопка WinApi для выполнения.

HWND ExecuteButton = CreateWindow(L"BUTTON", L"EXE", (WS_CHILD | WS_VISIBLE), 
    340, 380, 60, 20, Pointers::Window, (HMENU)Execute, DllModule, NULL); 

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

+1

Вы уверены, что вам нужно, как ' текст' и 'TextBuffer'? Кажется, вы используете 'TextBuffer', но он будет содержать мусор. – isanae

ответ

0

Если вы хотите, чтобы получить текст окна просто использовать GetWindowText() функции

  • первых пары являются дескриптором окна, который вы хотите скопировать его текст.
  • 2nd param - это символ, который должен быть предварительно определен.
  • 3rd param - максимальное количество символов, которые вы копируете.

Пример:

char copy[ ] = " "; 
GetWindowText(hWndTextBox, &copy[0], sizeof(copy)-1); 

Здесь третий парам даст неограниченное количество символов, чтобы копироваться вы можете установить его в любое целое число, как 20

+0

Спасибо за то, кто отредактировал ответ для меня, но я не знаю, как сделать этот серый фон вокруг кода, поэтому, если кто-нибудь может просто прокомментировать его здесь, чтобы я мог использовать его в будущем, чтобы сделать мои ответы более читабельными –

Смежные вопросы