Что нового

GUICtrlCreateLabel - disabled - серая обводка текста

Poma_007

Новичок
Сообщения
24
Репутация
0
имеется:
Код:
#include <GuiConstants.au3>

GUICreate("My GUI", 400, 200)  ; will create a dialog box that when displayed is centered
GUISetState (@SW_SHOW)       ; will display an empty dialog box
GUISetBkColor (0x464747)


GUICtrlCreateLabel("У текста создается серая обводка", 10, 8, 200)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	

GUICtrlCreateLabel("Текст, без посторонних теней", 10, 30, 200)
;GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

; Run the GUI until the dialog is closed
While 1
    $msg = GUIGetMsg()
    
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

t51jrgfh8n.png

Как видим на текст выключенного элемента GUICtrlCreateLabel накладывается серая тень.
У не выключенного всё ок.

Вопрос: как убрать эту серую обводку у выключенного GUICtrlCreateLabel?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Не выключать его.
 
Автор
Poma_007

Poma_007

Новичок
Сообщения
24
Репутация
0
re

Наверно если я его выключаю, значит есть смысл?

Суть в том, что я делаю GUI окно, и этот текст идет как title в шапке GUI, а за шапку осуществляется перенос окна. (GUI окно не такое, как на скриншоте).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: re

Poma_007 сказал(а):
Наверно если я его выключаю, значит есть смысл?

Это вопрос? Если да, то я понятия не имею. Приведите краткий рабочий код этого самого окна с заголовком из Label'а, и я покажу более простой способ.
 
Автор
Poma_007

Poma_007

Новичок
Сообщения
24
Репутация
0
риторический.

Код:
#include <GuiConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$WIDTH = 600
$HEIGHT = 400
$_gui = GUICreate("test" , $WIDTH, $HEIGHT, -1, -1, $WS_POPUP)
GUISetBkColor (0x464747)

GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')


GUICtrlCreateLabel("", 0, 0, $WIDTH, 35)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetBkColor (-1, 0x666666)

; Название окна
GUICtrlCreateLabel("ОКНО", 10, 8, 200)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)


GUISetState()


While 1
    $msg = GUIGetMsg()
    
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

Func WM_NCHITTEST($hWnd, $msg, $wParam, $lParam)
	$array_state = GUIGetCursorInfo ($_gui)
	if($array_state[0] > 1 AND $array_state[0] < ($WIDTH-1) AND $array_state[1] < 35) Then
		Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', _
				$msg, 'wparam', $wParam, 'lparam', $lParam)
		If $iProc[0] = $HTCLIENT Then Return $HTCAPTION
		Return $GUI_RUNDEFMSG
	EndIf
EndFunc   ;==>WM_NCHITTEST

Смысл в том, что при закомментировании:
GUICtrlCreateLabel("ОКНО", 10, 8, 200)
;GUICtrlSetState(-1, $GUI_DISABLE)
Перетаскивание за эту часть не работает
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Poma_007,
Попробуйте так.
Код:
;...
GUICtrlCreateLabel("ОКНО", 10, 8, 200, -1, $GUI_WS_EX_PARENTDRAG)
;...
Так, кажется, и без функции WM_NCHITTEST() можно обойтись.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#Include <SendMessage.au3>

Global Const $SC_DRAGMOVE = 0xF012

$Width = 600
$Height = 400

$hForm = GUICreate('' , $Width, $Height, -1, -1, $WS_POPUPWINDOW)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
GUISetBkColor (0x464747)
$Label = GUICtrlCreateLabel('', 0, 0, $Width, 35)
GUICtrlSetBkColor (-1, 0x666666)
GUICtrlCreateLabel('ОКНО', 10, 11, 200, 14)
GUICtrlSetFont(-1, 8.5, 400, 0, 'Verdana')
GUICtrlSetBkColor (-1, 0x666666)
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
	EndSwitch
Wend

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hForm
			Switch BitShift($wParam, 16)
				Case 0
					Switch BitAND($wParam, 0xFFFF)
						Case $Label
							_SendMessage($hForm, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
					EndSwitch
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND



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

madmasles сказал(а):
Poma_007,
Попробуйте так.
Код:
;...
GUICtrlCreateLabel("ОКНО", 10, 8, 200, -1, $GUI_WS_EX_PARENTDRAG)
;...
Так, кажется, и без функции WM_NCHITTEST() можно обойтись.

Да, так проще.

Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

$Width = 600
$Height = 400

$hForm = GUICreate('' , $Width, $Height, -1, -1, $WS_POPUPWINDOW)
GUISetBkColor (0x464747)
GUICtrlCreateLabel('', 0, 0, $Width, 35, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor (-1, 0x666666)
GUICtrlCreateLabel('ОКНО', 10, 11, 200, 14)
GUICtrlSetFont(-1, 8.5, 400, 0, 'Verdana')
GUICtrlSetBkColor (-1, 0x666666)
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
	EndSwitch
Wend
 
Верх