Страница 1 из 1

Window TOPMOST для hand-coded проекта

Добавлено: 20 Май 2020, 10:44
morkovin
С11, ABC
Хотелось бы получить сабж. И не получается :(
Что не так?
Привожу фрагмент программы:
PROGRAM

PRAGMA('project(#pragma define(_SVDllMode_ => 0))')
PRAGMA('project(#pragma define(_SVLinkMode_ => 1))')
!- link manifest
PRAGMA('project(#pragma link(TestClientSrc.EXE.manifest))')

MAP
MODULE('Win32API')
_SetWIndowPos (UNSIGNED hWnd, LONG, LONG, LONG, LONG, LONG, ULONG),BOOL,RAW,PASCAL,PROC,NAME('SetWindowPos')
END
END

INCLUDE('WebSockets.inc')
HANDLE equate(long)
HWND equate(HANDLE)
HWND_TOPMOST equate(-1)

client CLASS(TWebSocketClient)
ConnectionOpened PROCEDURE(), DERIVED, PROTECTED
ConnectionClose PROCEDURE(WebSocketCloseCode pCode, STRING pReason), DERIVED, PROTECTED
TextFrame PROCEDURE(STRING pText), DERIVED, PROTECTED
LogError PROCEDURE(STRING pMsg), DERIVED, PROTECTED
END

MsgTextToSend STRING(256)
FileToSend STRING(256)
PrimCnt LONG
AbiCnt LONG
PrevPrimCnt LONG
PrevAbiCnt LONG



MessageQ QUEUE, PRE(MessageQ)
sText STRING(255)
END

host STRING(255)
allowUntrusted BOOL

Window WINDOW('МОНИТОРИНГ ПОСТУПАЮЩИХ'),AT(,,183,132),CENTER,GRAY,SYSTEM, |
FONT('Microsoft Sans Serif',8)
ENTRY(@s255),AT(10,5,109),USE(host)
BUTTON('Connect'),AT(125,4,50),USE(?bConnect)
CHECK(' Allow untrusted'),AT(8,102,,6),USE(allowUntrusted),HIDE
LIST,AT(10,23,171,27),USE(?lstMessages),HIDE,HVSCROLL,FROM(MessageQ)
ENTRY(@n_4),AT(9,77),USE(AbiCnt),SKIP,TRN,CENTER,FONT(,16,,FONT:bold)
ENTRY(@n_4),AT(104,77,53),USE(PrimCnt),SKIP,TRN,CENTER,FONT(,16,,FONT:bold)
STRING('Абитуриенты:'),AT(8,61),USE(?STRING1),FONT('Arial',10,,FONT:regular)
STRING('На первичной регистрации:'),AT(72,61,110,12),USE(?STRING1:2), |
FONT('Arial',10,,FONT:regular)
END

CODE

SYSTEM {PROP:FontSize + PROP:TipsFont}=12
SYSTEM {PROP:FontColor + PROP:TipsFont}=COLOR:Blue
SYSTEM {PROP:FontStyle + PROP:TipsFont}=FONT:bold
SYSTEM {PROP:FontName + PROP:TipsFont}='Arial Cyr'
SYSTEM{PROP:Charset} = CHARSET:Cyrillic
SYSTEM{PROP:Charset+PROP:TipsFont}=CHARSET:Cyrillic


host = GETINI('server', 'host', 'ws://88.87.91.216:8081', '.\TestClientSrc.ini')
allowUntrusted = GETINI('server', 'allowUntrusted', 0, '.\TestClientSrc.ini')

OPEN(Window)
_SetWindowPos(0{PROP:Handle},HWND_TOPMOST,0,0,0,0,3)

Window TOPMOST для hand-coded проекта

Добавлено: 20 Май 2020, 12:48
morkovin
Разобрался! Надо устанавливать TOPMOST только после полного открытия окна! :)
OPEN(Window)
ACCEPT
CASE EVENT()
OF EVENT:AlertKey

OF EVENT:CloseDown
OF EVENT:CloseWindow
OF EVENT:Completed
OF EVENT:GainFocus
OF EVENT:LoseFocus
OF EVENT:Notify
OF EVENT:OpenWindow
! [Priority 8500]
_SetWindowPos(0{PROP:Handle},HWND_TOPMOST,0,0,0,0,3h) !4043h)

OF EVENT:PreAlertKey
ELSE
! [Priority 7560]

END

CASE ACCEPTED()

OF ?bConnect

Window TOPMOST для hand-coded проекта

Добавлено: 20 Май 2020, 14:03
kreator
В первом варианте, наверно, надо было сделать перед вызовом _SetWindowPos "0{prop:Active} = True". В классе SV это присутствует.