Как вызвать WindowProcedure Window вне области видимости? - PullRequest
0 голосов
/ 18 января 2019

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

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
            switch (message)
            {
            case WM_CREATE:
            textBox3 =     CreateWindow("EDIT","",WS_VISIBLE,10,20,475,185,hwnd, NULL, NULL, NULL);

        case WM_COMMAND:

            switch(LOWORD(wParam))
            {
                case 1:
                    SetWindowText(hwnd, "test")
            }
            break;
        }
}

---
class.cpp file:

void class::test(){
    string x = "printthis";
    SetWindowText(hwnd, x)
    }
}

1 Ответ

0 голосов
/ 22 января 2019

Сначала 100 FindWindowA() может найти окна, которые нужно отправить, и получить дескриптор окна («hwnd»). Используйте SendMessage() отправку чего-либо в обработчик сообщений Trigger WindowProcedure(), затем обработайте этот тип сообщения в WindowProcedure().

Вот пример кода:

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    COPYDATASTRUCT* copyData;
    CHAR str[BUFFER_SIZE] = { 0 };
    switch (message)
    {
    case WM_CREATE:
        //Do Creat Windows.
        break;
    case WM_COMMAND:
        //Do Something.
        break;
    case WM_COPYDATA:
        copyData = (COPYDATASTRUCT*)lParam;
        memcpy(str, (void *)copyData->lpData, copyData->cbData);
        MessageBoxA(hWnd, str, "title", MB_OKCANCEL);
        break;
    }
}

файл class.cpp:

#include <windows.h>
#pragma  warning(disable:4996)
int main()
{
    char szWindowClass[] = "EDIT";
    char cp[] = "printthis";
    HWND hWnd = FindWindowA(szWindowClass, "xxx"/*windows title*/);
    COPYDATASTRUCT copyData = { 0 };
    copyData.lpData = cp;
    copyData.cbData = strlen(cp)+1;
    LRESULT h = SendMessageA(hWnd, WM_COPYDATA, 0, (LPARAM)&copyData);
    BOOL reg = SetWindowTextA(hWnd, "test");
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...