purebasic.info

PureBasic forum
Текущее время: Пн дек 17, 2018 10:40 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Графический hyperlink gadget
СообщениеДобавлено: Пт сен 28, 2007 10:21 am 
Не в сети
док

Зарегистрирован: Вт сен 18, 2007 9:16 am
Сообщений: 162
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ну-с, начнем.
В Пурике есть гаджет-ссылка, но она чисто текстовая. Мой вариант использует картинку.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Structure HYPERLINK
  id.l
  x.l
  y.l
  cx.l
  cy.l
  norm.l
  link.s
  hWnd.l
EndStructure
 
Global NewList hyperlink.HYPERLINK()
 
Procedure HLinkWndProc(WindowID, Message, wParam, lParam)
   ResetList(hyperlink())
   While NextElement(hyperlink())
     With hyperlink()  
       If IsGadget(\Id)
         If GadgetID(\Id) = WindowID
          SetCursor_(LoadCursor_(0, #IDC_HAND))
           If Message = #WM_LBUTTONUP
              ShellExecute_(\hWnd,"open",\link,"","",#SW_SHOWNORMAL)
           EndIf
           Break      
         EndIf
       EndIf
     EndWith
   Wend  
   ProcedureReturn CallWindowProc_(GetProp_(WindowID,"OldProc"),WindowID,Message,wParam,lParam)  
EndProcedure
 
Procedure SkinHyperLinkGadget(Id.l, x.l, y.l, link.s, *norm)
  Protected iNorm = CatchImage(#PB_Any, *norm)
  Protected cx = ImageWidth(iNorm)
  Protected cy = ImageHeight(iNorm)
  ResetList(hyperlink())        
  AddElement(hyperlink())
  With hyperlink()      
    \Id     = Id        
    \norm   = *norm    
    \cx     = cx
    \cy     = cy
    \link   = link    
    Protected hWnd = ImageGadget(Id, x, y, cx, cy, ImageID(iNorm))
    \hWnd = GetParent_(hWnd)
  EndWith
  SetProp_(GadgetID(Id),"OldProc", SetWindowLong_(GadgetID(Id), #GWL_WNDPROC, @HLinkWndProc()))
EndProcedure



Использование:

Код:
1
SkinHyperLinkGadget(1, 23, 55, "http://tubergame.com", ?backImage)



Можно конечно и доработать, чтобы вместо Id указывать #PB_Any

Количество экземпляров как понимаете ограничено только максимальным количеством гаджетов на приложение

_________________
Люди!! Уважайте друг друга!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB