Здравствуйте, хотел узнать имеется ли возможность, добавить в заголовок вкладки элемент позволяющий закрывать вкладку, что-то типа крестика "X"
Полу-понимая, скрестил 2 алгоритма и получил нечто похожее на то, что хотел, но без крестиков, просто правой кнопкой при щелчке по вкладке выводит имя текущей вкладки(ну а из этого можно уже допилить закрытие вкладки по щелчку правой кнопки).
Сообщение автоматически объединено:
Полу-понимая, скрестил 2 алгоритма и получил нечто похожее на то, что хотел, но без крестиков, просто правой кнопкой при щелчке по вкладке выводит имя текущей вкладки(ну а из этого можно уже допилить закрытие вкладки по щелчку правой кнопки).
Код:
#include <GUIConstantsEx.au3>
#include <GuiTab.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
$gui = GUICreate("My GUI Context Menu", 400, 300)
$Tab1 = GUICtrlCreateTab(100, 10, 129, 200)
$buttoncontext2 = GUICtrlCreateContextMenu($Tab1)
;$buttonitem = GUICtrlCreateMenuItem("Close Tab", $buttoncontext2)
$item1 = GUICtrlCreateTabItem("Tab 1")
$item2 = GUICtrlCreateTabItem("Tab 2")
GUICtrlCreateTabItem("")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()
While 1
;$msg = GUIGetMsg()
;If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $tNMHDR, $iIDFrom, $iCode
; consolewrite(@crlf&"hWnd="&$hWnd&" "&"Msg="&$Msg&" wParam="&$wParam&" lParam="&$lParam)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
;consolewrite(@crlf&"tNMHDR="&$tNMHDR&" "&"iIDFrom ="&$iIDFrom &" iCode="&$iCode)
Switch $iIDFrom
Case $Tab1
Switch $iCode
Case $NM_RCLICK
consolewrite(@crlf&"tNMHDR="&$tNMHDR&" "&"iIDFrom ="&$iIDFrom &" iCode="&$iCode)
consolewrite(@crlf&"hWnd="&$hWnd&" "&"Msg="&$Msg&" wParam="&$wParam&" lParam="&$lParam)
$tPOINT = _WinAPI_GetMousePos(True, $gui)
Local $iX = DllStructGetData($tPOINT, "X")
Local $iY = DllStructGetData($tPOINT, "Y")
Local $aPos = ControlGetPos($gui, "", $Tab1)
Local $aHit = _GUICtrlTab_HitTest($Tab1, $iX - $aPos[0], $iY - $aPos[1])
If $aHit[0] <> -1 Then
_GUICtrlTab_SetCurSel($Tab1, $aHit[0])
;$hItem=__TV_GetItemHandle($iIDFrom)
$sText=_GUICtrlTab_GetItemText($Tab1, $aHit[0])
MsgBox(64, "", $sText)
endif
Return 0
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Последнее редактирование: