Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Стили окон Добавлено: 13.07.04 15:27  

Автор вопроса:  Matrix | Web-сайт: delta-net.narod.ru
Как можно получить все используемы 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-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 13.07.04 16:28
cresta, забыл сказать еще и про GWL_EXSTYLE

Ответить

Номер ответа: 3
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #3 Добавлено: 13.07.04 17:52
Ну, что спросили, то и ответил :) А то ведь инициатива как известно, наказуема :(((

Ответить

Номер ответа: 4
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #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-сайт: delta-net.narod.ru
 Профиль | | #6
Добавлено: 13.07.04 23:09
Ламерский вопрос, но!
Как смотреть число ПОБИТНО?
Нужно превести его в двоичный код, если я правильно понял? Но я что-то не нашел функции, возвращающей двоичное представление числа.
И еще: где можно посмотреть какой бит за что отвечает?

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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
        ;Do While mul < 65537
            BinS = BinS & CStr((a And mul) / mul)
            mul = mul * 2
        Loop
        ;Debug.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-сайт: basicproduction.nm.ru/
 Профиль | | #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-сайт: delta-net.narod.ru
 Профиль | | #11
Добавлено: 18.07.04 17:57
Так... с менюхами почти разобрался. Осталась 1 проблема - когда меню содержит картинку, то VB вылетает с сообжением "Visual Basic Обнаружена ошибка ..." Почему такие серьезные глюки??

Ответить

Номер ответа: 12
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 18.07.04 18:08
Хм... а прчем тут меню ???
А каким способом ты встраиваешь в меню картинку ? Все зависит от этого...

Ответить

Номер ответа: 13
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #13
Добавлено: 18.07.04 22:42
Я пишу прогу что-то типа Spyxx из комплекта VB
Только с функциями изменения всех параметров окна. И меню там же, до кучи.
Так вот, я без понятия как встраивается картинка в меню в разных программах :((

Ответить

Номер ответа: 14
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #14
Добавлено: 18.07.04 22:47
Ох... плохо она туда встраивается :))

Если картинка, как в контекстном меню проводника, инвертируется при выделении, значит был использован простенький метод... там пара АПИ всего... если же что-то другое, то знай! это программа рисует вручную, и это лучше не менять... т.к. никогда не знаешь как это рисуется, в разных программах, по-разному...

В догонку, могу посоветовать скачать с этого сайта, пример, как называется не помню, но автор я :), и там показывается как можно перерисовать нарисовать меню...

А вообще, у всех перерисовываемых менюшек, должно быть св-во MFT_OWNERDRAW...

Ответить

Номер ответа: 15
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #15
Добавлено: 19.07.04 12:24
Не... МЕНЯТЬ картинку я не хочу...
Хочу тлько получить текст меню с картинкой..
А прога аварийно вылетает...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам