PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » получить цвет фона окна


получить цвет фона окна

Сообщений 1 страница 7 из 7

1

кому не лень, попинайте в разных виндах
теория
известно что цвет текст-гаджета совпадает с цветом окна
известно что константа #COLOR_MENU возвращает цвет которым красится текст-гаджет
вот такая цепочка
проверил в 7 и 10, но у вас наверняка винда с другими настройками

Код:
EnableExplicit


Global win1, fnt, but1
fnt = (-MulDiv_(19, GetDeviceCaps_(GetDC_(0), #LOGPIXELSY), 72))
fnt = CreateFont_(fnt, 0, 0, 0, #FW_BOLD, 0, 0, 0, #DEFAULT_CHARSET, 0, 0, #PROOF_QUALITY, 0, "Courier New")


Procedure myCallback(hwnd, msg, wParam, lParam)
Protected res, br
res = #PB_ProcessPureBasicEvents
Select msg
Case #WM_CTLCOLORSTATIC
;{
If lParam=but1
SetBkMode_(wParam, #TRANSPARENT)
SetTextColor_(wParam, 222)
br=GetStockObject_(#DC_BRUSH)
SelectObject_(wParam, br)
SetDCBrushColor_(wParam, GetSysColor_(#COLOR_MENU)); +9 и фон меняется
ProcedureReturn br
EndIf
;} = #WM_CTLCOLORSTATIC

EndSelect; = msg
ProcedureReturn res
EndProcedure

Procedure senior()
Protected ev, f1
win1=OpenWindow(1234, 870, 690, 500, 310, "text")

SetWindowCallback(@MyCallback())


f1=#WS_CHILD|#WS_VISIBLE|#BS_AUTOCHECKBOX|#WS_BORDER
but1=CreateWindow_(#WC_BUTTON, "check1", f1, 10, 70, 320, 50, win1, 0, 0, 0)
SendMessage_(but1, #WM_SETFONT, fnt, 1)
SetWindowTheme_(but1, @"", @"")

Repeat
ev=WaitWindowEvent()
If GetAsyncKeyState_(#VK_ESCAPE)=32768:Break:EndIf
Until ev=#PB_Event_CloseWindow

EndProcedure

senior()

0

2

win7 32bit работает
только опрос клавиши не всегда работает

Код:
GetAsyncKeyState_(#VK_ESCAPE)&32768

0

3

egons написал(а):

win7 32bit работает

это радует, может и правда решение нашлось, подождём, может ещё кто отзовётся
эта беда тянется с момента создания винды

egons написал(а):

только опрос клавиши не всегда работает

тогда через меню надо

у меня нормально работает, давно пользуюсь, 7-32\64, 10-32\64
может клава дурит

0

4

newJS написал(а):

тогда через меню надо

Я использую в своих программах выход через нажатие Esc, и работает. Но есть один нюанс - если закроешь диалоговое окно, то Esc сработает еще раз. Но решить тоже можно.

0

5

на 10ке х64 окно не видно, только значок на панели задач.

0

6

упс, вернул окно -OpenWindow(1234, 0, 0, 500, 310, "text")

0

7

egons написал(а):

Я использую в своих программах выход через нажатие Esc, и работает. Но есть один нюанс - если закроешь диалоговое окно, то Esc сработает еще раз. Но решить тоже можно.

тут посмотри
Как сделать задержку срабатывания нажатой клавиши

0


Вы здесь » PureBasic - форум » PureBasic для Windows » получить цвет фона окна