home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 6_2008-2009.ISO / data / zips / AQIL_Vista2144052152009.psc / VIST-FORM / VistaForm.ctl < prev    next >
Text File  |  2009-02-13  |  43KB  |  1,085 lines

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
  3. Begin VB.UserControl VistaForm 
  4.    AutoRedraw      =   -1  'True
  5.    BackColor       =   &H00F0F0F0&
  6.    ClientHeight    =   615
  7.    ClientLeft      =   0
  8.    ClientTop       =   0
  9.    ClientWidth     =   1665
  10.    FillColor       =   &H00FFFFFF&
  11.    BeginProperty Font 
  12.       Name            =   "Segoe UI"
  13.       Size            =   9.75
  14.       Charset         =   0
  15.       Weight          =   400
  16.       Underline       =   0   'False
  17.       Italic          =   0   'False
  18.       Strikethrough   =   0   'False
  19.    EndProperty
  20.    ForeColor       =   &H00FFFFFF&
  21.    ScaleHeight     =   41
  22.    ScaleMode       =   3  'Pixel
  23.    ScaleWidth      =   111
  24.    Begin MSComctlLib.ImageList IMG_Button 
  25.       Left            =   1080
  26.       Top             =   1125
  27.       _ExtentX        =   1005
  28.       _ExtentY        =   1005
  29.       BackColor       =   -2147483643
  30.       ImageWidth      =   28
  31.       ImageHeight     =   15
  32.       MaskColor       =   12632256
  33.       _Version        =   393216
  34.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  35.          NumListImages   =   12
  36.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  37.             Picture         =   "VistaForm.ctx":0000
  38.             Key             =   "Min_Normal"
  39.          EndProperty
  40.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  41.             Picture         =   "VistaForm.ctx":053E
  42.             Key             =   "Max_Normal"
  43.          EndProperty
  44.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  45.             Picture         =   "VistaForm.ctx":0A7C
  46.             Key             =   "Cls_Normal"
  47.          EndProperty
  48.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  49.             Picture         =   "VistaForm.ctx":0FBA
  50.             Key             =   "Min_Hover"
  51.          EndProperty
  52.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  53.             Picture         =   "VistaForm.ctx":14F8
  54.             Key             =   "Max_Hover"
  55.          EndProperty
  56.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  57.             Picture         =   "VistaForm.ctx":1A36
  58.             Key             =   "Cls_Hover"
  59.          EndProperty
  60.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  61.             Picture         =   "VistaForm.ctx":1F74
  62.             Key             =   "Min_Down"
  63.          EndProperty
  64.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  65.             Picture         =   "VistaForm.ctx":24B2
  66.             Key             =   "Max_Down"
  67.          EndProperty
  68.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  69.             Picture         =   "VistaForm.ctx":29F0
  70.             Key             =   "Cls_Down"
  71.          EndProperty
  72.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  73.             Picture         =   "VistaForm.ctx":2F2E
  74.             Key             =   "Min_Disable"
  75.          EndProperty
  76.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  77.             Picture         =   "VistaForm.ctx":346C
  78.             Key             =   "Max_Disable"
  79.          EndProperty
  80.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  81.             Picture         =   "VistaForm.ctx":39AA
  82.             Key             =   "Cls_Disable"
  83.          EndProperty
  84.       EndProperty
  85.    End
  86.    Begin MSComctlLib.ImageList IMG_Disable 
  87.       Left            =   540
  88.       Top             =   1125
  89.       _ExtentX        =   1005
  90.       _ExtentY        =   1005
  91.       BackColor       =   -2147483643
  92.       ImageWidth      =   8
  93.       ImageHeight     =   87
  94.       MaskColor       =   12632256
  95.       _Version        =   393216
  96.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  97.          NumListImages   =   8
  98.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  99.             Picture         =   "VistaForm.ctx":3EE8
  100.             Key             =   "TopLeft"
  101.          EndProperty
  102.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  103.             Picture         =   "VistaForm.ctx":4762
  104.             Key             =   "Left"
  105.          EndProperty
  106.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  107.             Picture         =   "VistaForm.ctx":4874
  108.             Key             =   "BottomLeft"
  109.          EndProperty
  110.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  111.             Picture         =   "VistaForm.ctx":4986
  112.             Key             =   "Top"
  113.          EndProperty
  114.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  115.             Picture         =   "VistaForm.ctx":51B8
  116.             Key             =   "TopRight"
  117.          EndProperty
  118.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  119.             Picture         =   "VistaForm.ctx":5A32
  120.             Key             =   "Right"
  121.          EndProperty
  122.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  123.             Picture         =   "VistaForm.ctx":5B2C
  124.             Key             =   "BottomRight"
  125.          EndProperty
  126.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  127.             Picture         =   "VistaForm.ctx":5C3E
  128.             Key             =   "Bottom"
  129.          EndProperty
  130.       EndProperty
  131.    End
  132.    Begin MSComctlLib.ImageList IMG_Active 
  133.       Left            =   0
  134.       Top             =   1125
  135.       _ExtentX        =   1005
  136.       _ExtentY        =   1005
  137.       BackColor       =   -2147483643
  138.       ImageWidth      =   8
  139.       ImageHeight     =   120
  140.       MaskColor       =   12632256
  141.       _Version        =   393216
  142.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  143.          NumListImages   =   8
  144.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  145.             Picture         =   "VistaForm.ctx":5D70
  146.             Key             =   "TopLeft"
  147.          EndProperty
  148.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  149.             Picture         =   "VistaForm.ctx":6902
  150.             Key             =   "Left"
  151.          EndProperty
  152.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  153.             Picture         =   "VistaForm.ctx":69E4
  154.             Key             =   "BottomLeft"
  155.          EndProperty
  156.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  157.             Picture         =   "VistaForm.ctx":6AF6
  158.             Key             =   "Top"
  159.          EndProperty
  160.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  161.             Picture         =   "VistaForm.ctx":6DE8
  162.             Key             =   "TopRight"
  163.          EndProperty
  164.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  165.             Picture         =   "VistaForm.ctx":797A
  166.             Key             =   "Right"
  167.          EndProperty
  168.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  169.             Picture         =   "VistaForm.ctx":7A8C
  170.             Key             =   "BottomRight"
  171.          EndProperty
  172.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  173.             Picture         =   "VistaForm.ctx":7B9E
  174.             Key             =   "Bottom"
  175.          EndProperty
  176.       EndProperty
  177.    End
  178.    Begin VB.Image iCapt 
  179.       Height          =   135
  180.       Left            =   90
  181.       Top             =   360
  182.       Visible         =   0   'False
  183.       Width           =   150
  184.    End
  185.    Begin VB.Image iConX 
  186.       Height          =   240
  187.       Left            =   120
  188.       Picture         =   "VistaForm.ctx":7CB0
  189.       Top             =   120
  190.       Visible         =   0   'False
  191.       Width           =   240
  192.    End
  193.    Begin VB.Image szBottom 
  194.       Height          =   120
  195.       Left            =   990
  196.       Top             =   360
  197.       Visible         =   0   'False
  198.       Width           =   435
  199.    End
  200.    Begin VB.Image szCorner 
  201.       Height          =   120
  202.       Left            =   1440
  203.       Top             =   360
  204.       Visible         =   0   'False
  205.       Width           =   120
  206.    End
  207.    Begin VB.Image szRight 
  208.       Height          =   240
  209.       Left            =   1440
  210.       Top             =   90
  211.       Visible         =   0   'False
  212.       Width           =   120
  213.    End
  214.    Begin VB.Image iCls 
  215.       Height          =   225
  216.       Left            =   990
  217.       Top             =   90
  218.       Width           =   420
  219.    End
  220.    Begin VB.Image iMax 
  221.       Height          =   225
  222.       Left            =   540
  223.       Top             =   90
  224.       Width           =   420
  225.    End
  226.    Begin VB.Image iMin 
  227.       Height          =   225
  228.       Left            =   90
  229.       Top             =   90
  230.       Width           =   420
  231.    End
  232.    Begin VB.Image iTitleBar 
  233.       Height          =   135
  234.       Left            =   270
  235.       Top             =   360
  236.       Visible         =   0   'False
  237.       Width           =   690
  238.    End
  239. End
  240. Attribute VB_Name = "VistaForm"
  241. Attribute VB_GlobalNameSpace = False
  242. Attribute VB_Creatable = True
  243. Attribute VB_PredeclaredId = False
  244. Attribute VB_Exposed = True
  245. Option Explicit
  246.  
  247. '=====================================Vista-Form v.1=============================================
  248. ' VistaForm ActiveX Control (written on Feb-13-09)
  249. ' Copyright ⌐ 2009 by Wongjava Software. All rights reserved.
  250. ' Author    : Sudarmono-[Comenk]
  251. ' E-Mail    : wongjava_bsi@yahoo.com
  252. ' Notes     : If anyone have a problem when using this ActiveX please mail me.
  253. '             If anyone have an idea to completed this ActiveX please mail me.
  254. '             and I'am sorry for my English...
  255. '
  256. ' Not Complete Yet  : 1. When Maximize I can't show the taskbar.
  257. '                     2. I Can't make simple hook for known Parent Form is Active/UnActive
  258. '================================================================================================
  259. '\\API DECLARATION
  260. '================================================================================================
  261. Private Declare Function SetRect Lib "User32.dll" (ByRef lpRect As RECT, ByVal X1 As Long, _
  262.                 ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  263. Private Declare Function OffsetRect Lib "User32.dll" (ByRef lpRect As RECT, _
  264.                 ByVal X As Long, ByVal Y As Long) As Long
  265. Private Declare Function CopyRect Lib "User32.dll" (ByRef lpDestRect As RECT, _
  266.                 ByRef lpSourceRect As RECT) As Long
  267. Private Declare Function CombineRgn Lib "gdi32.dll" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _
  268.                 ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  269. Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
  270. Private Declare Function SetWindowRgn Lib "User32.dll" (ByVal hWnd As Long, ByVal hRgn As Long, _
  271.                 ByVal bRedraw As Boolean) As Long
  272. Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, _
  273.                 ByVal X2 As Long, ByVal Y2 As Long) As Long
  274. Private Declare Function CreateRoundRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, _
  275.                 ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
  276. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
  277.                 ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  278. Private Declare Sub ReleaseCapture Lib "user32" ()
  279. Private Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" _
  280.                 (ByRef lpVersionInformation As OSVERSIONINFO) As Long
  281. Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hDC As Long, ByVal crColor As Long) As Long
  282. Private Declare Function DrawText Lib "User32.dll" Alias "DrawTextA" (ByVal hDC As Long, _
  283.                 ByVal lpStr As String, ByVal nCount As Long, ByRef lpRect As RECT, _
  284.                 ByVal wFormat As Long) As Long
  285. Private Declare Function DrawTextW Lib "User32.dll" (ByVal hDC As Long, ByVal lpStr As Long, _
  286.                 ByVal nCount As Long, ByRef lpRect As RECT, ByVal wFormat As Long) As Long
  287. '================================================================================================
  288. '\\TYPE, CONST AND ENUM DECLARATION
  289. '================================================================================================
  290. Private Const DT_CALCRECT               As Long = &H400
  291. Private Const DT_CENTER                 As Long = &H1
  292. Private Const DT_NOCLIP                 As Long = &H100
  293. Private Const DT_WORDBREAK              As Long = &H10
  294. Private Const DT_CALCFLAG               As Long = DT_WORDBREAK Or DT_CALCRECT Or DT_NOCLIP Or DT_CENTER
  295. Private Const DT_DRAWFLAG               As Long = DT_WORDBREAK Or DT_NOCLIP Or DT_CENTER
  296. Private Const VER_PLATFORM_WIN32_NT     As Long = 2
  297. Private Const RGN_OR                    As Long = 2
  298. Private Const RGN_AND                   As Long = 1
  299. Private Const RGN_XOR                   As Long = 3
  300. Private Const WM_NCLBUTTONDOWN = &HA1
  301. Private Const HTCAPTION = 2
  302.  
  303. Private Type RECT
  304.     Left As Long
  305.     Top As Long
  306.     Right As Long
  307.     Bottom As Long
  308. End Type
  309.  
  310. Private Type OSVERSIONINFO
  311.     dwOSVersionInfoSize As Long
  312.     dwMajorVersion      As Long
  313.     dwMinorVersion      As Long
  314.     dwBuildNumber       As Long
  315.     dwPlatformId        As Long
  316.     szCSDVersion        As String * 128
  317. End Type
  318.  
  319. Private Enum aqUC_State
  320.     stNormal = 0
  321.     stHover = 1
  322.     stDown = 2
  323.     stDisable = 3
  324. End Enum
  325.  
  326. Enum aqUC_BldStyle
  327.     bsFixedSingle = 0
  328.     bsSizeable = 1
  329. End Enum
  330.  
  331. Enum aqUC_WinState
  332.     wsNormal = 0
  333.     wsMinimized = 1
  334.     wsMaximized = 2
  335. End Enum
  336.  
  337. Private Type UC_Setting
  338.     FirstInit   As Boolean
  339.     CaptRect    As RECT
  340.     PrntActive  As Boolean
  341.     State       As aqUC_WinState
  342.     WiNT        As Boolean
  343. End Type
  344.  
  345. Private Type UC_Properties
  346.     BackColor   As OLE_COLOR
  347.     BolderStyle As aqUC_BldStyle
  348.     Caption     As String
  349.     ControlBox  As Boolean
  350.     Font        As StdFont
  351.     ForeColor   As OLE_COLOR
  352.     Icon        As StdPicture
  353.     MDIChild    As Boolean
  354.     MinButton   As Boolean
  355.     MaxButton   As Boolean
  356.     Moveable    As Boolean
  357.     ShowInTask  As Boolean
  358.     WinState    As aqUC_WinState
  359. End Type
  360.  
  361. Private Type UC_FormPictButton
  362.     Min_Normal  As StdPicture
  363.     Min_Hover   As StdPicture
  364.     Min_Down    As StdPicture
  365.     Min_Disable As StdPicture
  366.     Max_Normal  As StdPicture
  367.     Max_Hover   As StdPicture
  368.     Max_Down    As StdPicture
  369.     Max_Disable As StdPicture
  370.     Cls_Normal  As StdPicture
  371.     Cls_Hover   As StdPicture
  372.     Cls_Down    As StdPicture
  373.     Cls_Disable As StdPicture
  374. End Type
  375.  
  376. Private Type UC_FormPictActive
  377.     TopLeft     As StdPicture
  378.     Top         As StdPicture
  379.     TopRight    As StdPicture
  380.     Left        As StdPicture
  381.     Right       As StdPicture
  382.     BottomLeft  As StdPicture
  383.     Bottom      As StdPicture
  384.     BottomRight As StdPicture
  385. End Type
  386.  
  387. Private Type UC_FormPictDisable
  388.     TopLeft     As StdPicture
  389.     Top         As StdPicture
  390.     TopRight    As StdPicture
  391.     Left        As StdPicture
  392.     Right       As StdPicture
  393.     BottomLeft  As StdPicture
  394.     Bottom      As StdPicture
  395.     BottomRight As StdPicture
  396. End Type
  397. '================================================================================================
  398. '\\LOCAL DECLARATION
  399. '================================================================================================
  400. Private m_pictbutton    As UC_FormPictButton
  401. Private m_pictactive    As UC_FormPictActive
  402. Private m_pictdisable   As UC_FormPictDisable
  403. Private m_setting       As UC_Setting
  404. Private m_property      As UC_Properties
  405.  
  406. Private Sub iCls_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  407.     If (Not m_property.ControlBox) Or (Not m_setting.PrntActive) Then Exit Sub
  408.     Call DrawUC_Button(True, 2, stDown)
  409. End Sub
  410.  
  411. Private Sub iCls_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  412.     If (Not m_property.ControlBox) Or (Not m_setting.PrntActive) Then Exit Sub
  413.     If (m_property.MinButton) Then Call DrawUC_Button(True, 0, stNormal)
  414.     If (m_property.MaxButton) Then Call DrawUC_Button(True, 1, stNormal)
  415.     Call DrawUC_Button(True, 2, stHover)
  416. End Sub
  417.  
  418. Private Sub iCls_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  419.     If (Not m_property.ControlBox) Or (Not m_setting.PrntActive) Then Exit Sub
  420.     
  421.     Unload UserControl.Parent
  422. End Sub
  423.  
  424. Private Sub iMax_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  425.     If (Not m_property.MaxButton) Or (Not m_setting.PrntActive) Then Exit Sub
  426.     Call DrawUC_Button(True, 1, stDown)
  427. End Sub
  428.  
  429. Private Sub iMax_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  430.     If (Not m_property.MaxButton) Or (Not m_setting.PrntActive) Then Exit Sub
  431.     If (m_property.MinButton) Then Call DrawUC_Button(True, 0, stNormal)
  432.     If (m_property.ControlBox) Then Call DrawUC_Button(True, 2, stNormal)
  433.     Call DrawUC_Button(True, 1, stHover)
  434. End Sub
  435.  
  436. Private Sub iMax_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  437.     If (Not m_property.MaxButton) Or (Not m_setting.PrntActive) Then Exit Sub
  438.     
  439.     If (Button = 1) Then
  440.         If (Not m_setting.State = wsMaximized) Then
  441.             UserControl.Parent.WindowState = vbMaximized
  442.             m_setting.State = wsMaximized
  443.         Else
  444.             UserControl.Parent.WindowState = vbNormal
  445.             m_setting.State = wsNormal
  446.         End If
  447.         Call DrawUC_Active
  448.     End If
  449. End Sub
  450.  
  451. Private Sub iMin_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  452.     If (Not m_property.MinButton) Or (Not m_setting.PrntActive) Then Exit Sub
  453.     Call DrawUC_Button(True, 0, stDown)
  454. End Sub
  455.  
  456. Private Sub iMin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  457.     If (Not m_property.MinButton) Or (Not m_setting.PrntActive) Then Exit Sub
  458.     If (m_property.MaxButton) Then Call DrawUC_Button(True, 1, stNormal)
  459.     If (m_property.ControlBox) Then Call DrawUC_Button(True, 2, stNormal)
  460.     Call DrawUC_Button(True, 0, stHover)
  461. End Sub
  462.  
  463. Public Property Get BackColor() As OLE_COLOR
  464.     BackColor = m_property.BackColor
  465. End Property
  466. Public Property Let BackColor(ByVal nValue As OLE_COLOR)
  467.     m_property.BackColor = nValue
  468.     
  469.     PropertyChanged "BackColor"
  470. End Property
  471. Public Property Get BorderStyle() As aqUC_BldStyle
  472.     BorderStyle = m_property.BolderStyle
  473. End Property
  474. Public Property Let BorderStyle(ByVal nValue As aqUC_BldStyle)
  475.     m_property.BolderStyle = nValue
  476.     
  477.     If (m_property.BolderStyle = bsFixedSingle) Then
  478.         m_property.MinButton = False
  479.         m_property.MaxButton = False
  480.     Else
  481.         m_property.MinButton = True
  482.         m_property.MaxButton = True
  483.     End If
  484.     
  485.     If (Not Ambient.UserMode) Then
  486.         Call DrawUC_IDE
  487.     End If
  488.     
  489.     PropertyChanged "MinButton"
  490.     PropertyChanged "MaxButton"
  491.     PropertyChanged "BorderStyle"
  492. End Property
  493. Public Property Get Caption() As String
  494.     Caption = m_property.Caption
  495. End Property
  496. Public Property Let Caption(ByVal nValue As String)
  497.     m_property.Caption = nValue
  498.     
  499.     If (Not Ambient.UserMode) Then DrawUC_IDE
  500.     UserControl.Parent.Caption = nValue
  501.     
  502.     PropertyChanged "Caption"
  503. End Property
  504. Public Property Get ControlBox() As Boolean
  505.     ControlBox = m_property.ControlBox
  506. End Property
  507. Public Property Let ControlBox(ByVal nValue As Boolean)
  508.     m_property.ControlBox = nValue
  509.     
  510.     PropertyChanged "ControlBox"
  511. End Property
  512. Public Property Get Font() As StdFont
  513.     Set Font = m_property.Font
  514. End Property
  515. Public Property Set Font(ByVal nValue As StdFont)
  516.     Set m_property.Font = nValue
  517.     Set UserControl.Font = nValue
  518.     If (Not Ambient.UserMode) Then
  519.         DrawUC_IDE
  520.     End If
  521.     PropertyChanged "Font"
  522. End Property
  523. Public Property Get ForeColor() As OLE_COLOR
  524.     ForeColor = m_property.ForeColor
  525. End Property
  526. Public Property Let ForeColor(ByVal nValue As OLE_COLOR)
  527.     m_property.ForeColor = nValue
  528.     If (Not Ambient.UserMode) Then
  529.         DrawUC_IDE
  530.     End If
  531.     PropertyChanged "ForeColor"
  532. End Property
  533. Public Property Get Icon() As StdPicture
  534.     Set Icon = m_property.Icon
  535. End Property
  536. Public Property Set Icon(ByVal nValue As StdPicture)
  537.     Set m_property.Icon = nValue
  538.     
  539.     Set iConX.Picture = nValue
  540.     If (Not Ambient.UserMode) Then
  541.         DrawUC_IDE
  542.     End If
  543.     
  544.     PropertyChanged "Icon"
  545. End Property
  546. Public Property Get MaxButton() As Boolean
  547.     MaxButton = m_property.MaxButton
  548. End Property
  549. Public Property Let MaxButton(ByVal nValue As Boolean)
  550.     m_property.MaxButton = nValue
  551.     
  552.     If (Not m_property.MaxButton) And (Not m_property.MinButton) Then
  553.         m_property.BolderStyle = bsFixedSingle
  554.     Else
  555.         m_property.BolderStyle = bsSizeable
  556.     End If
  557.     
  558.     If (Not Ambient.UserMode) Then
  559.         Call DrawUC_IDE
  560.     End If
  561.     
  562.     PropertyChanged "BorderStyle"
  563.     PropertyChanged "MaxButton"
  564. End Property
  565. Public Property Get MinButton() As Boolean
  566.     MinButton = m_property.MinButton
  567. End Property
  568. Public Property Let MinButton(ByVal nValue As Boolean)
  569.     m_property.MinButton = nValue
  570.     
  571.     If (Not m_property.MaxButton) And (Not m_property.MinButton) Then
  572.         m_property.BolderStyle = bsFixedSingle
  573.     Else
  574.         m_property.BolderStyle = bsSizeable
  575.     End If
  576.     
  577.     If (Not Ambient.UserMode) Then
  578.         Call DrawUC_IDE
  579.     End If
  580.     
  581.     PropertyChanged "BorderStyle"
  582.     PropertyChanged "MinButton"
  583. End Property
  584. Public Property Get MDIChild() As Boolean
  585.     MDIChild = m_property.MDIChild
  586. End Property
  587. Public Property Get Moveable() As Boolean
  588.     Moveable = m_property.Moveable
  589. End Property
  590. Public Property Let Moveable(ByVal nValue As Boolean)
  591.     m_property.Moveable = nValue
  592.     
  593.     PropertyChanged "Moveable"
  594. End Property
  595. Public Property Get WinState() As aqUC_WinState
  596.     WinState = m_property.WinState
  597. End Property
  598. Public Property Let WinState(ByVal nValue As aqUC_WinState)
  599.     m_property.WinState = nValue
  600.     
  601.     PropertyChanged "WinState"
  602. End Property
  603. Friend Property Get hWnd() As Long
  604.     hWnd = UserControl.hWnd
  605. End Property
  606. Friend Property Get hDC() As Long
  607.     hDC = UserControl.hDC
  608. End Property
  609. Friend Function ReFresh()
  610.     UserControl.ReFresh
  611.     UserControl.Parent.ReFresh
  612. End Function
  613. Friend Property Get ParenthWnd() As Long
  614.     ParenthWnd = UserControl.Parent.hWnd
  615. End Property
  616. Private Sub iMin_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  617.     If (Not m_property.MinButton) Or (Not m_setting.PrntActive) Then Exit Sub
  618.     
  619.     If (Button = 1) Then
  620.         If (Not m_setting.State = wsMinimized) Then
  621.             UserControl.Parent.WindowState = vbMinimized
  622.             m_setting.State = wsMinimized
  623.         Else
  624.             UserControl.Parent.WindowState = vbNormal
  625.             m_setting.State = wsNormal
  626.         End If
  627.         Call DrawUC_Active
  628.     End If
  629. End Sub
  630.  
  631. Private Sub iTitleBar_DblClick()
  632.     If (m_property.MaxButton) Then
  633.         Call iMax_MouseUp(vbLeftButton, 0, 0, 0)
  634.     End If
  635. End Sub
  636.  
  637. Private Sub iTitleBar_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  638.     If (m_setting.State = wsMaximized) Then Exit Sub
  639.     If (Not m_property.Moveable) Then Exit Sub
  640.     
  641.     If (Button = 1) Then
  642.         Call ReleaseCapture
  643.         Call SendMessage(Me.ParenthWnd, WM_NCLBUTTONDOWN, HTCAPTION, &O0)
  644.     End If
  645. End Sub
  646.  
  647. Private Sub iTitleBar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  648.     Call UserControl_MouseMove(Button, Shift, X, Y)
  649. End Sub
  650.  
  651. Private Sub szBottom_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  652.     If (Not m_property.BolderStyle = bsSizeable) Or (Not m_setting.PrntActive) Then Exit Sub
  653.     
  654.     szBottom.MousePointer = 7
  655.     
  656.     If (Button = 1) Then
  657.         With UserControl.Parent
  658.             If (.Height + Y) > 525 Then
  659.                 .Height = .Height + Y
  660.             End If
  661.         End With
  662.         
  663.         Call DrawUC_Active
  664.     End If
  665. End Sub
  666. Private Sub szCorner_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  667.     If (Not m_property.BolderStyle = bsSizeable) Or (Not m_setting.PrntActive) Then Exit Sub
  668.     
  669.     szCorner.MousePointer = 8
  670.     
  671.     If (Button = 1) Then
  672.         With UserControl.Parent
  673.             
  674.             If (.Height + Y) > 525 Then
  675.                 .Height = .Height + Y
  676.             End If
  677.             
  678.             If (.Width + X) > 1830 + (TextWidth(m_property.Caption) * 15) Then
  679.                 .Width = .Width + X
  680.             End If
  681.         End With
  682.         
  683.         Call DrawUC_Active
  684.     End If
  685. End Sub
  686.  
  687. Private Sub szRight_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  688.     If (Not m_property.BolderStyle = bsSizeable) Or (Not m_setting.PrntActive) Then Exit Sub
  689.     
  690.     szRight.MousePointer = 9
  691.     If (Button = 1) Then
  692.         With UserControl.Parent
  693.             If (.Width + X) > 1830 + (TextWidth(m_property.Caption) * 15) Then
  694.                 .Width = .Width + X
  695.             End If
  696.         End With
  697.         
  698.         Call DrawUC_Active
  699.     End If
  700. End Sub
  701.  
  702. Private Sub UserControl_InitProperties()
  703.     With m_property
  704.         .BackColor = &HF0F0F0
  705.         .BolderStyle = bsSizeable
  706.         .Caption = Ambient.DisplayName
  707.         .ControlBox = UserControl.Parent.ControlBox
  708.     Set .Font = Ambient.Font
  709.         .ForeColor = Ambient.ForeColor
  710.     Set .Icon = Nothing
  711.         .MaxButton = UserControl.Parent.MaxButton
  712.         .MDIChild = UserControl.Parent.MDIChild
  713.         .MinButton = UserControl.Parent.MinButton
  714.         .Moveable = UserControl.Parent.Moveable
  715.         .WinState = wsNormal
  716.     End With
  717.     
  718.     m_setting.FirstInit = True
  719. End Sub
  720.  
  721. Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  722.     If (m_property.MinButton) Then Call DrawUC_Button(True, 0, stNormal)
  723.     If (m_property.MaxButton) Then Call DrawUC_Button(True, 1, stNormal)
  724.     If (m_property.ControlBox) Then Call DrawUC_Button(True, 2, stNormal)
  725. End Sub
  726. Private Sub UserControl_Initialize()
  727.     m_setting.WiNT = IsPlatformNT()
  728.     With m_pictbutton
  729.         Set .Cls_Disable = IMG_Button.ListImages("Cls_Disable").Picture
  730.         Set .Cls_Down = IMG_Button.ListImages("Cls_Down").Picture
  731.         Set .Cls_Hover = IMG_Button.ListImages("Cls_Hover").Picture
  732.         Set .Cls_Normal = IMG_Button.ListImages("Cls_Normal").Picture
  733.         Set .Max_Disable = IMG_Button.ListImages("Max_Disable").Picture
  734.         Set .Max_Down = IMG_Button.ListImages("Max_Down").Picture
  735.         Set .Max_Hover = IMG_Button.ListImages("Max_Hover").Picture
  736.         Set .Max_Normal = IMG_Button.ListImages("Max_Normal").Picture
  737.         Set .Min_Disable = IMG_Button.ListImages("Min_Disable").Picture
  738.         Set .Min_Down = IMG_Button.ListImages("Min_Down").Picture
  739.         Set .Min_Hover = IMG_Button.ListImages("Min_Hover").Picture
  740.         Set .Min_Normal = IMG_Button.ListImages("Min_Normal").Picture
  741.     End With
  742.     
  743.     With m_pictactive
  744.         Set .Bottom = IMG_Active.ListImages("Bottom").Picture
  745.         Set .BottomLeft = IMG_Active.ListImages("BottomLeft").Picture
  746.         Set .BottomRight = IMG_Active.ListImages("BottomRight").Picture
  747.         Set .Left = IMG_Active.ListImages("Left").Picture
  748.         Set .Right = IMG_Active.ListImages("Right").Picture
  749.         Set .Top = IMG_Active.ListImages("Top").Picture
  750.         Set .TopLeft = IMG_Active.ListImages("TopLeft").Picture
  751.         Set .TopRight = IMG_Active.ListImages("TopRight").Picture
  752.     End With
  753.     
  754.     With m_pictdisable
  755.         Set .Bottom = IMG_Disable.ListImages("Bottom").Picture
  756.         Set .BottomLeft = IMG_Disable.ListImages("BottomLeft").Picture
  757.         Set .BottomRight = IMG_Disable.ListImages("BottomRight").Picture
  758.         Set .Left = IMG_Disable.ListImages("Left").Picture
  759.         Set .Right = IMG_Disable.ListImages("Right").Picture
  760.         Set .Top = IMG_Disable.ListImages("Top").Picture
  761.         Set .TopLeft = IMG_Disable.ListImages("TopLeft").Picture
  762.         Set .TopRight = IMG_Disable.ListImages("TopRight").Picture
  763.     End With
  764. End Sub
  765. Private Sub DrawUC_Caption(ByVal Color As Long, Optional pShadow As Boolean = False)
  766.     Dim tx      As String
  767.     Dim tn      As Long
  768.     Dim rc      As RECT
  769.     
  770.     tx = m_property.Caption
  771.     tn = Len(tx)
  772.     
  773.     If (tn = 0) Then Exit Sub
  774.     
  775.     Call SetRect(rc, 0, 0, TextWidth(m_property.Caption), TextHeight(m_property.Caption))
  776.     Call OffsetRect(rc, IIf((Not m_property.Icon Is Nothing), iConX.Left + iConX.Width + 5, 9), ((28 - rc.Bottom) / 2) + 3)
  777.     Call CopyRect(m_setting.CaptRect, rc)
  778.     
  779.     If (pShadow) Then
  780.         Call SetTextColor(Me.hDC, vbGrayed)
  781.         
  782.         If (m_setting.WiNT) Then
  783.             Call DrawTextW(Me.hDC, StrPtr(tx), tn, m_setting.CaptRect, DT_DRAWFLAG)
  784.         Else
  785.             Call DrawText(Me.hDC, tx, tn, m_setting.CaptRect, DT_DRAWFLAG)
  786.         End If
  787.         
  788.         Call OffsetRect(rc, -1, -1)
  789.         Call CopyRect(m_setting.CaptRect, rc)
  790.         
  791.         Call SetTextColor(Me.hDC, Color)
  792.         
  793.         If (m_setting.WiNT) Then
  794.             Call DrawTextW(Me.hDC, StrPtr(tx), tn, m_setting.CaptRect, DT_DRAWFLAG)
  795.         Else
  796.             Call DrawText(Me.hDC, tx, tn, m_setting.CaptRect, DT_DRAWFLAG)
  797.         End If
  798.     Else
  799.         Call OffsetRect(rc, -1, -1)
  800.         Call CopyRect(m_setting.CaptRect, rc)
  801.         
  802.         Call SetTextColor(Me.hDC, Color)
  803.         
  804.         If (m_setting.WiNT) Then
  805.             Call DrawTextW(Me.hDC, StrPtr(tx), tn, m_setting.CaptRect, DT_DRAWFLAG)
  806.         Else
  807.             Call DrawText(Me.hDC, tx, tn, m_setting.CaptRect, DT_DRAWFLAG)
  808.         End If
  809.     End If
  810. End Sub
  811. Private Sub DrawUC_Region(Optional EllipseW As Integer = 9, Optional EllipseH As Integer = 9)
  812.     Dim hRgn    As Long
  813.     Dim hRgn2   As Long
  814.     Dim hRgn3   As Long
  815.     
  816.     If (m_setting.State = wsNormal) Or (m_setting.State = wsMaximized) Then
  817.         With UserControl
  818.             hRgn = CreateRoundRectRgn(0, 0, .ScaleWidth + 1, .ScaleHeight, EllipseW, EllipseH)
  819.             hRgn2 = CreateRectRgn(0, 9, .ScaleWidth, .ScaleHeight)
  820.             hRgn3 = CreateRectRgn(8, 28, .ScaleWidth - 8, .ScaleHeight - 8)
  821.         End With
  822.         
  823.         Call CombineRgn(hRgn, hRgn, hRgn2, RGN_OR)
  824.         Call DeleteObject(hRgn2)
  825.         
  826.         Call CombineRgn(hRgn, hRgn, hRgn3, RGN_XOR)
  827.         Call DeleteObject(hRgn3)
  828.     End If
  829.     
  830.     Call SetWindowRgn(Me.hWnd, hRgn, True)
  831.     Call DeleteObject(hRgn)
  832.     
  833.     Call DrawPR_Region
  834. End Sub
  835. Private Sub DrawPR_Region(Optional EllipseW As Integer = 9, Optional EllipseH As Integer = 9)
  836.     Dim hRgn    As Long
  837.     Dim hRgn2   As Long
  838.     
  839.     If (m_setting.State = wsNormal) Then
  840.         With UserControl.Parent
  841.             hRgn = CreateRoundRectRgn(0, 0, .ScaleX(.Width, 1, 3) + 1, .ScaleY(.Height, 1, 3), EllipseW, EllipseH)
  842.             hRgn2 = CreateRectRgn(0, 9, ScaleX(.Width, 1, 3), .ScaleY(.Height, 1, 3))
  843.         End With
  844.         
  845.         Call CombineRgn(hRgn, hRgn, hRgn2, RGN_OR)
  846.         Call DeleteObject(hRgn2)
  847.     ElseIf (m_setting.State = wsNormal) Then
  848.         With UserControl.Parent
  849.             hRgn = CreateRectRgn(0, 0, ScaleX(.Width, 1, 3), .ScaleY(.Height, 1, 3))
  850.         End With
  851.     End If
  852.     Call SetWindowRgn(Me.ParenthWnd, hRgn, True)
  853.     Call DeleteObject(hRgn)
  854. End Sub
  855. Private Function IsPlatformNT() As Boolean
  856.     Dim OSINFO As OSVERSIONINFO
  857.         OSINFO.dwOSVersionInfoSize = Len(OSINFO)
  858.         
  859.     If (GetVersionEx(OSINFO)) Then
  860.         IsPlatformNT = (OSINFO.dwPlatformId = VER_PLATFORM_WIN32_NT)
  861.     End If
  862. End Function
  863. Private Sub DrawUC_Active(Optional pState As aqUC_State = stNormal, Optional pForceBtn As Boolean = True)
  864.     With UserControl
  865.         .Height = IIf((m_setting.State = wsNormal) Or (m_setting.State = wsMaximized), .Parent.Height, 0) 'IIf((m_setting.State = wsNormal), .Parent.Height, IIf((m_setting.State = wsMaximized), 420, 0))
  866.         .Width = .Parent.Width
  867.         
  868.         .Cls
  869.         If (m_setting.State = wsNormal) Or (m_setting.State = wsMaximized) Then
  870.             If (.ScaleHeight > 38) Then
  871.                 .PaintPicture m_pictactive.Left, 0, 30, , .ScaleHeight - 38
  872.                 .PaintPicture m_pictactive.Right, .ScaleWidth - 8, 30, , .ScaleHeight - 38
  873.             End If
  874.             .PaintPicture m_pictactive.TopLeft, 0, 0
  875.             .PaintPicture m_pictactive.TopRight, .ScaleWidth - 8, 0
  876.             .PaintPicture m_pictactive.Top, 8, 0, .ScaleWidth - 16
  877.             .PaintPicture m_pictactive.BottomLeft, 0, .ScaleHeight - 8
  878.             .PaintPicture m_pictactive.BottomRight, .ScaleWidth - 8, .ScaleHeight - 8
  879.             .PaintPicture m_pictactive.Bottom, 8, .ScaleHeight - 8, .ScaleWidth - 16
  880.             If (Not m_property.Icon Is Nothing) Then .PaintPicture m_property.Icon, 8, 8: iConX.Left = 8
  881.         End If
  882.     End With
  883.     Call DrawUC_Caption(m_property.ForeColor)
  884.     Call DrawUC_Button
  885.     Me.ReFresh
  886.     Call DrawUC_Region
  887. End Sub
  888. Private Sub DrawUC_Disable(Optional pState As aqUC_State = stDisable)
  889.     With UserControl
  890.         .Cls
  891.         .PaintPicture m_pictdisable.Left, 0, 30, , .ScaleHeight - 38
  892.         .PaintPicture m_pictdisable.Right, .ScaleWidth - 8, 30, , .ScaleHeight - 38
  893.         .PaintPicture m_pictdisable.TopLeft, 0, 0
  894.         .PaintPicture m_pictdisable.TopRight, .ScaleWidth - 8, 0
  895.         .PaintPicture m_pictdisable.Top, 8, 0, .ScaleWidth - 16
  896.         .PaintPicture m_pictdisable.BottomLeft, 0, .ScaleHeight - 8
  897.         .PaintPicture m_pictdisable.BottomRight, .ScaleWidth - 8, .ScaleHeight - 8
  898.         .PaintPicture m_pictdisable.Bottom, 8, .ScaleHeight - 8, .ScaleWidth - 16
  899.     End With
  900.     Call DrawUC_Button(True, 0, stDisable)
  901.     Me.ReFresh
  902.     Call DrawUC_Region
  903. End Sub
  904. Private Sub DrawUC_IDE()
  905.     With UserControl
  906.         .Cls
  907.         .PaintPicture m_pictdisable.TopLeft, 0, 0
  908.         .PaintPicture m_pictdisable.TopRight, .ScaleWidth - 8, 0
  909.         .PaintPicture m_pictdisable.Top, 8, 0, .ScaleWidth - 16
  910.         If (Not m_property.Icon Is Nothing) Then .PaintPicture m_property.Icon, 8, 8
  911.     End With
  912.     Call DrawUC_Caption(m_property.ForeColor)
  913.     Call DrawUC_Button
  914. End Sub
  915. Private Sub DrawUC_Button(Optional pAmbient As Boolean = False, Optional pBtn As Integer = 0, _
  916. Optional pBtnState As aqUC_State = stNormal)
  917.     Select Case pAmbient
  918.         Case True
  919.             With UserControl
  920.                 If (m_property.ControlBox) Then
  921.                     If (pBtnState = stDisable) And (Not m_setting.PrntActive) Then
  922.                         If (m_property.MinButton) Then .PaintPicture m_pictbutton.Min_Disable, iMin.Left, iMin.Top
  923.                         If (m_property.MaxButton) Then .PaintPicture m_pictbutton.Max_Disable, iMax.Left, iMax.Top
  924.                         .PaintPicture m_pictbutton.Cls_Disable, iCls.Left, iCls.Top
  925.                         
  926.                     ElseIf (pBtnState = stDisable) And (m_setting.PrntActive) Then
  927.                         If (pBtn = 0) Then '\\Min
  928.                             .PaintPicture m_pictbutton.Min_Disable, iMin.Left, iMin.Top
  929.                         ElseIf (pBtn = 1) Then '\\Max
  930.                             .PaintPicture m_pictbutton.Max_Disable, iMax.Left, iMax.Top
  931.                         ElseIf (pBtn = 2) Then '\\Cls
  932.                             .PaintPicture m_pictbutton.Cls_Disable, iCls.Left, iCls.Top
  933.                         End If
  934.                         
  935.                     ElseIf (pBtnState = stDown) And (m_setting.PrntActive) Then
  936.                         If (pBtn = 0) Then '\\Min
  937.                             .PaintPicture m_pictbutton.Min_Down, iMin.Left, iMin.Top
  938.                         ElseIf (pBtn = 1) Then '\\Max
  939.                             .PaintPicture m_pictbutton.Max_Down, iMax.Left, iMax.Top
  940.                         ElseIf (pBtn = 2) Then '\\Cls
  941.                             .PaintPicture m_pictbutton.Cls_Down, iCls.Left, iCls.Top
  942.                         End If
  943.                         
  944.                     ElseIf (pBtnState = stHover) And (m_setting.PrntActive) Then
  945.                         If (pBtn = 0) Then '\\Min
  946.                             .PaintPicture m_pictbutton.Min_Hover, iMin.Left, iMin.Top
  947.                         ElseIf (pBtn = 1) Then '\\Max
  948.                             .PaintPicture m_pictbutton.Max_Hover, iMax.Left, iMax.Top
  949.                         ElseIf (pBtn = 2) Then '\\Cls
  950.                             .PaintPicture m_pictbutton.Cls_Hover, iCls.Left, iCls.Top
  951.                         End If
  952.                         
  953.                     ElseIf (pBtnState = stNormal) And (m_setting.PrntActive) Then
  954.                         If (pBtn = 0) Then '\\Min
  955.                             .PaintPicture m_pictbutton.Min_Normal, iMin.Left, iMin.Top
  956.                         ElseIf (pBtn = 1) Then '\\Max
  957.                             .PaintPicture m_pictbutton.Max_Normal, iMax.Left, iMax.Top
  958.                         ElseIf (pBtn = 2) Then '\\Cls
  959.                             .PaintPicture m_pictbutton.Cls_Normal, iCls.Left, iCls.Top
  960.                         End If
  961.                     End If
  962.                 End If
  963.             End With
  964.             
  965.         Case False
  966.             With UserControl
  967.                 If (m_property.ControlBox) Then
  968.                     If (m_property.BolderStyle = bsSizeable) Then
  969.                         If (m_property.MinButton) Then .PaintPicture m_pictbutton.Min_Normal, iMin.Left, iMin.Top _
  970.                         Else .PaintPicture m_pictbutton.Min_Disable, iMin.Left, iMin.Top
  971.                         
  972.                         If (m_property.MaxButton) Then .PaintPicture m_pictbutton.Max_Normal, iMax.Left, iMax.Top _
  973.                         Else .PaintPicture m_pictbutton.Max_Disable, iMax.Left, iMax.Top
  974.                     End If
  975.                     
  976.                     .PaintPicture m_pictbutton.Cls_Normal, iCls.Left, iCls.Top
  977.                 End If
  978.             End With
  979.             
  980.     End Select
  981. End Sub
  982.  
  983. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  984.     With PropBag
  985.         m_property.BackColor = .ReadProperty("BackColor", &HF0F0F0)
  986.         m_property.BolderStyle = .ReadProperty("BorderStyle", bsSizeable)
  987.         m_property.Caption = .ReadProperty("Caption", Ambient.DisplayName)
  988.         m_property.ControlBox = .ReadProperty("ControlBox", True)
  989.     Set m_property.Font = .ReadProperty("Font", Ambient.Font)
  990.         m_property.ForeColor = .ReadProperty("ForeColor", Ambient.ForeColor)
  991.     Set m_property.Icon = .ReadProperty("Icon", Nothing)
  992.         m_property.MaxButton = .ReadProperty("MaxButton", True)
  993.         m_property.MDIChild = .ReadProperty("MDIChild", False)
  994.         m_property.MinButton = .ReadProperty("MinButton", True)
  995.         m_property.Moveable = .ReadProperty("Moveable", True)
  996.         m_property.WinState = .ReadProperty("WinState", wsNormal)
  997.     End With
  998.     
  999.     With UserControl
  1000.     Set .Font = m_property.Font
  1001.         .ForeColor = m_property.ForeColor
  1002.         .Parent.Caption = m_property.Caption
  1003.     End With
  1004.     
  1005.     iMin.Top = 9
  1006.     iMax.Top = 9
  1007.     iCls.Top = 9
  1008.     If (Not m_property.Icon Is Nothing) Then Set iConX.Picture = m_property.Icon
  1009.     iMin.Visible = IIf((m_property.ControlBox), IIf(((m_property.MinButton) Or (m_property.MaxButton)), True, False), False)
  1010.     iMax.Visible = IIf((m_property.ControlBox), IIf(((m_property.MinButton) Or (m_property.MaxButton)), True, False), False)
  1011.     iCls.Visible = IIf((m_property.ControlBox), True, False)
  1012.     
  1013.     If (Not Ambient.UserMode) Then
  1014.         DrawUC_IDE
  1015.     End If
  1016. End Sub
  1017. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  1018.     With PropBag
  1019.         .WriteProperty "BackColor", m_property.BackColor, &HF0F0F0
  1020.         .WriteProperty "BorderStyle", m_property.BolderStyle, bsSizeable
  1021.         .WriteProperty "Caption", m_property.Caption, Ambient.DisplayName
  1022.         .WriteProperty "ControlBox", m_property.ControlBox, True
  1023.         .WriteProperty "Font", m_property.Font, Ambient.Font
  1024.         .WriteProperty "ForeColor", m_property.ForeColor, Ambient.ForeColor
  1025.         .WriteProperty "Icon", m_property.Icon, Nothing
  1026.         .WriteProperty "MaxButton", m_property.MaxButton, True
  1027.         .WriteProperty "MDIChild", m_property.MDIChild, False
  1028.         .WriteProperty "MinButton", m_property.MinButton, True
  1029.         .WriteProperty "Moveable", m_property.Moveable, True
  1030.         .WriteProperty "WinState", m_property.WinState, wsNormal
  1031.     End With
  1032. End Sub
  1033. Private Sub UserControl_Resize()
  1034.     If (Not m_setting.State = wsMinimized) Then
  1035.         iMin.Left = UserControl.ScaleWidth - 95
  1036.         iMax.Left = iMin.Left + 29
  1037.         iCls.Left = iMax.Left + 29
  1038.         
  1039.         szBottom.Visible = False
  1040.         szCorner.Visible = False
  1041.         szRight.Visible = False
  1042.         iTitleBar.Visible = False
  1043.         
  1044.         If (Not Ambient.UserMode) Then
  1045.             If (UserControl.Height > 420) Or (UserControl.Height < 420) Then UserControl.Height = 420
  1046.             DrawUC_IDE
  1047.         Else
  1048.             szBottom.Move 0, UserControl.ScaleHeight - 8, UserControl.ScaleWidth - 8
  1049.             szCorner.Move UserControl.ScaleWidth - 8, UserControl.ScaleHeight - 8
  1050.             szRight.Move UserControl.ScaleWidth - 8, 8, 8, UserControl.ScaleHeight - 16
  1051.             iTitleBar.Move 0, 0, UserControl.ScaleWidth, 28
  1052.             iTitleBar.Visible = True
  1053.             
  1054.             If (m_setting.State = wsNormal) Then
  1055.                 szBottom.Visible = True
  1056.                 szCorner.Visible = True
  1057.                 szRight.Visible = True
  1058.             End If
  1059.         End If
  1060.     Else
  1061.         If (UserControl.Parent.WindowState = 0) Then
  1062.             m_setting.State = wsNormal
  1063.             Call DrawUC_Active
  1064.         ElseIf (UserControl.Parent.WindowState = 2) Then
  1065.             m_setting.State = wsMaximized
  1066.             Call DrawUC_Active
  1067.         End If
  1068.     End If
  1069. End Sub
  1070. Private Sub UserControl_Show()
  1071.     If (Not UserControl.Parent.BorderStyle = 0) Then UserControl.Parent.BorderStyle = 0
  1072.     
  1073.     If (Ambient.UserMode) Then
  1074.         m_setting.PrntActive = True
  1075.         UserControl.Height = UserControl.Parent.ScaleHeight
  1076.         Call DrawUC_Active
  1077.     Else
  1078.         With UserControl
  1079.             If (m_setting.FirstInit) Then .Parent.BackColor = &HF0F0F0
  1080.         End With
  1081.     End If
  1082. End Sub
  1083.  
  1084.  
  1085.