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
Вопросы новичка
Сообщений 691 страница 720 из 1000
Поделиться69123.09.2010 20:33:23
Поделиться69223.09.2010 20:34:52
А если кнопок как звезд небесных?
Добавлено позже:
Сделал цикл проверки в главном цикле. Благодарю Петр за помощь!
Отредактировано haav (23.09.2010 20:50:25)
Поделиться69323.09.2010 20:56:51
А если кнопок как звезд небесных
6-то пост посмотри Создатель программ
Поделиться69423.09.2010 21:08:02
Ну я почти так и сделал, или ты намекаешь на SetTimer?
Поделиться69523.09.2010 21:34:39
На списки намекаю.
Поделиться69623.09.2010 21:38:32
Всем привет...
По умолчанию, в системе при выделение текста и нажатии на 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)
Поделиться69723.09.2010 21:47:32
Как скопировать через другие клавиши ?
Например 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 из друппи посмотри. Недавно код я выкладывал ПАНЕЛЬ в ней используются горячие клавиши. там только нужные функции из друппи взяты
На списки намекаю.
У меня они в списках изначально. Я без таких инструментов как списки и массивы вообще ничего сделать не могу
Отредактировано haav (23.09.2010 21:48:26)
Поделиться69823.09.2010 22:41:07
Как перехватывать- я знаю, как эмулировать Ctrl+C ?
или в HotKeys это тоже есть ?
Отредактировано mirashic (23.09.2010 22:42:40)
Поделиться69924.09.2010 00:13:06
Получилось...
; Запустить программу, выделить любой текст на компе. ; нажать кнопку 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
Поделиться70024.09.2010 06:00:03
Получилось...
Молодец, пригодится пример....
Поделиться70125.09.2010 15:37:20
Доброго времени суток))Ребят подскажите плиз! Есть EditorGadget ButtonGadget, как сделать чтоб нажав на кнопку в текстовом поле добавлялась буква , ДОБАВЛЯЛАСЬ , а не изменяла текст на эту букву! Заранее спасибо! Лучше всего будет если ответ придет на мыло
Поделиться70225.09.2010 16:04:02
Я не совсем понял суть вопроса, но может это было надо?
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
Поделиться70327.09.2010 20:10:28
Скажите,а можно ли склеить мой файл с всеми файлами в определённой папке заранее спасибо.
Поделиться70427.09.2010 21:28:19
Склеить во время компиляции программы?
Поделиться70527.09.2010 23:02:24
а можно так сделать что если передается какой нибудь файл, то передавался и мой файл?
Поделиться70627.09.2010 23:03:28
автоматически
Поделиться70727.09.2010 23:21:22
Сам хоть понял что написал?
Поделиться70828.09.2010 06:44:23
ну примерно.т.е объяснить лучше или нельзя такого сделать?
Поделиться70928.09.2010 12:26:05
объяснить лучше
Объясни по лучше.
Поделиться71028.09.2010 14:24:45
Интересный раздел в книге:
PureBasic A beginners Guide To Computer Programming
Хороший программный стиль/Как свести к минимуму появление ошибок/OnError Library
- жаль, что всё написанное устарело.
и все описанные функции отсутствуют.
В последних версиях PB - функции другие и наверное лучше...
Читал справку и ничего не понял, примеров мало...
Может ввобще это не надо (включать команды из этой библиотеки в свои проэкты) ?
Поделиться71128.09.2010 15:42:58
ну мне надо если человек передает на другой компьютер или выкладывает на файлообменник то он то же ту да же приклеивается, ну или склеить 2 файла в 1 и запуск их синхронно.
Поделиться71228.09.2010 18:28:05
Может ввобще это не надо
Иногда бывает полезным, отлавливать ошибки, скажем, для того чтобы сохранить данные, чтобы юзер их не потерял.
ну мне надо если человек передает на другой компьютер или выкладывает на файлообменник то он то же ту да же приклеивается, ну или склеить 2 файла в 1 и запуск их синхронно.
Видел ли другие проги, выполняющие эту задачу?
Поделиться71328.09.2010 22:32:35
если честно нет, но почему нельзя придумать что нибудь.
Поделиться71429.09.2010 21:51:59
Как сделать анимированную иконку в трее ?
Заменять разные картинки по таймеру ?
Отредактировано mirashic (29.09.2010 21:54:32)
Поделиться71529.09.2010 22:57:33
Заменять разные картинки по таймеру ?
Да.
Поделиться71629.09.2010 23:45:07
Такое получилось...
Может можно как-то упростить?
Адрес памяти наверно нельзя как-то представить
?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
Поделиться71730.09.2010 00:37:37
К сожалению, адреса меток нельзя получать в цикле.
Поделиться71830.09.2010 11:24:06
Добавляем после каждой строки
ChangeSysTrayIcon(#tray, CatchImage(#icon1,?icon1))
функцию из Друпии (только меняем метки)
SetWindowIcon(WindowID(0),CatchImage(#icon1,?icon1))
и появляется анимация иконки окна...
Поделиться71930.09.2010 11:43:51
Пётр, как-то вы делились громоским кодом получения иконки, в зависимости от ассоциации файла.
В Друпии есть готовая функция GetExtensionIcon("pb", 0)
(скорее всего это одно и тоже, и как правило Друпия установлена, проще использовать готовую функцию)
Поделиться72030.09.2010 13:47:45
В Друпии есть готовая функция GetExtensionIcon("pb", 0)
Тот код был основан на этой функции, но в отличие от неё, не глючит при большом количестве извлекаемых иконок.
Похожие темы
Вопросы новичка (продолжение…) | Вопросы по PureBasic | 29.06.2024 |
Скорее, это теоретический вопрос о правах в директории. | OffTop | 16.09.2022 |
Вопрос по отладке | Вопросы по PureBasic | 26.01.2017 |
Три вопроса по созданию браузера. | Вопросы по PureBasic | 01.11.2010 |
вопрос о точности типов данных | Вопросы по PureBasic | 20.05.2021 |