Он там есть.
Вопросы новичка (продолжение…)
Сообщений 691 страница 720 из 990
Поделиться69218.04.2012 20:28:40
Procedure LOWORD(Value) ; Макрокоманда извлекает младшее слово из данного 32-разрядного значения (левый индикатор ур) ProcedureReturn Value & $FFFF EndProcedure Procedure HIWORD(Value) ; Макрокоманда извлекает старшее слово из данного 32-разрядного значения (правый индикатор ур) ProcedureReturn (Value >> 16) & $FFFF EndProcedure
Поделиться69318.04.2012 21:11:30
Теперь выдает ошибку макроса: имя процедуры должно начинаться с буквы(a-z or _).
Поделиться69419.04.2012 18:07:24
Сделал так:
level=BASS_ChannelGetLevel(handle) L=level & $FFFF R=(level >> 16) & $FFFF
Все заработало.
Поделиться69519.04.2012 18:44:19
Макрос делал тоже самое, поэтому и заработало.
Поделиться69626.04.2012 02:58:36
кто нибуть работал с api RegGetKeySecurity and RegSetKeySecurity ?
Ни как не могу с ними совладать,не получить корректного ответа от функции,не сменить атрибут,вообщем не могу с ними совладать и всё,бьюсь уже больше трёх часов и всё без столку,гугл ни чего не дал.
Если кто может,приведите пример использование этих двух функций,пожалуйста.
Поделиться69726.04.2012 10:25:35
ты свой код выложи, а мы поправим где ошибка
Поделиться69826.04.2012 13:39:20
кто нибуть работал с api RegGetKeySecurity and RegSetKeySecurity ?
;HKEY_LOCAL_MACHINE\SECURITY\Policy #DACL_SECURITY_INFORMATION = 4 nLengthNeeded.l = 0 If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "SECURITY\Policy", 0, #KEY_ALL_ACCESS, @hKey) = #ERROR_SUCCESS ; Узнаем размер буфера fResult = RegGetKeySecurity_(hKey, #DACL_SECURITY_INFORMATION, 0, @nLengthNeeded) If nLengthNeeded = 0 MessageBox_(0, "RegGetKeySecurity failed with error code : " + Str(fResult), "Error", 0) End EndIf *oldSD.l = AllocateMemory(nLengthNeeded) ; выделяем память под буфер If *oldSD FillMemory(*oldSD, nLengthNeeded) fResult = RegGetKeySecurity_(hKey, #DACL_SECURITY_INFORMATION, *oldSD, @nLengthNeeded) If fResult = #ERROR_SUCCESS ; ... Else MessageBox_(0, "RegGetKeySecurity failed with error code : " + Str(fResult), "Error", 0) EndIf FreeMemory(*oldSD) EndIf EndIf
Тут посмотри , Тут и Тут
Отредактировано crc (26.04.2012 14:50:55)
Поделиться69926.04.2012 15:00:55
crc огромнейшие спасибо.
Поделиться70026.04.2012 21:40:22
Есть возможность отслеживать по этим ключам:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB
историю соединения флеш накопителей,ключи защищены и простым regdelete их не удалишь.
Нужно вообщем снять защиту с этих ключей и удалить их,думал получится самому разобраться,но судя по всему,не доходит до идиота.
Не получается не то что получить нужный дакл,не получается даже его открыть,хотя программа запускается от имени администратора.
Возможно ли как нибудь снять атрибуты не открывая сам ключ?
Пробовал выше приведённый пример.
Поделиться70105.05.2012 15:47:15
В CodeArchiv нашел LoadAdditionalFonts:
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1651&highlight= ; Author: GPI (updated for PB4.00 by blbltheworm) ; Date: 08. July 2003 ; OS: Windows ; Demo: No #Dir_Font = 0 Procedure LoadAdditionalFonts(Dir$) ExamineDirectory(#Dir_Font,"Style\","*.TTF") While NextDirectoryEntry(#Dir_Font) AddFontResource_("Style\"+DirectoryEntryName(#Dir_Font)) Wend ExamineDirectory(#Dir_Font,"Style\","*.FON") While NextDirectoryEntry(#Dir_Font) AddFontResource_("Style\"+DirectoryEntryName(#Dir_Font)) Wend SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0) EndProcedure Procedure UnLoadAdditionalFonts(Dir$) ExamineDirectory(#Dir_Font,"Style\","*.TTF") While NextDirectoryEntry(#Dir_Font) RemoveFontResource_("Style\"+DirectoryEntryName(#Dir_Font)) Wend ExamineDirectory(#Dir_Font,"Style\","*.FON") While NextDirectoryEntry(#Dir_Font) RemoveFontResource_("Style\"+DirectoryEntryName(#Dir_Font)) Wend SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0) EndProcedure
Как я понял эта прога проверяет на наличие шрифтов *.TTF. Где можно посмотреть пример работы с такими шрифтами?
Поделиться70205.05.2012 15:59:28
Первая процедура ищет в заданной папке файлы шрифтов и инсталлирует их в систему.
Вторая процедура деинсталлирует шрифты.
Поделиться70305.05.2012 16:08:16
Первая процедура ищет в заданной папке файлы шрифтов и инсталлирует их в систему.
Вторая процедура деинсталлирует шрифты.
Где тогда можно посмотреть пример работы с такими шрифтами?
Поделиться70405.05.2012 16:17:02
TTF шрифт это например, Arial.
Пример из справки.
If OpenWindow(0, 0, 0, 222, 130, "SetGadgetFont", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) If LoadFont(0, "Arial", 16) SetGadgetFont(#PB_Default, FontID(0)) ; Set the loaded Arial 16 font as new standard EndIf ButtonGadget(0, 10, 10, 200, 30, "Button - Arial 16") SetGadgetFont(#PB_Default, #PB_Default) ; Set the font settings back to original standard font ButtonGadget(1, 10, 50, 200, 30, "Button - standard") If LoadFont(1,"Courier",10, #PB_Font_Bold|#PB_Font_Underline) SetGadgetFont(#PB_Default, FontID(1)) ; Set the loaded Courier 10 font as new standard EndIf TextGadget(2, 10, 90, 200, 40, "Bold + underlined Courier 10 Text", #PB_Text_Center) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
Поделиться70505.05.2012 16:27:40
А как использовать свой, не загружая в систему, например этот?
Поделиться70705.05.2012 17:01:12
Спасибо. У меня правда Хрюша. Сейчас попробую.
Поделиться70805.05.2012 17:15:28
Спасибо, работает.
Поделиться70911.05.2012 13:52:44
Здравствуйте...
У меня такой вопрос, можно ли протащить спрайт поверх фона или спрайтов не обновляя постоянно экран чтобы избежать затирания.
Пишу игру, и у меня планируется огромная куча объектов, не уверен что будет всё быстро работать.
Отредактировано Phoenix (11.05.2012 13:56:32)
Поделиться71011.05.2012 14:17:36
Сначала нужно отобразить спрайт фона, а затем спрайты, располагающиеся на этом фоне.
планируется огромная куча объектов, не уверен что будет всё быстро работать
Примерно сколько?
Некоторое время назад тестировали скорость прорисовки и в тесте было около 30 тысяч спрайтов и не тормозило, даже с проверкой коллизий.
Поделиться71111.05.2012 14:23:10
Пётр, значит та двойная буферизация должна справиться.
У меня конечно меньше до сотни где-то если с пульками считать...
Тогда думаю всё только в обработку событий упираться будет...
Спасибо.
Поделиться71214.06.2012 19:48:25
Вопрос по указателям:
Заполнить массив можно как-то так
Dim Arr(10) For i=0 To 10 *PArr=@Arr(i) PokeI(*PArr, i) Debug Arr(i) Next
Можно ли получить из массива данные по указателю?
Поделиться71314.06.2012 20:54:24
Dim Arr(10) For i=0 To 10 *PArr=@Arr(i) PokeI(*PArr, i) Debug PeekI(*PArr) Next
Поделиться71414.06.2012 21:03:50
А работать с указателем как с массивом не выйдет?
То есть, зная адрес массива (*PArr=@Arr) и номер элемента, получить значение из массива.
Поделиться71514.06.2012 23:50:47
зная адрес массива (*PArr=@Arr) и номер элемента, получить значение из массива.
как получить элементs массива имея только указатель на массив?
Поделиться71616.06.2012 17:07:23
Спасибо. Ответ как всегда исчерпывающий)
Поделиться71720.06.2012 10:51:33
Есть код:
Procedure.d A() ProcedureReturn 0.5 EndProcedure *Proc=@A() a.d=CallFunctionFast(*Proc) Debug a Procedure B() ProcedureReturn 10 EndProcedure *Proc=@B() B=CallFunctionFast(*Proc) Debug B
В случае "А", CallFunctionFast возвращает неверное значение. Почему? Заранее спасибо.
Поделиться71820.06.2012 10:57:39
В случае "А", CallFunctionFast возвращает неверное значение. Почему?
Потому что:
Примечание: Эта функция не особенно гибка и не обрабатывает строковые/плавающие/двойные плавающие/четверные параметры или строковые/плавающие/двойные плавающие/четверные возвращаемые значения. Настоятельно рекомендуется использование прототипов.
http://purebasic.ru/manual.php?id=646&lng=rus
Нужно использовать прототипы.
Поделиться71903.08.2012 22:37:41
Имеется такая вот программка, которая открывает два окна, главное и дочернее.
Procedure Window(ParentWindow) Window=OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, 300,200, "Окно Dll", #PB_Window_SystemMenu|#PB_Window_TitleBar, WindowID(ParentWindow)) If IsWindow(Window) DisableWindow(ParentWindow, 1) Repeat Event=WindowEvent() Select event Case #PB_Event_Gadget Select EventGadget() EndSelect EndSelect Until Event=#PB_Event_CloseWindow CloseWindow(Window) DisableWindow(ParentWindow, 0) ProcedureReturn 1 EndIf ProcedureReturn 0 EndProcedure If OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 200, "Главное окно") ButtonGadget(0, 5, 5, 100, 20, "Открыть окно") Window(0) Repeat Event=WindowEvent() Select event Case #PB_Event_Gadget Select EventGadget() Case 0 Window(0) EndSelect EndSelect Until Event=#PB_Event_CloseWindow EndIf
Я попытался перенести функцию Window() в Dll. Вот код
ProcedureDLL DllWindow(ParentWindow) Window=OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, 300,200, "Окно Dll", #PB_Window_SystemMenu|#PB_Window_TitleBar, WindowID(ParentWindow)) If IsWindow(Window) DisableWindow(ParentWindow, 1) Repeat Event=WindowEvent() Select event Case #PB_Event_Gadget Select EventGadget() EndSelect EndSelect Until Event=#PB_Event_CloseWindow CloseWindow(Window) DisableWindow(ParentWindow, 0) ProcedureReturn 1 EndIf ProcedureReturn 0 EndProcedure ;Открывалка If OpenLibrary(0, "My.dll") If OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 200, "Главное окно") ButtonGadget(0, 5, 5, 100, 20, "Открыть окно") CallFunction(0, "DllWindow", 0) Repeat Event=WindowEvent() Select event Case #PB_Event_Gadget Select EventGadget() Case 0 CallFunction(0, "DllWindow", 0) EndSelect EndSelect Until Event=#PB_Event_CloseWindow EndIf CloseLibrary(0) EndIf
И столкнулся с проблемой. Процедуры WindowID() и DisableWindow() перестают работать, т. к. значение ParentWindow для них "чуждо".
Как можно обойти эту проблему?
Поделиться72003.08.2012 22:44:26
И столкнулся с проблемой. Процедуры WindowID() и DisableWindow() перестают работать, т. к. значение ParentWindow для них "чуждо".
Как можно обойти эту проблему?
Нужно передавать хэндл ParentWindow.
Window=OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, 300,200, "Окно Dll", #PB_Window_SystemMenu|#PB_Window_TitleBar, ParentWindow)
CallFunction(0, "DllWindow", WindowID(0))
В место DisableWindow(), нужно использовать WinAPI функцию EnableWindow_().
Похожие темы
Какая версия? | OffTop | 03.10.2021 |
Мне постоянно пищет вот это | Вопросы по PureBasic | 14.10.2011 |
Размер экрана в пикселях | Вопросы по PureBasic | 13.02.2011 |
консоль | Вопросы по PureBasic | 19.03.2015 |
Полноэкранные приложения на purebasic | Вопросы по PureBasic | 08.03.2011 |