Добрый день!
Необходимо возвращать фокус на форму после выполнения некоторых операций и вывода их результата в инфологе. Т.е. инфолог как бы должен остаться в бэкграунде.
Пытаюсь экспериментировать на clicked у Button на форме, но результата нет - инфолог всегда поверху остаётся.
Может надо какой redraw на форме переписать.... подскажите!
Это мои безуспешные попытки:
X++:
void clicked()
{
#define.UserDLL('USER32')
int handle;
DLL _winApiDLL = new DLL(#UserDLL);
DLLFunction setActiveWindow = new DLLFunction(_winApiDLL, 'SetActiveWindow' );
boolean res;
int res2;
int WM_MDINEXT=0x0224;
int WM_MDIACTIVATE=0x0222;
int WM_MDIMAXIMIZE=0x0225;
int WM_MDIGETACTIVE=0x0229;
;
setActiveWindow.returns(ExtTypes::DWord);
setActiveWindow.arg(ExtTypes::DWord);
// breakpoint;
handle = element.hWnd();
super();
info("test");
res = WinApi::setForegroundWindow(handle);
WinApi::setWindowText(handle,strfmt("%1",res));
// ScannedCode.setFocus();
// ScannedCode.setSelection(0,strlen(ScannedCode.text()));
infolog.activateWindow(handle);
// WinApi::setWindowPos(handle,0,0,2,2);
setActiveWindow.call(handle);
// handle = winapi::getForegroundWindow();
// WinApi::setWindowPos(handle,0,0,2,2);
// handle = winapi::sendMessage(infolog.hWnd(),WM_MDIGETACTIVE,0,"");
// WinApi::setWindowText(handle,strfmt("%1",res2));
// WinApi::setWindowPos(handle,0,0,2,2);
element.setActive();
element.formOnTop();
}