Страница: 1 | 2 | 3 | 4 | 5 |
Вопрос: Помогите с иконкой
Добавлено: 28.08.04 18:25
Автор вопроса: D_i_M
Ответы
Всего ответов: 64
Номер ответа: 46
Автор ответа:
D_i_M
Вопросов: 1
Ответов: 10
Профиль | | #46
Добавлено: 29.08.04 15:57
Ну вот вроде кое-что про иконки стало ясно.
cresta огромное спасибо
Номер ответа: 47
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #47
Добавлено: 29.08.04 16:05
Пожалуйста.
Номер ответа: 48
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #48
Добавлено: 01.09.04 08:49
Вопрос по теме. Как сделать чтобы рисунок у Graphical кнопки был не сверху, а слева от надписи, как в дельфе или тулбаре?
Номер ответа: 49
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #49
Добавлено: 01.09.04 09:28
Наверное всё-таки рисовать вручную.
Номер ответа: 50
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #50
Добавлено: 06.09.04 23:51
Народ, а все-таки неужто нельзя разместить картинку на кнопке в стле ХР (с манифестом)?
Неужели один выход - рисовать ее?
Ведь куча примеров есть где на кнопках в стиле ХР сидит картинка:
Total Commander
CorelDRAW 11
Photoshop 7
и еще несколько видел...
Почему-то я не верю что в этих программах кнопки нарисованы...
Номер ответа: 51
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #51
Добавлено: 07.09.04 00:16
Почему-то я не верю что в этих программах кнопки нарисованы...
А что, по-твоему, они прибиты гвоздём что-ли?. Всё, что видно на экране монитора, именно "нарисовано". Раз дядя не хочет за тебя рисовать, придётся самому, либо обойтись без иконки.
Номер ответа: 52
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #52
Добавлено: 07.09.04 00:28
Под словом рисовать я имел ввиду рисование в каком-нибудь графическом редакторе.
Я не верю что в этих программах кнопки нарисованы в Photoshop...
Всё, что видно на экране монитора, именно "нарисовано"
Нарисовано в чем?
Номер ответа: 53
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #53
Добавлено: 07.09.04 01:01
В комплекте с VB6 есть такая тулза - SPYXX.EXE, запусти, наведи перекрестие на интересующий объект и посмотри, какой класс покажет. Если статик - значит в графическом редакторе рисовалось. Если буттон - значит обычная кнопка сабкласится и впечатывается в неё иконка (или битмап). Для интереса сделал это с Тотал Командиром - кнопки показывают класс TButton.
В большинстве своём это кнопки, а не рисованые в графическом редакторе картинки, которые подгружаются по тем или иным сообщениям\событиям.
А "рисуется" кнопка соответственно Апями.
Номер ответа: 54
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #54
Добавлено: 07.09.04 01:05
Вот я и хотел бы примерчик раздобыть где-нито
Ты случаем не знаешь такого?
Номер ответа: 55
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #55
Добавлено: 07.09.04 01:54
В смысле как кнопку самому отрисовывать?
Номер ответа: 56
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #56
Добавлено: 07.09.04 02:00
Картинку на кнопке со стилем ХР
Если не ошибаюсь, кнопка рисутеся CreateWindowEx?
Номер ответа: 57
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #57
Добавлено: 07.09.04 02:45
Не совсем так. CreateWindowEx создаёт окно, в том числе и класса button. Перед вызовом CreateWindowEx регистрируешь класс окна, при этом один из параметров при регистрации - указатель на оконную процедуру. Вот в эту процедуру и будет приходить от винды сообщения, в т.ч. и WM_PAINT. Если в твоей оконной (callback) процедуре по сообщению WM_PAINT никаких действий не предусмотрено, то это сообщение будет обрабатывать ф-ция DefWindowProc, которая нарисует стандартную кнопку. Если надо нарисовать что-либо своё, по приходу WM_PAINT нужно вызвать ф-цию BeginPaint, она тебе вернёт hDC, который требует прорисовки. У тебя есть hDC,hWnd, получаешь координаты куска (через GetWindowRect) и рисуешь на этом hDC, в этих координатах к примеру через DrawIcon, какую-нибудь иконку. После этого вызываешь EndPaint и на этом обработка WM_PAINT закончена. Кнопка будет с иконой. Сообщение приходит каждый раз, когда кнопка была перекрыта другим объектом(окном) и потом она вышла на передний план. Если нужно, то WM_PAINT можно спровоцировать самому. Вызов InvalidateRect заставляет винду присылать тебе в callback это сообщение, ну а дальше то, что описано выше. Таков принцип рисования вручную.
На VB примера нет, не делал, на PowerBasic и на ассемблере делал, если разберёшься то пожалуйста.
А так могу нарисовать тебе примерчик на VB, но чуть позже, а то спать охота
Номер ответа: 58
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #58
Добавлено: 07.09.04 12:54
Нарисуй примерчик, пожалуйста
Номер ответа: 59
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #59
Добавлено: 07.09.04 13:55
Так, примерчик нарисовал. С манифестом рисует иконку на кнопке. Надпись тоже присутствует.
Пока делал, обратил внимание на такой момент:
Если с манифестом, то надо обрабатывать WM_PAINT.
Если без манифеста или стиль ХР отключен юзером, то кроме WM_PAINT надо обрабатывать и сообщения WM_LBUTTONDOWN,WM_LBUTTONUP тоже.
Как определить, включен стиль ХР или нет - где-то было об этом сказано, не помню только где.
Т.е. если стиль включен - обрабатываем WM_PAINT, если нет - плюс ещё и WM_LBUTTONDOWN,WM_LBUTTONUP.
При запуске из IDE манифест не работает, поэтому откомпилировать сначала и запускать сам ехешник.
Может, прямо здесь вывалить? Один модуль и всё. Больше ничего нет.
Номер ответа: 60
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #60
Добавлено: 07.09.04 13:58
Давай прям здесь - для всеобщего обозрения