@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 Select
signalMask.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