Poor Man's MDI II

Category: Application Features

Date: 03-28-2012

Return to Index


 
'Compilable Example:
#Compiler PBWin 10
#Compile EXE
#Dim All
#Include "Win32API.inc"
 
Type myChild
   hWnd as DWord
   zorder as Long
End Type
 
   %IDC_Toolbar = 500
   %IDT_New     = 501
 
   Global hDlg,hDlgB,hDlgC,hDlgD As Dword, dRC,cRC As Rect
   Global cMax as Long, cBox() as myChild
 
Function PBMain() As Long
   Dialog New Pixels, 0, "Parent",300,300,300,300, %WS_OverlappedWindow To hDlg
   Dialog Set Color hDlg, %Black, %White
   CreateToolbar
   Dialog Show Modal hDlg Call DlgProc
End Function
 
CallBack Function DlgProc() As Long
   Local x,y As Long
   Select Case Cb.Msg
      Case %WM_Command
         Select Case Cb.Ctl
            Case %IDT_New
               Incr cMax
               ReDim cBox(cMax)   '0 index reserved
               Dialog Get Loc hDlg To x,y
               Dialog New Pixels, hDlg, "Child" + str$(cMax),x+30,y+70,125,100, %WS_OverlappedWindow To cBox(cMax).hWnd
               Dialog Show Modeless cBox(cMax).hwnd Call CommonProc
         End Select
      Case %WM_Size, %WM_Move
         GetWindowRect(hDlg,dRC)                'will use later
         dRC.nTop = dRC.nTop + Metrics(Caption) 'so that dRC.nTop has client area
   End Select
End Function
 
CallBack Function CommonProc() As Long
   Local pRC As Rect Ptr, commonRC As Rect, iResult As Long
   Static cRCold As Rect
   Select Case Cb.Msg
      Case %WM_SysCommand
         If (Cb.WParam And &HFFF0) = %SC_Minimize Then ? "run minimize routine" : Function = %True
         If (Cb.WParam And &HFFF0) = %SC_Maximize Then ? "run maximize routine" : Function = %True
      Case %WM_Moving, %WM_Sizing
         pRC = Cb.LParam : cRC = @pRC
         iResult = IntersectRect(commonRC, dRC, cRC)  '0 if not intersect
         If EqualRect(commonRC,cRC) Then              '0 if not same
            cRCold = cRC
         Else
            @pRC = cRCold
            Function = %True
         End If
   End Select
End Function
 
Sub CreateToolbar
   Control Add Toolbar, hDlg, %IDC_Toolbar,"", 0,0,0,0
   Toolbar Add Button hDlg, %IDC_Toolbar, 0, %IDT_New, %TbStyle_Button, "New"
End Sub
 
'gbs_00753
'Date: 03-10-2012


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm