musicstashall
Знающий
- Сообщения
- 323
- Репутация
- 8
- Версия AutoIt
- 3.3.14.5
- Версия
- 1.0
Представляю вашему вниманию альтернативную версию оконных разделителей CtrlSplitter. В качестве разделителя - сплиттера задействован элемент Static, а функционирование разделителей полностью реализовано в их оконной процедуре.
Код:
Func _GuiCreate()
Local $iDPI = _WinAPI_GetDpiForPrimaryMonitor()
Local $fscale = $iDPI / 96
Local $fscale2 = 96 / _WinAPI_GetDpiForSystem()
Local $cxFrame = _WinAPI_GetSystemMetricsForDpi($SM_CXSIZEFRAME, $iDPI)
Local $cyFrame = _WinAPI_GetSystemMetricsForDpi($SM_CYSIZEFRAME, $iDPI)
Local $cyCapt = _WinAPI_GetSystemMetricsForDpi($SM_CYCAPTION, $iDPI)
Local $iW = 1110, $iH = 710
Local $istyle = BitOR($WS_BORDER, $WS_CAPTION, $WS_GROUP, $WS_SIZEBOX, $WS_TABSTOP, $WS_OVERLAPPEDWINDOW)
$gui1 = GUICreate('', $iW, $iH, -1, -1, $istyle)
GUISetBkColor(_WinAPI_SwitchColor(_WinAPI_GetSysColor($COLOR_WINDOW)))
GUIRegisterMsg($WM_SYSCOMMAND, 'GuiMessageProc')
GUIRegisterMsg($WM_THEMECHANGED, 'GuiMessageProc')
GUIRegisterMsg($WM_GETDPISCALEDSIZE, 'GuiMessageProc')
GUIRegisterMsg($WM_DPICHANGED, 'GuiMessageProc')
GUIRegisterMsg($WM_GETMINMAXINFO, 'GuiMessageProc')
GUIRegisterMsg($WM_WINDOWPOSCHANGED, 'GuiMessageProc')
GUIRegisterMsg($WM_ENTERSIZEMOVE, 'GuiMessageProc')
GUIRegisterMsg($WM_EXITSIZEMOVE, 'GuiMessageProc')
GUIRegisterMsg($WM_SIZE, 'GuiMessageProc')
GUIRegisterMsg($WM_POSTSIZE, 'GuiMessageProc')
GUIRegisterMsg($WM_COMMAND, 'GuiMessageProc')
GUIRegisterMsg($WM_NOTIFY, 'GuiMessageProc')
GUIRegisterMsg($WM_UAHDRAWMENU, 'GuiMessageProc')
_GuiMenuCreate()
Global $hMenu = _GUICtrlMenu_GetMenu($gui1)
$hStatus = _GUICtrlStatusBar_Create($gui1)
_GUICtrlStatusBar_SetParts($hStatus, -1, $hStatus_PartsWidth)
$TreeViewTemplates = GUICtrlCreateTreeView(16, 144, 165, 224, -1, $WS_EX_CLIENTEDGE)
$hTreeViewTemplates = GUICtrlGetHandle(-1)
Local $hImage = _GUIImageList_Create(21 * $fscale, 21 * $fscale, 5, 3)
_GUIImageList_ReplaceIcon($hImage, -1, _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 3, 21 * $fscale, 21 * $fscale))
_GUICtrlTreeView_SetNormalImageList($hTreeViewTemplates, $hImage)
TemplatesTreeUpdate()
_GUICtrlTreeView_SelectItem($hTreeViewTemplates, _GUICtrlTreeView_GetFirstItem($hTreeViewTemplates), $TVGN_CARET)
$ListViewTemplates = GUICtrlCreateListView("Файл|Заголовок", 196, 144, 294, 224)
GUICtrlSetStyle(-1, BitOR($LVS_AUTOARRANGE, $LVS_ICON, $LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
$hListViewTemplates = GUICtrlGetHandle(-1)
_GUICtrlListView_SetExtendedListViewStyle($hListViewTemplates, BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE))
$hImage = _GUIImageList_Create(48 * $fscale, 48 * $fscale, 5, 3)
_GUIImageList_ReplaceIcon($hImage, -1, _WinAPI_ShellExtractIcon(@SystemDir & '\imageres.dll', 15, 48 * $fscale, 48 * $fscale))
_GUIImageList_ReplaceIcon($hImage, -1, _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 3, 48 * $fscale, 48 * $fscale))
_GUICtrlListView_SetImageList($hListViewTemplates, $hImage, 0)
TemplatesListUpdate(@DesktopDir)
Global $ListViewAddress = GUICtrlCreateListView("|Имя|Компания|Email|Телефон|Дата", 16, 386, 474, 209)
GUICtrlSetStyle(-1, BitOR($LVS_SHOWSELALWAYS, $LVS_AUTOARRANGE, $LVS_REPORT, $LVS_EDITLABELS))
$hListViewAddress = GUICtrlGetHandle(-1)
_GUICtrlListView_SetExtendedListViewStyle($hListViewAddress, BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_DOUBLEBUFFER, $LVS_EX_CHECKBOXES))
_GUICtrlListView_RegisterSortCallBack($hListViewAddress)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50 * $fscale)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150 * $fscale)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 200 * $fscale)
$hImage = _GUIImageList_Create(21 * $fscale, 21 * $fscale, 5, 3)
_GUIImageList_ReplaceIcon($hImage, -1, _WinAPI_ShellExtractIcon(@SystemDir & '\imageres.dll', 83, 21 * $fscale, 21 * $fscale))
_GUICtrlListView_SetImageList($hListViewAddress, $hImage, 1)
$UserImage = GUICtrlCreateIcon(@SystemDir & '\shell32.dll', -161, 16, 15, 100, 100)
$UserName = GUICtrlCreateLabel("Имя", 153, 32, 337, 35, $SS_CENTERIMAGE)
GUICtrlSetColor(-1, 0x000080)
$CompanyName = GUICtrlCreateLabel("Организация", 155, 77, 327, 30, $SS_CENTERIMAGE)
GUICtrlSetColor(-1, 0x000080)
$oIE = _IECreateEmbedded()
$Obj = GUICtrlCreateObj($oIE, 506, 8, 596, 550)
$addressBar = GUICtrlCreateInput("Вставьте url адрес или путь к файлу html страницы", 506, 570, 594, 25, -1, $WS_EX_CLIENTEDGE)
GUICtrlSetColor(-1, _WinAPI_SwitchColor(_WinAPI_GetSysColor($COLOR_GRAYTEXT)))
$hAddressBar = GUICtrlGetHandle(-1)
$ispl0 = _CtrlSplit_Create(184, 144, 224, $SPS_VERTICAL) ; вертикальный малый
$ispl1 = _CtrlSplit_Create(495, 0, 605, $SPS_VERTICAL) ; вертикальный большой
$ispl2 = _CtrlSplit_Create(10, 374, 486, $SPS_HORIZONTAL) ; горизонтальный малый
$ispl3 = _CtrlSplit_Create(10, 607, 1090, $SPS_HORIZONTAL) ; горизонтальный большой
$hConsole = _GUICtrlRichEdit_Create($gui1, "", 10 * $fscale, 603, 1090, 40 * $fscale, BitOR($WS_VSCROLL, $WS_HSCROLL, $ES_LEFT, $ES_READONLY, $ES_MULTILINE), 0)
_GUICtrlRichEdit_SetBkColor($hConsole, _WinAPI_GetSysColor($COLOR_3DFACE))
_GUICtrlRichEdit_SetCharColor($hConsole, _WinAPI_GetSysColor($COLOR_GRAYTEXT))
$hContent = ControlGetHandle($gui1, "", "[CLASS:Shell Embedding]")
_GUICtrlStatusBar_SetText($hStatus, "Отправитель", 0)
_GUICtrlStatusBar_SetText($hStatus, "Получатели", 1)
_GUICtrlStatusBar_SetText($hStatus, "Выполнение", 2, $SBT_NOBORDERS)
_GUICtrlStatusBar_SetText($hStatus, "Успешно:", 4)
_GUICtrlStatusBar_SetText($hStatus, "Не удалось:", 5)
SetPart($iDPI)
__setautoresizing()
GUISetState(@SW_HIDE, $gui1)
_WinAPI_SetWindowPos($gui1, 0, 0, 0, Round($iW * $fscale), Round($iH * $fscale), BitOR($SWP_NOMOVE, $SWP_NOREDRAW))
_CtrlSplit_AddItem($ispl0, $SPL_LEFT, $TreeViewTemplates, $SP_RESIZING)
_CtrlSplit_AddItem($ispl0, $SPL_RIGHT, $ListViewTemplates, $SP_RESIZING)
_CtrlSplit_ItemSetDistance($ispl0, $SPL_LEFT, $TreeViewTemplates, 2, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl0, $SPL_RIGHT, $ListViewTemplates, 2, $SP_USEITEM)
_CtrlSplit_ItemSetMinimal($ispl0, $SPL_LEFT, $TreeViewTemplates, 0, $SP_USEITEM)
_CtrlSplit_ItemSetMinimal($ispl0, $SPL_RIGHT, $ListViewTemplates, 0, $SP_USEITEM)
_CtrlSplit_AddItem($ispl1, $SPL_LEFT, $UserName, $SP_RESIZING)
_CtrlSplit_AddItem($ispl1, $SPL_LEFT, $CompanyName, $SP_RESIZING)
_CtrlSplit_AddItem($ispl1, $SPL_LEFT, $ListViewTemplates, $SP_RESIZING)
_CtrlSplit_AddItem($ispl1, $SPL_LEFT, $ispl2, $SP_RESIZING)
_CtrlSplit_AddItem($ispl1, $SPL_LEFT, $ListViewAddress, $SP_RESIZING)
_CtrlSplit_AddItem($ispl1, $SPL_RIGHT, $hContent, $SP_RESIZING)
_CtrlSplit_AddItem($ispl1, $SPL_RIGHT, $addressBar, $SP_RESIZING)
_CtrlSplit_ItemSetMinimal($ispl1, $SPL_LEFT, $UserName, 0, $SP_USEITEM)
_CtrlSplit_ItemSetMinimal($ispl1, $SPL_LEFT, $CompanyName, 0, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl1, $SPL_LEFT, $UserName, 5, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl1, $SPL_LEFT, $CompanyName, 5, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl1, $SPL_RIGHT, $hContent, 5, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl1, $SPL_RIGHT, $addressBar, 5, $SP_USEITEM)
_CtrlSplit_AddItem($ispl2, $SPL_TOP, $TreeViewTemplates, $SP_RESIZING)
_CtrlSplit_AddItem($ispl2, $SPL_TOP, $ispl0, $SP_RESIZING)
_CtrlSplit_AddItem($ispl2, $SPL_TOP, $ListViewTemplates, $SP_RESIZING)
_CtrlSplit_AddItem($ispl2, $SPL_BOTTOM, $ListViewAddress, $SP_RESIZING)
_CtrlSplit_ItemSetDistance($ispl2, $SPL_TOP, $TreeViewTemplates, 2, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl2, $SPL_TOP, $ispl0, 2, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl2, $SPL_TOP, $ListViewTemplates, 2, $SP_USEITEM)
_CtrlSplit_ItemSetDistance($ispl2, $SPL_BOTTOM, $ListViewAddress, 2, $SP_USEITEM)
_CtrlSplit_AddItem($ispl3, $SPL_TOP, $ListViewAddress, $SP_RESIZING)
_CtrlSplit_AddItem($ispl3, $SPL_TOP, $addressBar, $SP_NORESIZING)
_CtrlSplit_AddItem($ispl3, $SPL_TOP, $ispl1, $SP_RESIZING)
_CtrlSplit_AddItem($ispl3, $SPL_TOP, $hContent, $SP_RESIZING)
_CtrlSplit_AddItem($ispl3, $SPL_BOTTOM, $hConsole, $SP_RESIZING)
_CtrlSplit_ItemSetDistance($ispl3, $SPL_BOTTOM, $hConsole, 5, $SP_USEITEM)
_CtrlSplit_ItemSetMinimal($ispl3, $SPL_BOTTOM, $hConsole, 0, $SP_USEITEM)
_CtrlSplit_SetParam($ispl0, _WinAPI_MakeLong(_GetLeft($ispl0), _WinAPI_GetClientWidth($gui1) - _GetLeft($ispl0)))
_CtrlSplit_SetParam($ispl1, _WinAPI_MakeLong(_GetLeft($ispl1), _WinAPI_GetClientWidth($gui1) - _GetLeft($ispl1)))
_CtrlSplit_SetParam($ispl2, _WinAPI_MakeLong(_GetTop($ispl2), _WinAPI_GetClientHeight($gui1) - _GetTop($ispl2)))
_CtrlSplit_SetParam($ispl3, _WinAPI_MakeLong(_GetTop($ispl3), _WinAPI_GetClientHeight($gui1) - _GetTop($ispl3)))
__setdefresizing()
_GUICtrlListView_SortItems($hListViewAddress, 1)
_SendMessage($gui1, $WM_THEMECHANGED)
Local $iX0 = IniRead($DefSettingFile, "metrics", "spl_0x" & $iDPI, _GetLeft($ispl0))
Local $iX1 = IniRead($DefSettingFile, "metrics", "spl_1x" & $iDPI, _GetLeft($ispl1))
Local $iY2 = IniRead($DefSettingFile, "metrics", "spl_2x" & $iDPI, _GetTop($ispl2))
Local $iY3 = IniRead($DefSettingFile, "metrics", "spl_3x" & $iDPI, _GetTop($ispl3))
GUISetState(@SW_SHOW, $gui1)
_CtrlSplit_SetPos($ispl2, Default, $iY2)
_CtrlSplit_SetPos($ispl3, Default, $iY3)
_CtrlSplit_SetPos($ispl1, $iX1)
_CtrlSplit_SetPos($ispl0, $iX0)
If _CtrlSplit_ItemGetState($ispl1, $SPL_LEFT, 0, $SPM_HIDE) == 0 And _CtrlSplit_ItemGetState($ispl2, $SPL_TOP, 0, $SPM_HIDE) == 0 Then
_CtrlSplit_SetParam($ispl0, _WinAPI_MakeLong(_GetLeft($ispl0), _WinAPI_GetClientWidth($gui1) - _GetLeft($ispl0)))
EndIf
If _CtrlSplit_ItemGetState($ispl2, $SPL_TOP, 0, $SPM_HIDE) == 0 And _CtrlSplit_ItemGetState($ispl2, $SPL_BOTTOM, 0, $SPM_HIDE) == 0 Then
_CtrlSplit_SetParam($ispl2, _WinAPI_MakeLong(_GetTop($ispl2), _WinAPI_GetClientHeight($gui1) - _GetTop($ispl2)))
EndIf
If _CtrlSplit_ItemGetState($ispl1, $SPL_LEFT, 0, $SPM_HIDE) == 0 And _CtrlSplit_ItemGetState($ispl1, $SPL_RIGHT, 0, $SPM_HIDE) == 0 Then
_CtrlSplit_SetParam($ispl1, _WinAPI_MakeLong(_GetLeft($ispl1), _WinAPI_GetClientWidth($gui1) - _GetLeft($ispl1)))
EndIf
If _CtrlSplit_ItemGetState($ispl3, $SPL_BOTTOM, 0, $SPM_HIDE) == 0 Then
_CtrlSplit_SetParam($ispl3, _WinAPI_MakeLong(_GetTop($ispl3), _WinAPI_GetClientHeight($gui1) - _GetTop($ispl3)))
EndIf
_IENavigate($oIE, "https://www.autoitscript.com", 0)
EndFunc ;==>_GuiCreate
- Автор
- musicstashall