@peceha, post #4
DEFTYPE.Screen *scr
DEFTYPE.Window *win0,*win1,*win2
DEFTYPE.IntuiMessage *msg
DEFTYPE.l win0_sigBit
DEFTYPE.l win1_sigBit
DEFTYPE.w scrW
DEFTYPE.w scrH
DEFTYPE.b scrBarH
DEFTYPE.b fontH
DEFTYPE.b bBottom
DEFTYPE.b bTop
DEFTYPE.b bRight
DEFTYPE.b bLeft
DEFTYPE.l theClass
DEFTYPE.l theCode
DEFTYPE.l theQualifier
DEFTYPE.l theIAddress
DEFTYPE.b quitFlag
Dim tags.TagItem(11)
tags(0)\ti_Tag = #SA_LikeWorkbench, True
tags(1)\ti_Tag = #SA_Type, #PUBLICSCREEN
tags(2)\ti_Tag = #SA_PubName, "blabla"
tags(3)\ti_Tag = #SA_SysFont, 1
tags(4)\ti_Tag = #SA_Title, "przeMulti"
tags(5)\ti_Tag = #TAG_DONE, 0
*scr = OpenScreenTagList_(0,tags(0))
If *scr=0 Then End
suc.l = PubScreenStatus_(*scr,0)
scrW = *scr\Width
scrH = *scr\Height
scrBarH = *scr\BarHeight+1
fontH = *scr\Font\ta_YSize
bLeft = *scr\WBorLeft
bRight = *scr\WBorRight
bBottom = *scr\WBorBottom
bTop = *scr\WBorTop + (*scr\Font\ta_YSize + 1)
winW.w=scrW/4
winH.w=scrH-scrBarH
idcmp.l=#IDCMP_CLOSEWINDOW|#IDCMP_RAWKEY|#IDCMP_REFRESHWINDOW|#IDCMP_GADGETUP|#IDCMP_GADGETDOWN|#ARROWIDCMP
tags(0)\ti_Tag = #WA_Left, 0
tags(1)\ti_Tag = #WA_Top, scrBarH
tags(2)\ti_Tag = #WA_Width, winW
tags(3)\ti_Tag = #WA_Height, winH
tags(4)\ti_Tag = #WA_PubScreen, *scr
tags(5)\ti_Tag = #WA_Title, "list"
tags(6)\ti_Tag = #WA_Activate, True
tags(7)\ti_Tag = #WA_Flags, #WFLG_DRAGBAR|#WFLG_CLOSEGADGET
tags(8)\ti_Tag = #WA_IDCMP, idcmp
tags(9)\ti_Tag = #WA_Gadgets, 0
tags(10)\ti_Tag = #TAG_DONE, 0
*win0=OpenWindowTagList_(0,tags(0))
If *win0=0 Then End
win0_sigBit=1 LSL *win0\UserPort\mp_SigBit
tags(0)\ti_Tag = #WA_Left, winW+1
tags(1)\ti_Tag = #WA_Top, scrBarH
tags(2)\ti_Tag = #WA_Width, scrW-winW
tags(3)\ti_Tag = #WA_Height, winH
tags(4)\ti_Tag = #WA_PubScreen, *scr
tags(5)\ti_Tag = #WA_Title, "preview"
tags(6)\ti_Tag = #WA_Activate, False
tags(7)\ti_Tag = #WA_Flags, #WFLG_DRAGBAR|#WFLG_CLOSEGADGET
tags(8)\ti_Tag = #WA_IDCMP, #IDCMP_CLOSEWINDOW|#IDCMP_RAWKEY|#IDCMP_REFRESHWINDOW
tags(9)\ti_Tag = #WA_Gadgets, 0
tags(10)\ti_Tag = #TAG_DONE, 0
*win1 = OpenWindowTagList_(0,tags(0))
If *win1=0 Then End
win1_sigBit=1 LSL *win1\UserPort\mp_SigBit
;-----------------
.main
Repeat
theClass =0
theCode =0
theQualifier =0
signalMask.l=Wait_(win0_sigBit|win1_sigBit)
Select signalMask
Case signalMask&win0_sigBit
Gosub idcmp_win0:
Case signalMask&win1_sigBit
Gosub idcmp_win1:
End Select
Until quitFlag
CloseWindow_(*win1)
CloseWindow_(*win0)
FreeGadgets_(*gList)
FreeVisualInfo_(*vi)
CloseScreen_(*scr)
End
;==============================================================================
.idcmp_win0
Repeat
*msg = GT_GetIMsg_(*win0\UserPort)
theClass = *msg\Class
theCode = *msg\Code
theQualifier = *msg\Qualifier
theIAddress = *msg\IAddress
GT_ReplyIMsg_(*msg)
Select theClass
Case #IDCMP_CLOSEWINDOW
quitFlag=True
End Select
Until *msg=0
Return
.idcmp_win1
*msg = GetMsg_(*win1\UserPort)
theClass = *msg\Class
theCode = *msg\Code
theQualifier = *msg\Qualifier
ReplyMsg_(*msg)
Select theClass
Case #IDCMP_CLOSEWINDOW
quitFlag=True
End Select
Return @asman, post #6
Ja to widzę tak, że problem jest, że używasz tags zarówno do okna win0 jak i win1. Stwórz tags0 i tags1 i wtedy powinno być dobrze.
tags(5)\ti_Tag = #WA_Title, "list"
tags(5)\ti_Tag = #WA_Title, "preview"
@peceha, post #5
signalMask.l=Wait_(win0_sigBit|win1_sigBit)
Select signalMask
Case signalMask&win0_sigBit
Gosub idcmp_win0:
Case signalMask&win1_sigBit
Gosub idcmp_win1:
End SelectsignalMask.l=Wait_(win0_sigBit|win1_sigBit)
Select True
Case signalMask And win0_sigBit
Gosub idcmp_win0:
Case signalMask And win1_sigBit
Gosub idcmp_win1:
End Select
As a minimum, the application must call BeginRefresh() and
EndRefresh() for the window after receiving an IDCMP_REFRESHWINDOW
event. Create the window with the WA_NoCareRefresh attribute if you
do not want to manage these events. See the "Intuition Windows"
chapter for details.
@mschulz, post #9
@peceha, post #10