Страница: 1 | 2 |
Вопрос: Стили окон
Добавлено: 13.07.04 15:27
Автор вопроса: Matrix | Web-сайт:
Как можно получить все используемы WS-стили определенного окна?
Ответы
Всего ответов: 22
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 13.07.04 16:08
Получи через GetWindowLong с индексом GWL_STYLE и полученное число побитно смотри - единица или ноль в разряде, ну и соответственно получишь, использовался тот или иной флаг (WS_) при создании окна.
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 13.07.04 16:28
cresta, забыл сказать еще и про GWL_EXSTYLE
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 13.07.04 17:52
Ну, что спросили, то и ответил А то ведь инициатива как известно, наказуема ((
Номер ответа: 4
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #4
Добавлено: 13.07.04 21:11
попробуем
И вопрос вдогонку: а как можно получить текст пункта меню? GetMenuIdemInfo выдает 0, а GetLastError возвращает 87
И чго это значит?
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 13.07.04 22:37
Вообще-то код 87 - ERROR_INVALID_PARAMETER
Возможно, в GetMenuItemInfo передал неправильные данные. Наверняка так.
Номер ответа: 6
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #6
Добавлено: 13.07.04 23:09
Ламерский вопрос, но!
Как смотреть число ПОБИТНО?
Нужно превести его в двоичный код, если я правильно понял? Но я что-то не нашел функции, возвращающей двоичное представление числа.
И еще: где можно посмотреть какой бит за что отвечает?
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 13.07.04 23:34
GetLastError возвращает 87
Значит какая-то из предыдущих функций закончилась с ошибкой... При вызове АПИ, если ошибок небыло, SetLastError не вызывается... вот...
Встроенной функции нет, можешь посмотреть пример CyRax'a по переводу чисел из любой в любую систем счисления...
На счет битов - в документации... все зависит от того биты чего ты будешь смотреть...
Номер ответа: 8
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #8
Добавлено: 13.07.04 23:48
Dim a As Long, mul As Long, BinS As String
For a = 0 To 16
BinS = ""
mul = 1
 o While mul < 65537
BinS = BinS & CStr((a And mul) / mul)
mul = mul * 2
Loop
 ebug.Print a; StrReverse(BinS)
Next a
Номер ответа: 9
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #9
Добавлено: 13.07.04 23:49
WS_BORDER = &H800000
Окно имеет рамку
WS_CAPTION = &HC00000
Окно имеет заголовак
WS_CHILD = &H40000000
Окно является дочерним
WS_CHILDWINDOW = &H40000000
Аналогично WS_CHILD
WS_CLIPCHILDREN = &H2000000
Запрещает родительскому окну рисовать поверх дочернего окна
WS_CLIPSIBLINGS = &H4000000
Запрещает дочернему окну рисовать поверх другого дочернего окна
WS_DISABLED = &H8000000
Окно заблокировано
WS_DLGFRAME = &H400000
Окно имеет рамку, как у диалогового окна и не имеет заголовка
WS_GROUP = &H20000
Окно является началом группы элементов
WS_HSCROLL = &H100000
Окно имеет горизонтальную полосу прокрутки
WS_ICONIC = &H20000000
Аналогично WS_MINIMIZE
WS_MAXIMIZE = &H1000000
Окно развернуто
WS_MAXIMIZEBOX = &H10000
Имеется кнопка Восстановить в правой части заголовка. Нельзя комбинировать с расширенным стилем WS_EX_CONTEXTHELP. Можно дополнительно определить стиль WS_SYSMENU
WS_MINIMIZE = &H20000000
Окно свернуто
WS_MINIMIZEBOX = &H20000
Окно имеет кнопку Свернуть в правой части заголовка. Нельзя комбинировать с расширенным стилем WS_EX_CONTEXTHELP. Можно дополнительно определить стиль WS_SYSMENU
WS_OVERLAPPED = &H0
По умолчанию создается перекрывающее окно с заголовком и рамкой
WS_OVERLAPPEDWINDOW = &HCF0000
Создается перекрывающее окно с заголовком, изменяющей рамкой, системное меню, кнопки развертывания и сворачивания
WS_POPUP = &H80000000
Всплывающее окно. Нельзя использовать с WS_CHILD
WS_POPUPWINDOW = &H80880000
Всплывающее окно, имеющее рамку и системное меню
WS_SIZEBOX = &H40000
Аналогично WS_THICKFRAME.
WS_SYSMENU = &H80000
Окно имеет системное меню. Можно дополнительно определить стиль WS_CAPTION
WS_TABSTOP = &H10000
Возможно использование клавиши табуляции для получения фокуса
WS_THICKFRAME = &H40000
Окно имеет рамку, позволяющую изменять размеры окна
WS_TILED = &H0
Аналогично WS_OVERLAPPED.
WS_TILEDWINDOW = &HCF0000
Аналогично WS_OVERLAPPEDWINDOW.
WS_VISIBLE = &H10000000
Окно видимо
WS_VSCROLL = &H200000
Номер ответа: 10
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #10
Добавлено: 14.07.04 04:36
Не морочь себе голову. Биты, системы счисления - это всё для системных языков программирования. Без этого они просто не смогут управлять процессором.
А Бейсику это как корове пятая нога.
Dim NewMask As Long
Const Style1 As Long = 1, Style2 As Long = 2, StyleAll As Long = 3
NewMask = NewMask Or Style1
NewMask = NewMask Or Style2
If NewMask And StyleAll Then NewMask = NewMask Xor StyleAll
NewMask = NewMask Or StyleAll
If NewMask And Style2 Then NewMask = NewMask Xor Style2
If NewMask And Style1 Then NewMask = NewMask Xor Style1
Короче:
OR - добавление стиля
AND - проверка наличия стиля
XOR - удаление стиля
Номер ответа: 11
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #11
Добавлено: 18.07.04 17:57
Так... с менюхами почти разобрался. Осталась 1 проблема - когда меню содержит картинку, то VB вылетает с сообжением "Visual Basic Обнаружена ошибка ..." Почему такие серьезные глюки??
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 18.07.04 18:08
Хм... а прчем тут меню ???
А каким способом ты встраиваешь в меню картинку ? Все зависит от этого...
Номер ответа: 13
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #13
Добавлено: 18.07.04 22:42
Я пишу прогу что-то типа Spyxx из комплекта VB
Только с функциями изменения всех параметров окна. И меню там же, до кучи.
Так вот, я без понятия как встраивается картинка в меню в разных программах ((
Номер ответа: 14
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #14
Добавлено: 18.07.04 22:47
Ох... плохо она туда встраивается )
Если картинка, как в контекстном меню проводника, инвертируется при выделении, значит был использован простенький метод... там пара АПИ всего... если же что-то другое, то знай! это программа рисует вручную, и это лучше не менять... т.к. никогда не знаешь как это рисуется, в разных программах, по-разному...
В догонку, могу посоветовать скачать с этого сайта, пример, как называется не помню, но автор я , и там показывается как можно перерисовать нарисовать меню...
А вообще, у всех перерисовываемых менюшек, должно быть св-во MFT_OWNERDRAW...
Номер ответа: 15
Автор ответа:
Matrix
Вопросов: 34
Ответов: 62
Web-сайт:
Профиль | | #15
Добавлено: 19.07.04 12:24
Не... МЕНЯТЬ картинку я не хочу...
Хочу тлько получить текст меню с картинкой..
А прога аварийно вылетает...