Что нового

Не отображается заголовок Tabitem

La2Angel

Новичок
Сообщения
156
Репутация
1
Доброго времени суток. Наткнулся я на проблему, сделал скин по некоторым темам на форуме, часть кода:
Код:
_GDIPlus_Startup()
$hPng = _GDIPlus_ImageLoadFromFile($background_img1)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng)
$hParent = GUICreate($Title, 800, 500, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
_WinAPI_UpdateLayeredWindowEx($hParent, -1, -1, $hBitmap, 255, 1)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_Shutdown()

$hForm = GUICreate($Title, 780, 340, -1, -1, $WS_POPUP, -1, $hParent)
GUISetBkColor(0x000000)
GUICtrlCreatePic($background_img2, 0, 0, 780, 340)
GUICtrlSetState(-1, $GUI_DISABLE)


Теперь в это окно вставляю Tab - он становится прозрачный, его не видно. Покопав на форуме, нашел решение как задать ему цвет фона и он появился:
Код:
$tab=GUICtrlCreateTab (290,50, 460,220)
	_GUICtrlTabSetBkColor($hForm, $tab, 0xFFFFFF)
............
Func _GUICtrlTabSetBkColor($hWnd, $hSysTab32, $sBkColor)
    ;Disabled Label to hold the color
    Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32)
    
    GUICtrlCreateLabel("", $aTabPos[0] + 2, $aTabPos[1] + 23, $aTabPos[2] - 5, $aTabPos[3] - 26)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetBkColor(-1, $sBkColor)
EndFunc

Теперь вроде бы все, но, есть еще одна проблема - GUICtrlCreateTabitem - их просто не видно, т.е. нажать на вкладки можно, но они прозрачные и название их тоже не видно.

Добавил картинку, как это выглядит.

https://yadi.sk/i/fHr6vQL9e3PzX
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
La2Angel
Он становится не прозрачным, а попросту теряет фокус и рисуется под фоном.

Как вариант:
Код:
$hForm = GUICreate($Title, 780, 340, -1, -1, $WS_POPUP, -1, $hParent)
GUISetBkColor(0x000000)

; << Creating TAB
GUICtrlCreateTabItem("") ;End TAB creation

GUICtrlCreatePic($background_img2, 0, 0, 780, 340, $WS_CLIPSIBLINGS)
GUICtrlSetState(-1, $GUI_DISABLE)
 
Автор
L

La2Angel

Новичок
Сообщения
156
Репутация
1
Хм, есть над чем задуматься, забыл про этот рисунок совсем. Если так сделать, как вы указали, не помогает. Если спустить его после всех Tab и Label, Tab видно, но пропадают Label в черные полоски:smile:)
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
La2Angel
Код:
#Include <WindowsConstants.au3>
#Include <GUIConstantsEx.au3>

$hForm = GUICreate('', 780, 340, -1, -1, $WS_POPUP)
GUISetBkColor(0x000000)

$iTab = GUICtrlCreateTab( 5, 5, 200, 300 )
GUICtrlCreateTabItem( "test" )
GUICtrlCreateTabItem("") ;End TAB creation

GUICtrlCreatePic(@AutoItExe & "\..\Examples\GUI\msoobe.jpg", 0, 0, 780, 340, $WS_CLIPSIBLINGS)
GUICtrlSetState(-1, $GUI_DISABLE)

$iEdit = GUICtrlCreateInput( "Hello", 5, 310, 200, 22 )
$iLabel = GUICtrlCreateLabel( "Hello", 220, 5, 100, 20 )
GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT )
GUISetState()

Do
Until GUIGetMsg() = -3


Используйте для Label:
Код:
GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT )
 
Автор
L

La2Angel

Новичок
Сообщения
156
Репутация
1
firex сказал(а):
La2Angel
Код:
#Include <WindowsConstants.au3>
#Include <GUIConstantsEx.au3>

$hForm = GUICreate('', 780, 340, -1, -1, $WS_POPUP)
GUISetBkColor(0x000000)

$iTab = GUICtrlCreateTab( 5, 5, 200, 300 )
GUICtrlCreateTabItem( "test" )
GUICtrlCreateTabItem("") ;End TAB creation

GUICtrlCreatePic(@AutoItExe & "\..\Examples\GUI\msoobe.jpg", 0, 0, 780, 340, $WS_CLIPSIBLINGS)
GUICtrlSetState(-1, $GUI_DISABLE)

$iEdit = GUICtrlCreateInput( "Hello", 5, 310, 200, 22 )
$iLabel = GUICtrlCreateLabel( "Hello", 220, 5, 100, 20 )
GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT )
GUISetState()

Do
Until GUIGetMsg() = -3


Используйте для Label:
Код:
GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT )

Не помогло, Label черными полосками идут.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
La2Angel
На Win7 все прекрасно работает (работающий Label выделен):
fe3c4b2be8.png
 
Автор
L

La2Angel

Новичок
Сообщения
156
Репутация
1
firex сказал(а):
La2Angel
На Win7 все прекрасно работает (работающий Label выделен):
fe3c4b2be8.png

Я вам верю, но вот когда я это вставляю в свой код, получаю вот это:



Добавлено:
Сообщение автоматически объединено:

Нашел нужное расположение, с начало рисуем Tab потом ставим картинку, потом рисуем label, потом рисуем tabitem. в таком распорядке нормально стало отображать.
 
Верх