2010-10-27 4 views
0

Я потратил некоторое время на создание дочернего окна существующего окна, используя следующий фрагмент кода в 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 своего родителя, поэтому необходимо сделать некоторые другие вызовы, и я намереваюсь это сделать. Но если я ошибаюсь, я просто потрачу немного времени.

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

Любые указатели?

ответ

0

Да, это было то, что я думал, но немного другое. Сообщение WM_PAINT необходимо отправить в родительское окно, чтобы оно обновилось.

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

  • Нет связанных вопросов^_^