Я потратил некоторое время на создание дочернего окна существующего окна, используя следующий фрагмент кода в JNA (Java Native Access), но, я думаю, это в значительной степени то же самое с любым другим языком программирования, пытающимся использовать Windows API.Как создать окно Microsoft Windows Child с помощью JNA
Вот моя декларация CreateWindowsExA:
public int CreateWindowExA(int i, String string, String string0, int i0, int i1, int i2, int i3, int i4, int ninja, Object object, Object object0, int i5);
А вот как я это называю:
int childLabel = user32.CreateWindowExA
(
0, //sets style to default
"STATIC", //window style is label
"Show Message", //label text is show Message
1342177280, // WS_CHILD + WS_VISIBLE = &H40000000 + &H10000000
10, //x
90, //y
100, //width
0, //height
parentWindowHandler, //a valid handler to a window (has been tested and is valid)
null, // a handler to a menu
null, //A handle to the instance of the module to be associated with the window. (NO IDEA)
0 //arguments list (no idea)
);
После вызова функции я получаю правильный обработчик к кнопка ... Но это не видно. Вызов getLastError и последующий вызов TranslateMessage дают мне «Функция выполнена успешно». Кроме того, если я вызываю GetAncestor (childButton, 3), я возвращаю свой дескриптор родительскому объектуWindowHandler. Я также могу позвонить GetWindowTextA (childButton..bla) и получит сообщение Show Message. Итак, очевидно, что я создал дочерний элемент parentWindow, и он есть. Однако это не видно. Следующее, что приходит в голову, это то, что мое окно/метка находится в нижней части индекса z своего родителя, поэтому необходимо сделать некоторые другие вызовы, и я намереваюсь это сделать. Но если я ошибаюсь, я просто потрачу немного времени.
Как сделать этого ребенка видимым или что я делаю неправильно. Следует отметить, что я не вызываю это в обратном вызове или не отправляю какие-либо сообщения.
Любые указатели?