Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 10.10.2016, 14:56   #1
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Как разложить Hex значение на константы

Чет не знаю, как задать вопрос в поисковик... Допустим, мы получаем сумму стилей, примененных к окну = 0х16000000. Как это число разложить и узнать, какие константы суммируются? Как этот алгоритм называется?

Global Const $WS_TILED = 0
Global Const $WS_OVERLAPPED = 0
Global Const $WS_MAXIMIZEBOX = 0x00010000
Global Const $WS_MINIMIZEBOX = 0x00020000
Global Const $WS_TABSTOP = 0x00010000
Global Const $WS_GROUP = 0x00020000
Global Const $WS_SIZEBOX = 0x00040000
Global Const $WS_THICKFRAME = 0x00040000
Global Const $WS_SYSMENU = 0x00080000
Global Const $WS_HSCROLL = 0x00100000
Global Const $WS_VSCROLL = 0x00200000
Global Const $WS_DLGFRAME = 0x00400000
Global Const $WS_BORDER = 0x00800000
Global Const $WS_CAPTION = 0x00C00000
Global Const $WS_OVERLAPPEDWINDOW = 0x00CF0000
Global Const $WS_TILEDWINDOW = 0x00CF0000
Global Const $WS_MAXIMIZE = 0x01000000
Global Const $WS_CLIPCHILDREN = 0x02000000
Global Const $WS_CLIPSIBLINGS = 0x04000000
Global Const $WS_DISABLED = 0x08000000
Global Const $WS_VISIBLE = 0x10000000
Global Const $WS_MINIMIZE = 0x20000000
Global Const $WS_CHILD = 0x40000000
Global Const $WS_POPUP = 0x80000000
Global Const $WS_POPUPWINDOW = 0x80880000
UPD: Доперло, что можно каждую константу перемножать побитово, например:
If 0х16000000 И $WS_VISIBLE Then константа $WS_VISIBLE используется
и т.д. с каждым стилем, но это какое-то топорное решение или так и должно быть?
(Offline)
 
Ответить с цитированием
Старый 10.10.2016, 15:05   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,442
Написано 5,269 полезных сообщений
(для 15,227 пользователей)
Ответ: Как разложить Hex значение на константы

Биты?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (10.10.2016)
Старый 10.10.2016, 15:10   #3
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Как разложить Hex значение на константы

Сообщение от ABTOMAT Посмотреть сообщение
Биты?
Вот так?

UPD: Доперло, что можно каждую константу перемножать побитово, например:

If 0х16000000 И $WS_VISIBLE Then константа $WS_VISIBLE используется
и т.д. с каждым стилем, но это какое-то топорное решение или так и должно быть?

Можешь какой-нить пример подкинуть на любом ЯП, разберусь..
(Offline)
 
Ответить с цитированием
Старый 10.10.2016, 15:33   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Как разложить Hex значение на константы

Эм, я думаю обратного точного решения нет. Возможно несколько комбинаций.
Константы на деле что-то типо такого:
0b00000000010000001
Это не сумма, а побитовое ИЛИ над ними применяется. Что правда лучше не делает, если пересекающиеся значения существуют (у тебя такие есть)
И для простого примера, где:
a = 0b0001
b = 0b0011
c = 0b0010
X:0b011 может разложиться как :
X = a || c
или 
X = b
А у тебя еще и коллизии, как ты узнаешь верное значение?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (10.10.2016)
Старый 10.10.2016, 15:40   #5
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Как разложить Hex значение на константы

А у тебя еще и коллизии, как ты узнаешь верное значение
В смысле как я получаю это значение? Через Win_API: GetWindowLongPtr($hWnd, $GWL_STYLE).
(Offline)
 
Ответить с цитированием
Старый 10.10.2016, 15:40   #6
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Как разложить Hex значение на константы

Global Const $WS_MAXIMIZEBOX = 0x00010000
Global Const $WS_MINIMIZEBOX = 0x00020000
Global Const $WS_TABSTOP = 0x00010000
Global Const $WS_GROUP = 0x00020000
Коллизия.
Global Const $WS_POPUP = 0x80000000
Global Const $WS_POPUPWINDOW = 0x80880000
Global Const $WS_OVERLAPPEDWINDOW = 0x00CF0000
Бинарная коллизия:
0000 0000 1000 0000 0000 0000 0000 0000 0000 0000
0000 0000 1000 0000 1000 1000 0000 0000 0000 0000
0000 0000 0000 0000 1100 1111 0000 0000 0000 0000
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (10.10.2016)
Старый 10.10.2016, 15:43   #7
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Как разложить Hex значение на константы

Сообщение от RegIon Посмотреть сообщение
Global Const $WS_MAXIMIZEBOX = 0x00010000
Global Const $WS_MINIMIZEBOX = 0x00020000
Global Const $WS_TABSTOP = 0x00010000
Global Const $WS_GROUP = 0x00020000
А что это значит?
(Offline)
 
Ответить с цитированием
Старый 10.10.2016, 15:48   #8
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Как разложить Hex значение на константы

$WS_MINIMIZEBOX у тебя или $WS_GROUP ? Оба сылаются на один битовый флаг.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (10.10.2016)
Старый 10.10.2016, 15:50   #9
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Как разложить Hex значение на константы

Сообщение от RegIon Посмотреть сообщение
$WS_MINIMIZEBOX у тебя или $WS_GROUP ? Оба сылаются на один битовый флаг.
Аааа, блин точно ведь...невнимательно посмотрел. Ну $WS_TABSTOP и$WS_GROUP можно в приципе выкинуть.

Черт возьми, у меня похоже еще константы старые, на msdn другие значения... То что у меня похоже для 32-битных систем.

Ну это не суть, главное научиться раскладывать
(Offline)
 
Ответить с цитированием
Старый 10.10.2016, 16:16   #10
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Как разложить Hex значение на константы

В общем, мне надо что сделать: в windows 10 по умолчанию шапка окна у приложений меняет цвет: у активного приложения серая, у неактивного белая. Надо сделать так, чтобы только у одного приложения цвет не менялся. Можно, конечно, свою рамку нарисовать, но желательно оставить стандартную. У меня есть приложение самсунговское, где цвет рамки всегда серый и рамка у него стандартная, вот узнать бы какие стили они намешали, чтобы так получилось. Ну и в целом надо с этими стилями разобраться, как убрать рамку, элементы меню, скрыть из панели задач - с каждым из этого по отдельности я уже разобрался, при комбинации приложение почему-то теряет фокус. Может из-за неправильных констант, кстати. Спасибо за наводку. PS. Надо клиентскую область MS Word встроить в свое приложение без ActiveX.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 12:41.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com