home *** CD-ROM | disk | FTP | other *** search
/ The Houseplan Collection / HRCD2005.ISO / data1.cab / Zusatz / 3DS / DATA2.Z / CoolOEMApp.frm < prev    next >
Text File  |  1999-04-23  |  15KB  |  467 lines

  1. VERSION 5.00
  2. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
  3. Begin VB.Form CoolOEMApp 
  4.    Caption         =   "ArCon in a Box"
  5.    ClientHeight    =   5445
  6.    ClientLeft      =   60
  7.    ClientTop       =   345
  8.    ClientWidth     =   7800
  9.    LinkTopic       =   "Form1"
  10.    ScaleHeight     =   5445
  11.    ScaleWidth      =   7800
  12.    StartUpPosition =   3  'Windows Default
  13.    Begin VB.CommandButton ShowAll 
  14.       Caption         =   "A-Z"
  15.       Height          =   375
  16.       Left            =   7320
  17.       TabIndex        =   14
  18.       Top             =   240
  19.       Width           =   495
  20.    End
  21.    Begin VB.CommandButton StartWalking 
  22.       Caption         =   "Go!"
  23.       Height          =   375
  24.       Left            =   6840
  25.       TabIndex        =   13
  26.       Top             =   240
  27.       Width           =   375
  28.    End
  29.    Begin VB.Timer Timer 
  30.       Left            =   120
  31.       Top             =   -120
  32.    End
  33.    Begin MSComDlg.CommonDialog dlg 
  34.       Left            =   600
  35.       Top             =   -120
  36.       _ExtentX        =   847
  37.       _ExtentY        =   847
  38.       _Version        =   393216
  39.    End
  40.    Begin VB.CommandButton Walk 
  41.       Height          =   375
  42.       Left            =   6360
  43.       Picture         =   "CoolOEMApp.frx":0000
  44.       Style           =   1  'Graphical
  45.       TabIndex        =   12
  46.       Top             =   240
  47.       Width           =   375
  48.    End
  49.    Begin VB.CommandButton Zoom 
  50.       Height          =   375
  51.       Left            =   5880
  52.       Picture         =   "CoolOEMApp.frx":0172
  53.       Style           =   1  'Graphical
  54.       TabIndex        =   11
  55.       Top             =   240
  56.       Width           =   375
  57.    End
  58.    Begin VB.CommandButton WalkRight 
  59.       Height          =   375
  60.       Left            =   5280
  61.       Picture         =   "CoolOEMApp.frx":02E4
  62.       Style           =   1  'Graphical
  63.       TabIndex        =   10
  64.       Top             =   240
  65.       Width           =   375
  66.    End
  67.    Begin VB.CommandButton WalkDown 
  68.       Height          =   375
  69.       Left            =   4800
  70.       Picture         =   "CoolOEMApp.frx":04F6
  71.       Style           =   1  'Graphical
  72.       TabIndex        =   9
  73.       Top             =   480
  74.       Width           =   375
  75.    End
  76.    Begin VB.CommandButton WalkUp 
  77.       Height          =   375
  78.       Left            =   4800
  79.       Picture         =   "CoolOEMApp.frx":0708
  80.       Style           =   1  'Graphical
  81.       TabIndex        =   8
  82.       Top             =   0
  83.       Width           =   375
  84.    End
  85.    Begin VB.CommandButton WalkLeft 
  86.       Height          =   375
  87.       Left            =   4320
  88.       Picture         =   "CoolOEMApp.frx":091A
  89.       Style           =   1  'Graphical
  90.       TabIndex        =   7
  91.       Top             =   240
  92.       Width           =   375
  93.    End
  94.    Begin VB.CommandButton SaveBitmap 
  95.       Height          =   375
  96.       Left            =   3600
  97.       Picture         =   "CoolOEMApp.frx":0B2C
  98.       Style           =   1  'Graphical
  99.       TabIndex        =   6
  100.       Top             =   240
  101.       Width           =   375
  102.    End
  103.    Begin VB.CommandButton PrintIt 
  104.       Height          =   375
  105.       Left            =   3120
  106.       Picture         =   "CoolOEMApp.frx":0C9E
  107.       Style           =   1  'Graphical
  108.       TabIndex        =   5
  109.       Top             =   240
  110.       Width           =   375
  111.    End
  112.    Begin VB.CheckBox ShowExplorer 
  113.       Height          =   375
  114.       Left            =   2640
  115.       Picture         =   "CoolOEMApp.frx":0E10
  116.       Style           =   1  'Graphical
  117.       TabIndex        =   4
  118.       Top             =   240
  119.       Width           =   375
  120.    End
  121.    Begin VB.CommandButton ConstMode 
  122.       Height          =   375
  123.       Left            =   1680
  124.       Picture         =   "CoolOEMApp.frx":0F82
  125.       Style           =   1  'Graphical
  126.       TabIndex        =   3
  127.       Top             =   240
  128.       Width           =   855
  129.    End
  130.    Begin VB.CommandButton Designmode 
  131.       Height          =   375
  132.       Left            =   720
  133.       Picture         =   "CoolOEMApp.frx":1234
  134.       Style           =   1  'Graphical
  135.       TabIndex        =   2
  136.       Top             =   240
  137.       Width           =   855
  138.    End
  139.    Begin VB.CommandButton OpenProject 
  140.       Height          =   375
  141.       Left            =   120
  142.       Picture         =   "CoolOEMApp.frx":14E6
  143.       Style           =   1  'Graphical
  144.       TabIndex        =   1
  145.       Top             =   240
  146.       Width           =   495
  147.    End
  148.    Begin VB.Frame ArConFrame 
  149.       Caption         =   "Das ArCon Fenster:"
  150.       Height          =   4455
  151.       Left            =   120
  152.       TabIndex        =   0
  153.       Top             =   840
  154.       Width           =   7575
  155.    End
  156. End
  157. Attribute VB_Name = "CoolOEMApp"
  158. Attribute VB_GlobalNameSpace = False
  159. Attribute VB_Creatable = False
  160. Attribute VB_PredeclaredId = True
  161. Attribute VB_Exposed = False
  162. ' ----------------------------------------------------------------------------
  163. ' MS Visual Basic Demo-Programm zur Demonstration der ActiveX-FΣhigkeit
  164. ' von ArCon(+).
  165. '
  166. ' Der abgebildete Code dient lediglich Demonstrationszwecken.
  167. ' Es wird keinerlei Garantie fⁿr die Richtigkeit und/oder
  168. ' FunktionsfΣhigkeit ⁿbernommen. Bei Fragen wenden Sie sich bitte an
  169. '
  170. '    mb-Programme
  171. '    Software im Bauwesen GmbH
  172. '    Hermannstra▀e 1
  173. '    D-31785 Hameln
  174. '    e-mail:  arcon@mb-software.de
  175. '    Internet http://www.mb-software.de
  176. '
  177. ' ----------------------------------------------------------------------------
  178. '    A C H T U N G :
  179. '    ===============
  180. '
  181. '      Dieses Demo wird nicht in jeder ArCon Version vollstΣndig
  182. '      funktionieren, da es spezielle Eigenschaften einer OEM-Version
  183. '      vorraussetzt.
  184. '
  185. '      Dennoch ist im Originalzustand dieses Projekt mit der Standard-
  186. '      ArCon CLSID verbunden, da CLSID's fⁿr OEM-Versionen unterschiedlich
  187. '      sind. Bevor Sie dieses Demo mit Ihrer OEM-Version einsetzten k÷nnen,
  188. '      mⁿssen Sie die entsprechende Verknⁿpfung herstellen (Project/References).
  189. ' ----------------------------------------------------------------------------
  190.  
  191. Option Explicit
  192.  
  193. ' Die globale Instanz des Applikations-Objektes
  194. Dim WithEvents prg As ArCon.ArCon
  195. Attribute prg.VB_VarHelpID = -1
  196.  
  197. ' Statische Hilfsvariablen
  198. Dim fName As String     ' Projekt Dateiname
  199. Dim dir As String       ' Directory dazu
  200. Dim lastPos As RECT     ' Letzte Fensterposition
  201.  
  202. ' Timer Zeitkonstanten
  203. Const TIMER_ON As Long = 250
  204. Const TIMER_OFF As Long = 0
  205.  
  206. ' ArCon BenutzeroberflΣche anpassen
  207. Private Sub RemovePanelsAndMenus()
  208.     ' Standard-Menⁿs ausschalten
  209.     prg.ShowMenu AC_NoMode, False
  210.     prg.ShowMenu AC_ModeConstruct, False
  211.     prg.ShowMenu AC_ModeDesign, False
  212.     
  213.     ' Standard Panels ausschalten
  214.     prg.ShowPanel ACBI_UpperPannel, False
  215.     prg.ShowPanel ACBI_LeftPannel + ACBI_ConstructionMode + ACBI_NoMode, False
  216.     prg.ShowPanel ACBI_LeftPannel + ACBI_DesignMode, False
  217.     prg.ShowPanel ACBI_HowPannel, False
  218.     prg.ShowPanel ACBI_ViewPannel, False
  219.     prg.ShowPanel ACBI_StatusPannel, False
  220. End Sub
  221.  
  222. Private Sub ConstMode_Click()
  223.     prg.Mode = AC_ModeConstruct
  224.     UpdateButtons
  225. End Sub
  226.  
  227. Private Sub Designmode_Click()
  228.     prg.Mode = AC_ModeDesign
  229.     UpdateButtons
  230. End Sub
  231.  
  232. ' Initialisierung und Programmstart
  233. Private Sub Form_Load()
  234.     ' globale ArCon Instanz erzeugen
  235.     Set prg = New ArCon.ArCon
  236.     
  237.     ' Erzeuge das ArCon Hauptfenster in einem Rahmen
  238.     prg.StartMe2 hwnd, "", False, ArConFrame.hwnd
  239.     
  240.     ' Alle ArCon Menⁿs und Panels entsorgen
  241.     RemovePanelsAndMenus
  242.     UpdateButtons
  243.     
  244.     ' Initiale Gr÷▀e anpassen
  245.     Form_Resize
  246.     
  247.     ' Wenn spΣter der Explorer erscheint, soll er rechts andocken
  248.     prg.SetExternalViewDockMode EXT_VIEWS_EXPLORER, DOCKMODE_DockRight, 0, 0, 0, 0
  249. End Sub
  250.  
  251. ' Bei Gr÷▀enΣnderungen passen wir den Rahmen, in dem ArCon sitzt,
  252. ' an die neue Gr÷▀e an. Natⁿrlich nur, wenn das ganze noch ins Fenster
  253. ' pa▀t.
  254. Private Sub Form_Resize()
  255.     ' Pa▀t der Frame noch in unseren Client-Bereich?
  256.     If ScaleWidth < 300 Or ScaleHeight < 1000 Then Exit Sub
  257.     
  258.     ' Ja, also dessen Gr÷▀e anpassen
  259.     ArConFrame.Width = ScaleWidth - 225
  260.     ArConFrame.Height = ScaleHeight - 990
  261.  
  262.     ' Jetzt das ArCon-Fenster anpassen
  263.     Dim r As RECT
  264.     GetClientRect ArConFrame.hwnd, r
  265.     MoveWindow prg.ArConWindowHandle, r.Left + 5, r.Top + 15, r.Right - 10, r.Bottom - 25, True
  266.   
  267.     ' Wichtig: damit ArCon's interne Verwaltung der Fensterposition funktioniert,
  268.     ' mu▀ es hier von seiner PositionsΣnderung informiert werden (als Child-Window
  269.     ' bekommt es diese Information nicht von Windows)
  270.     prg.UpdateWindowPos
  271.  
  272. End Sub
  273.  
  274. ' Das Hauptprogramm wird beendet, vorher unbeding ArCon daraus entfernen
  275. Private Sub Form_Unload(Cancel As Integer)
  276.     If Not prg Is Nothing Then
  277.         prg.EndArCon
  278.     End If
  279.     If Not prg Is Nothing Then
  280.         prg.EndMe
  281.         Set prg = Nothing
  282.     End If
  283. End Sub
  284.  
  285. Private Sub OpenProject_Click()
  286.     If prg.LoadProjectDialog(hwnd, "Visual Basic ÷ffnet ein ArCon Projekt", fName, dir) Then
  287.         prg.LoadProject fName
  288.         UpdateButtons
  289.     End If
  290. End Sub
  291.  
  292. ' Der Explorer ist manuel an(?) oder ausgeschaltet worden
  293. Private Sub prg_ExternalViewsVisibilityChanged(ByVal newVisibility As Long)
  294.     If newVisibility And EXT_VIEWS_EXPLORER Then
  295.         ShowExplorer.Value = 1
  296.         Timer_Timer
  297.         Timer.Interval = TIMER_ON
  298.     Else
  299.         ShowExplorer.Value = 0
  300.         Timer.Interval = TIMER_OFF
  301.     End If
  302. End Sub
  303.  
  304. ' ArCon wird beendet (was in einer OEM Version natⁿrlich nicht ohne Befehl
  305. ' des Steuerprogrammes passiert) - wir mⁿssen unbedingt die Window-Hierachie
  306. ' wieder korrigieren, was durch ein 'EndMe' geschieht. Au▀erdem beenden wir
  307. ' das Steuerprogramm.
  308. Private Sub prg_ProgramExit()
  309.     If Not prg Is Nothing Then
  310.         prg.EndMe
  311.         Set prg = Nothing
  312.     End If
  313.     Unload Me
  314. End Sub
  315.  
  316. Private Sub PrintIt_Click()
  317.     prg.ActiveView.[Print] Nothing, True, True
  318.     ' Wir k÷nnten auch eigenen PrinterSettings verwenden:
  319.     'Dim settings As ArCon.PrintSettings
  320.     'Set settings = prg.NewPrintSettings
  321.     'settings.GreyColor = GRCOLOR_WieKonstruktion
  322.     'prg.ActiveView.[Print] settings, True, True
  323. End Sub
  324.  
  325. Private Sub SaveBitmap_Click()
  326.     ' Vergleiche Sub PrintIt: auch hier k÷nnten wir
  327.     ' eigene Settings verwenden (ArCon.SavePictureSettings)
  328.     ' und einen Dateinamen vorgeben, dann wⁿrde kein Dialog
  329.     ' erscheinen
  330.     prg.ActiveView.SavePicture Nothing, ""
  331. End Sub
  332.  
  333. Private Sub ShowAll_Click()
  334.     prg.ActiveView.ShowAll
  335. End Sub
  336.  
  337. ' Schaltet den Explorer an oder aus
  338. Private Sub ShowExplorer_Click()
  339.     Dim bits As Long
  340.     bits = prg.ActiveExternalViews
  341.     If ShowExplorer.Value = 0 Then
  342.         bits = bits And (Not EXT_VIEWS_EXPLORER)
  343.         Timer.Interval = TIMER_OFF
  344.     Else
  345.         bits = bits Or EXT_VIEWS_EXPLORER
  346.         Timer_Timer
  347.         Timer.Interval = TIMER_ON
  348.     End If
  349.     prg.SetExternalViews bits
  350.     UpdateButtons
  351. End Sub
  352.  
  353. Private Sub StartWalking_Click()
  354.     SetActiveWindow prg.ArConWindowHandle
  355.     prg.ActiveView.StartWalking False
  356. End Sub
  357.  
  358. ' Window-Position ermitteln und mit der letzten vergleichen.
  359. ' Falls ein externes Zusatzmodul wie der Objekt- und Texturexplorer
  360. ' angezeigt wird, mⁿssen wir ArCon ⁿber ─nderungen der absoluten
  361. ' Fensterposition informieren. Eigentlich gibt es dazu eine entsprechende
  362. ' Windows-Message WM_WINDOWPOSCHANGED, bzw. WM_MOVE, aber in Visual
  363. ' Basic ist es nicht so einfach, an diese Nachrichten zu kommen.
  364. Private Sub Timer_Timer()
  365.     Dim pos As RECT
  366.     GetWindowRect hwnd, pos
  367.     If pos.Left <> lastPos.Left Or pos.Right <> lastPos.Right Or _
  368.         pos.Top <> lastPos.Top Or pos.Bottom <> lastPos.Bottom Then
  369.         lastPos = pos
  370.         prg.UpdateWindowPos
  371.     End If
  372. End Sub
  373.  
  374. Private Sub Walk_Click()
  375.     dlg.DialogTitle = "Walk Datei ÷ffnen"
  376.     dlg.Filter = "Walk Dateien (*.wlk)|*.wlk|Alle Dateien (*.*)|*.*||"
  377.     dlg.Flags = cdlOFNFileMustExist
  378.     On Error GoTo failed
  379.     dlg.CancelError = True
  380.     dlg.ShowOpen
  381.     prg.ActiveView.PlayWalkFile dlg.FileName, False
  382. failed:
  383.     On Error GoTo 0
  384. End Sub
  385.  
  386. Private Sub WalkDown_Click()
  387.     prg.ActiveView.Pan VCC_PAN_Unten, False
  388. End Sub
  389.  
  390. Private Sub WalkLeft_Click()
  391.     prg.ActiveView.Pan VCC_PAN_Links, False
  392. End Sub
  393.  
  394. Private Sub WalkRight_Click()
  395.     prg.ActiveView.Pan VCC_PAN_Rechts, False
  396. End Sub
  397.  
  398. Private Sub WalkUp_Click()
  399.     prg.ActiveView.Pan VCC_PAN_Oben, False
  400. End Sub
  401.  
  402. Private Sub Zoom_Click()
  403.     SetActiveWindow prg.ArConWindowHandle
  404.     prg.ActiveView.StartZoom
  405. End Sub
  406.  
  407. ' Enabled/disabled die gerade verfⁿgbaren Kn÷pfe
  408. Private Sub UpdateButtons()
  409.     If prg.Mode = AC_NoMode Then
  410.         OpenProject.Enabled = True
  411.         Designmode.Enabled = False
  412.         ConstMode.Enabled = False
  413.         ShowExplorer.Enabled = False
  414.         PrintIt.Enabled = False
  415.         SaveBitmap.Enabled = False
  416.         WalkLeft.Enabled = False
  417.         WalkUp.Enabled = False
  418.         WalkDown.Enabled = False
  419.         WalkRight.Enabled = False
  420.         Zoom.Enabled = False
  421.         Walk.Enabled = False
  422.         StartWalking.Enabled = False
  423.         ShowAll.Enabled = False
  424.         Timer.Interval = TIMER_OFF
  425.     ElseIf prg.Mode = AC_ModeConstruct Then
  426.         OpenProject.Enabled = True
  427.         Designmode.Enabled = True
  428.         ConstMode.Enabled = False
  429.         ShowExplorer.Enabled = False
  430.         PrintIt.Enabled = True
  431.         SaveBitmap.Enabled = True
  432.         WalkLeft.Enabled = True
  433.         WalkUp.Enabled = True
  434.         WalkDown.Enabled = True
  435.         WalkRight.Enabled = True
  436.         Zoom.Enabled = True
  437.         Walk.Enabled = False
  438.         StartWalking.Enabled = False
  439.         ShowAll.Enabled = True
  440.         Timer.Interval = TIMER_OFF
  441.     Else
  442.         OpenProject.Enabled = True
  443.         Designmode.Enabled = False
  444.         ConstMode.Enabled = True
  445.         ShowExplorer.Enabled = True
  446.         PrintIt.Enabled = True
  447.         SaveBitmap.Enabled = True
  448.         WalkLeft.Enabled = True
  449.         WalkUp.Enabled = True
  450.         WalkDown.Enabled = True
  451.         WalkRight.Enabled = True
  452.         Zoom.Enabled = True
  453.         Walk.Enabled = True
  454.         StartWalking.Enabled = True
  455.         ShowAll.Enabled = True
  456.         
  457.         If prg.ActiveExternalViews And EXT_VIEWS_EXPLORER Then
  458.             ShowExplorer.Value = 1
  459.             Timer_Timer
  460.             Timer.Interval = TIMER_ON
  461.         Else
  462.             ShowExplorer.Value = 0
  463.             Timer.Interval = TIMER_OFF
  464.         End If
  465.     End If
  466. End Sub
  467.