Тут можно задавать вопросы по Си/Си++
Тут можно задавать вопросы по Си/Си++
Сообщений 1 страница 4 из 4
Поделиться2Сб, 25 Июл 2020 06:40:18
Вопрос по Win32 API, как в Си или Си++ отправлять текст в окно, а так-же из буфера обмена, если знаешь HWND?
Отредактировано pochemuchka (Сб, 25 Июл 2020 06:42:56)
Поделиться3Сб, 25 Июл 2020 07:02:47
Отправить текст в окно просто вот так:
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND hwndField1; // Поле1 HWND hwndField2; // Поле2 char buf[512]; switch (message) { case WM_CREATE: hwndField1 = CreateWindow("EDIT", "AA", WS_CHILD | WS_VISIBLE, 10, 10, 200, 30, hwnd, NULL, hInst, lParam); // Создаём поле1 hwndField2 = CreateWindow("EDIT", "BB", WS_CHILD | WS_VISIBLE, 10, 30, 100, 20, hwnd, NULL, hInst, lParam); // Создаём поле2 GetWindowText(hwndField1, buf, GetWindowTextLength(hwndField1)+1); // Считываем текст из поел1, и сохраняем в переменную buf SetWindowText(hwndField2, buf); // Считываем из переменной buf, и записываем текст в поле2 break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; }
Чтобы вставить из буфера обмена то вот код:
SendMessage(hwndField1, WM_ACTIVATE, LOWORD(WA_ACTIVE), NULL); // Делаем поле1 активным keybd_event(VK_LCONTROL, 0, 0, 0); // Посылаем клавишу LCTRL keybd_event(0x56, 0, 0, 0); // и V keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0); // Отпускаем LCTRL keybd_event(0x56, 0, KEYEVENTF_KEYUP, 0); // Отпускаем V
Поделиться4Вс, 1 Авг 2021 07:41:27
char buf[512];
GetWindowText(hwndField1, buf, GetWindowTextLength(hwndField1)+1); // Считываем текст из поел1, и сохраняем в переменную buf
SetWindowText(hwndField2, buf); // Считываем из переменной buf, и записываем текст в поле2
Как же я промахнулся... Сорри прям стыдно... Короче в коде ошибка.
Короче делать лучше так:
#include <malloc.h>
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND hwndField1; // Поле1 HWND hwndField2; // Поле2 char *buf; ...
switch (message) { case WM_CREATE: buf = (char *) malloc(GetWindowTextLength(hwndField1)+1); GetWindowText(hwndField1, buf); // Считываем текст из поел1, и сохраняем в переменную buf SetWindowText(hwndField2, buf); // Считываем из переменной buf, и записываем текст в поле2 free(buf); ...