Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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
Давай прям здесь - для всеобщего обозрения :)


Ответить

Страница: 1 | 2 | 3 | 4 | 5 |

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



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