PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 691 страница 720 из 1000

691

Код:
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_1
EndEnumeration

; Эта процедура определяет находится ли курсор мышки над заданым окном или гаджетом
Procedure IsMouseOver(wnd) 
 GetWindowRect_(wnd,re.RECT) 
 GetCursorPos_(pt.POINT) 
 Result.l = PtInRect_(@re, pt\x | (pt\y<<32) )
ProcedureReturn Result 
EndProcedure


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 40, 50, 135, 60, "")
      ButtonGadget(#Button_1, 305, 75, 160, 70, "")
     If CreatePopupImageMenu(5, #PB_Menu_ModernLook)
      MenuItem(1, "Добавить")
      MenuItem(2, "Удалить")
      
    EndIf
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat
  event=WaitWindowEvent()
  If event=#WM_RBUTTONDOWN
    If IsMouseOver(GadgetID(#Button_0))
      Debug "#Button_0"
    ElseIf IsMouseOver(GadgetID(#Button_1))
      Debug "#Button_1"
    EndIf
      DisplayPopupMenu(5, WindowID(#Window_0))
    
  EndIf


Until event=#PB_Event_CloseWindow

0

692

А если кнопок как звезд небесных?

Добавлено позже:

Сделал цикл проверки  в главном цикле. Благодарю Петр за помощь!

Отредактировано haav (23.09.2010 20:50:25)

0

693

haav написал(а):

А если кнопок как звезд небесных

6-то пост посмотри Создатель программ

0

694

Ну я почти так и сделал, или ты намекаешь на SetTimer?

0

695

На списки намекаю.

0

696

Всем привет...

По умолчанию, в системе при выделение текста и нажатии на Ctrl+C

текст копируется в буфер обмена...

Как скопировать через другие клавиши ?

Например Ctrl+Alt (хотя нажатие на Alt - не получилось перехватить.. )

То есть  нужна эфуляция пробовал с keybd_event_, но не знаю как правильно

keybd_event_(#VK_CONTROL,0 , 0 ,0)

keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)

потом получаю из буфера через GetClipboardText()...

Отредактировано mirashic (23.09.2010 21:40:07)

0

697

mirashic написал(а):

Как скопировать через другие клавиши ?
            Например Ctrl+Alt (хотя нажатие на Alt - не получилось перехватить.. )
            То есть  нужна эфуляция пробовал с keybd_event_, но не знаю как правильно
            keybd_event_(#VK_CONTROL,0 , 0 ,0)
            keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
            потом получаю из буфера через GetClipboardText()...
            Отредактировано mirashic (Сегодня 21:40:07)

Hotkey из друппи посмотри. Недавно код я выкладывал ПАНЕЛЬ в ней используются горячие клавиши. там только нужные функции из друппи взяты

Пётр написал(а):

На списки намекаю.

У меня они в списках изначально. Я без таких инструментов как списки и массивы вообще ничего сделать не могу  :D

Отредактировано haav (23.09.2010 21:48:26)

0

698

Как перехватывать- я знаю, как эмулировать Ctrl+C ?
или в HotKeys   это тоже есть ?

Отредактировано mirashic (23.09.2010 22:42:40)

0

699

Получилось...

Код:
;  Запустить программу, выделить любой текст на компе.
;   нажать кнопку  A (english)


Enumeration 
 #Window_0=333
 #Timer_1
EndEnumeration
ClearClipboard()  ;  очищаем буфер

Procedure CreateSkrinAll()  
               
 keybd_event_(#VK_CONTROL, 0,0,0) ; нажали Ctrl
 keybd_event_(67, 0,0,0)          ; нажали C
 Delay(100)
 keybd_event_(#VK_CONTROL, 0,#KEYEVENTF_KEYUP,0)   ; отпустили Ctrl
 keybd_event_(67,          0,#KEYEVENTF_KEYUP,0)   ; отпустили C

 Debug GetClipboardText()  ;  вывод из буфера 
EndProcedure


OpenWindow(#Window_0, 0, 0, 100, 80, "Окно", #PB_Window_SystemMenu |#PB_Window_ScreenCentered )

    HotKeysInit() ; Инициализация библиотеки HotKeys
    HotKeyAdd(WindowID(#Window_0), 65, @CreateSkrinAll(), "SkrinAll", 0,0,0)    ; Перехват кнопки А 
    AddWindowTimer(#Window_0, #Timer_1, 100)
           
Repeat
Event=HotkeyWaitWindowEvent()
Until Event=#PB_Event_CloseWindow

0

700

mirashic написал(а):

Получилось...

Молодец, пригодится пример....

0

701

Доброго времени суток))Ребят подскажите плиз! Есть EditorGadget  ButtonGadget, как сделать чтоб нажав на кнопку в текстовом поле добавлялась буква , ДОБАВЛЯЛАСЬ , а не изменяла текст на эту букву! Заранее спасибо! Лучше всего будет если ответ придет на мыло :-)

0

702

Я не совсем понял суть вопроса, но может это было надо?

Код:
Enumeration
  #Window_0
EndEnumeration


Enumeration
  #Editor_0
  #Button_0
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 220, 0, 389, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      EditorGadget(#Editor_0, 95, 20, 245, 85)
      ButtonGadget(#Button_0, 100, 160, 180, 45, "Добавляем букву А")
      
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat
  event=WaitWindowEvent()
  If event=#PB_Event_Gadget
    If EventGadget()=#Button_0
      SetGadgetText(#Editor_0,GetGadgetText(#Editor_0)+"А")
    EndIf
  EndIf  
Until event=#PB_Event_CloseWindow

0

703

Скажите,а можно ли склеить мой файл с всеми файлами в определённой папке заранее спасибо.

0

704

Склеить во время компиляции программы?

0

705

а можно так сделать что если передается какой нибудь файл, то передавался и мой файл?

0

706

автоматически

0

707

Сам хоть понял что написал?

0

708

ну примерно.т.е объяснить лучше или  нельзя такого сделать?

0

709

Arei написал(а):

объяснить лучше

Объясни по лучше.

0

710

Интересный раздел в книге:
PureBasic A beginners Guide To Computer Programming

Хороший программный стиль/Как свести к минимуму появление ошибок/OnError Library

- жаль, что всё написанное устарело.
и все описанные функции отсутствуют.
В последних версиях PB - функции другие и наверное лучше...
Читал справку и ничего не понял, примеров мало...

Может ввобще это не надо (включать команды из этой библиотеки в свои проэкты) ?

0

711

ну мне надо если человек передает на другой компьютер или выкладывает на файлообменник  то он то же ту да же приклеивается, ну или склеить 2 файла в 1 и запуск их синхронно.

0

712

mirashic написал(а):

Может ввобще это не надо

Иногда бывает полезным, отлавливать ошибки, скажем, для того чтобы сохранить данные, чтобы юзер их не потерял.

Arei написал(а):

ну мне надо если человек передает на другой компьютер или выкладывает на файлообменник  то он то же ту да же приклеивается, ну или склеить 2 файла в 1 и запуск их синхронно.

Видел ли другие проги, выполняющие эту задачу?

0

713

если честно нет, но почему нельзя придумать что нибудь.

0

714

Как сделать анимированную иконку в трее ?
Заменять разные картинки по таймеру ?

Отредактировано mirashic (29.09.2010 21:54:32)

0

715

mirashic написал(а):

Заменять разные картинки по таймеру ?

Да.

0

716

Такое получилось...
Может можно как-то упростить?
Адрес памяти наверно нельзя как-то представить
?icon1  ?icon+1  ?icon+2
и загнать в цикл ?

Код:
Enumeration 
 #Window_0
 #tray
 #icon1
 #tamer
EndEnumeration
Global a
Procedure ICON_TRAY()
If EventTimer()=#tamer
 a=a+1 
 If a=1
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon1))
 ElseIf a=2
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon2))
 ElseIf a=3
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon3))
 ElseIf a=4
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon4))
 ElseIf a=5
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon5))
 ElseIf a=6
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon6))
 ElseIf a=7
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon7))
 ElseIf a=8
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon8))
 ElseIf a=9
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon9))
 ElseIf a=10
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon10))
 ElseIf a=11
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon11))
 ElseIf a=12
  ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon12))
  a=0
 EndIf 
 EndIf   
EndProcedure 

OpenWindow(#Window_0,0,0,400,200,"Заглавие",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
AddSysTrayIcon(#tray,WindowID(#Window_0),CatchImage(#icon1,?icon1)) 
AddWindowTimer(#Window_0, #tamer, 100)

Repeat
Event  =WaitWindowEvent() 
Window =EventWindow() 
Gadget =EventGadget()
   Select Event
        Case #PB_Event_Timer
          ICON_TRAY()
        Case #PB_Event_Gadget
          Select EventGadget()
             Case 1
             Case 2
             Case 3
          EndSelect
   EndSelect
If Event = #PB_Event_CloseWindow
Break    
EndIf
ForEver
DataSection 
 icon1:  IncludeBinary "1.ico"
 icon2:  IncludeBinary "2.ico"
 icon3:  IncludeBinary "3.ico"
 icon4:  IncludeBinary "4.ico"
 icon5:  IncludeBinary "5.ico"
 icon6:  IncludeBinary "6.ico"
 icon7:  IncludeBinary "7.ico"
 icon8:  IncludeBinary "8.ico"
 icon9:  IncludeBinary "9.ico"
 icon10: IncludeBinary "10.ico"
 icon11: IncludeBinary "11.ico"
 icon12: IncludeBinary "12.ico"
EndDataSection

архив

0

717

К сожалению, адреса меток нельзя получать в цикле.

0

718

Добавляем после каждой строки

ChangeSysTrayIcon(#tray,  CatchImage(#icon1,?icon1))

функцию из Друпии   (только меняем метки)

SetWindowIcon(WindowID(0),CatchImage(#icon1,?icon1))

и появляется анимация иконки окна...

0

719

Пётр, как-то вы делились громоским кодом получения иконки, в зависимости от ассоциации файла.

В Друпии есть готовая функция GetExtensionIcon("pb", 0)

(скорее всего это одно и тоже, и как правило Друпия установлена, проще использовать готовую функцию)

0

720

mirashic написал(а):

В Друпии есть готовая функция GetExtensionIcon("pb", 0)

Тот код был основан на этой функции, но в отличие от неё, не глючит при большом количестве извлекаемых иконок.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка