Вопрос: Помогите с иконкой | Добавлено: 28.08.04 18:25 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 64 |
Номер ответа: 46 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 10 |
Профиль | Цитата | #46 | Добавлено: 29.08.04 15:57 |
Ну вот вроде кое-что про иконки стало ясно.
cresta огромное спасибо |
Номер ответа: 47 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #47 | Добавлено: 29.08.04 16:05 |
Пожалуйста. |
Номер ответа: 48 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #48 | Добавлено: 01.09.04 08:49 |
Вопрос по теме. Как сделать чтобы рисунок у Graphical кнопки был не сверху, а слева от надписи, как в дельфе или тулбаре? |
Номер ответа: 49 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #49 | Добавлено: 01.09.04 09:28 |
Наверное всё-таки рисовать вручную. |
Номер ответа: 50 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #50 | Добавлено: 06.09.04 23:51 |
Народ, а все-таки неужто нельзя разместить картинку на кнопке в стле ХР (с манифестом)?
Неужели один выход - рисовать ее? Ведь куча примеров есть где на кнопках в стиле ХР сидит картинка: Total Commander CorelDRAW 11 Photoshop 7 и еще несколько видел... Почему-то я не верю что в этих программах кнопки нарисованы... |
Номер ответа: 51 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #51 | Добавлено: 07.09.04 00:16 |
Почему-то я не верю что в этих программах кнопки нарисованы...
А что, по-твоему, они прибиты гвоздём что-ли?. Всё, что видно на экране монитора, именно "нарисовано". Раз дядя не хочет за тебя рисовать, придётся самому, либо обойтись без иконки. |
Номер ответа: 52 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #52 | Добавлено: 07.09.04 00:28 |
Под словом рисовать я имел ввиду рисование в каком-нибудь графическом редакторе.
Я не верю что в этих программах кнопки нарисованы в Photoshop... Всё, что видно на экране монитора, именно "нарисовано" Нарисовано в чем? |
Номер ответа: 53 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #53 | Добавлено: 07.09.04 01:01 |
В комплекте с VB6 есть такая тулза - SPYXX.EXE, запусти, наведи перекрестие на интересующий объект и посмотри, какой класс покажет. Если статик - значит в графическом редакторе рисовалось. Если буттон - значит обычная кнопка сабкласится и впечатывается в неё иконка (или битмап). Для интереса сделал это с Тотал Командиром - кнопки показывают класс TButton.
В большинстве своём это кнопки, а не рисованые в графическом редакторе картинки, которые подгружаются по тем или иным сообщениям\событиям. А "рисуется" кнопка соответственно Апями. |
Номер ответа: 54 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #54 | Добавлено: 07.09.04 01:05 |
Вот я и хотел бы примерчик раздобыть где-нито ![]() Ты случаем не знаешь такого? |
Номер ответа: 55 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #55 | Добавлено: 07.09.04 01:54 |
В смысле как кнопку самому отрисовывать? |
Номер ответа: 56 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #56 | Добавлено: 07.09.04 02:00 |
Картинку на кнопке со стилем ХР
Если не ошибаюсь, кнопка рисутеся CreateWindowEx? |
Номер ответа: 57 Автор ответа: ![]() ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #58 | Добавлено: 07.09.04 12:54 |
Нарисуй примерчик, пожалуйста ![]() |
Номер ответа: 59 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #59 | Добавлено: 07.09.04 13:55 |
Так, примерчик нарисовал. С манифестом рисует иконку на кнопке. Надпись тоже присутствует.
Пока делал, обратил внимание на такой момент: Если с манифестом, то надо обрабатывать WM_PAINT. Если без манифеста или стиль ХР отключен юзером, то кроме WM_PAINT надо обрабатывать и сообщения WM_LBUTTONDOWN,WM_LBUTTONUP тоже. Как определить, включен стиль ХР или нет - где-то было об этом сказано, не помню только где. Т.е. если стиль включен - обрабатываем WM_PAINT, если нет - плюс ещё и WM_LBUTTONDOWN,WM_LBUTTONUP. При запуске из IDE манифест не работает, поэтому откомпилировать сначала и запускать сам ехешник. Может, прямо здесь вывалить? Один модуль и всё. Больше ничего нет. |
Номер ответа: 60 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #60 | Добавлено: 07.09.04 13:58 |
Давай прям здесь - для всеобщего обозрения ![]() |
|