purebasic.info

PureBasic forum
Текущее время: Вт мар 26, 2019 11:51 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Перевод код архива winapi_library
СообщениеДобавлено: Сб мар 09, 2019 6:07 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 422
Благодарил (а): 32 раз.
Поблагодарили: 46 раз.
Пункты репутации: 0
Решил сделать отдельную тему, так как это может занять не один месяц.
Сделал перевод всех имён файлов и содержимого раздела "OpenWindow"

Файлы с проблемами
"Текст заголовка справа (Не работает).pb"
"Определить использ. ЦП (не работает).pb"
"Перерисовать окно.pb" - нет видимой реакции, я даже подумал о UpdateWindow_ и RedrawWindow_
"Тонкие границы окна.pb" и "Двойная граница окна.pb" у меня дают одинаковую обычную границы окна.

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

Обновил, 11 папок переведено


Вложения:
Добавлено ListIcon.7z [44.7 KiB]
Скачиваний: 8


Последний раз редактировалось AZJIO Пн мар 11, 2019 4:28 pm, всего редактировалось 6 раз(а).
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод код архива winapi_library
СообщениеДобавлено: Сб мар 09, 2019 6:54 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 780
Благодарил (а): 2 раз.
Поблагодарили: 37 раз.
Пункты репутации: 9
Зачем удалять кнопки если можно их не создавать,или это для чужого окна? :roll:
Код:
1
2
3
4
5
6
7
 
If OpenWindow(0,0,0,500,250,"Пример",#PB_Window_SystemMenu|#PB_Window_ScreenCentered);|#PB_Window_MaximizeGadget
  ;SetWindowLongPtr_(WindowID(0),#GWL_STYLE,GetWindowLongPtr_(WindowID(0),#GWL_STYLE)&(#WS_MAXIMIZEBOX!-1))
  ;SetWindowPos_(WindowID(0),0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод код архива winapi_library
СообщениеДобавлено: Сб мар 09, 2019 7:09 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 422
Благодарил (а): 32 раз.
Поблагодарили: 46 раз.
Пункты репутации: 0
Сергейчик писал(а):
Зачем удалять кнопки если можно их не создавать,или это для чужого окна? :roll:

Зачем в листвью есть функции удаления пунктов RemoveGadgetItem(), если можно их не создавать. Вот примерно ответ тот же. К тому же автор поигрался с переназначениями стилей и решил это показать в виде примеров, а надо ли тебе это сейчас или потом как говорится никто не принуждает.


Последний раз редактировалось AZJIO Сб мар 09, 2019 7:11 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод код архива winapi_library
СообщениеДобавлено: Сб мар 09, 2019 7:11 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6503
Благодарил (а): 28 раз.
Поблагодарили: 211 раз.
Пункты репутации: 57
AZJIO писал(а):
Файлы с проблемами
"Текст заголовка справа (Не работает).pb"

На win7 работает.
"Определить использ. ЦП (не работает).pb"
Просто старый синтаксис. Исправляется легко
Код:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
; Автор: dell_jockey
 
EnableExplicit
 
Define ev
Global gCurrentUsage.d
 
#EMA_Samples = 20
 
Procedure.d EMA_smoothing(raw.d, samples.w)
  Static Alpha.d
  Protected CurrentEMA.d
  Static PriorEMA.d
 
  Alpha.d = 2 / (samples.w + 1)
  CurrentEMA.d = priorEMA.d + (Alpha.d * (raw.d - priorEMA.d))
  PriorEMA.d = CurrentEMA.d
 
  ProcedureReturn CurrentEMA.d
EndProcedure
 
Procedure MonitorCPU(void)
  Protected creation.FILETIME
  Protected exit.FILETIME
  Protected kernel.FILETIME
  Protected user.FILETIME
  Protected sysinfo.SYSTEM_INFO
  Protected numprocs
  Protected h
  Protected oldkernel
  Protected olduser
  Protected rawCurrentUsage.d
 
  GetSystemInfo_(@sysinfo)
  numprocs = sysinfo\dwNumberOfProcessors
 
  h = OpenProcess_(#PROCESS_QUERY_INFORMATION, #False, GetCurrentProcessId_())
  GetProcessTimes_(h,@creation,@exit,@kernel,@user)
  oldkernel=kernel\dwlowdatetime
  olduser=user\dwlowdatetime
  Delay(500)
 
  Repeat
    GetProcessTimes_(h,@creation,@exit,@kernel,@user)
    rawCurrentUsage.d = ((((user\dwlowdatetime-olduser)+(kernel\dwlowdatetime-oldkernel))/500)/100)/numprocs
    gCurrentUsage.d = EMA_smoothing(rawCurrentUsage.d, #EMA_Samples)
    olduser=user\dwlowdatetime
    oldkernel=kernel\dwlowdatetime
    Delay(500)
  ForEver
EndProcedure
 
CreateThread(@MonitorCPU(),0)
 
InitSprite()
;InitSprite3D()
 
OpenWindow(0,0,0,640,480,"CPU Load Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
 
CreateSprite(0, 128,128, #PB_Sprite_AlphaBlending )
If StartDrawing(SpriteOutput(0))
  Box(0,0,128,128,#Red)
 
  StopDrawing()
EndIf
 
 
CopySprite(0,1)
CopySprite(0,2)
SpriteQuality(1)
 
Repeat
  ClearScreen(0)
 
  If StartDrawing(ScreenOutput())
    DrawText(0,0,"CPU Usage: "+StrD(gCurrentUsage,2)+"%", #White, #Black)
 
    StopDrawing()
  EndIf
 
   
    RotateSprite (0,1,1)
    RotateSprite (1,1,1)
    RotateSprite (2,1,1)
    DisplaySprite (0,100,100)
    DisplaySprite (1,250,100)
    DisplaySprite (2,400,100)
 
 
 
  FlipBuffers()
  Delay(1)
  ev = WindowEvent()
Until ev = #PB_Event_CloseWindow
 


AZJIO писал(а):
"Перерисовать окно.pb" - нет видимой реакции

А что там должно быть? Окно вновь создано, и перерисовку этот код явно не сможет показать.
Нужен более информативный пример, где нужна явная перерисовка.
AZJIO писал(а):
"Тонкие границы окна.pb" и "Двойная граница окна.pb" у меня дают одинаковую обычную границы окна.

Этот код зависит от стилей Винды, потому не имеет ценности. Может где то на XP и работает.

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод код архива winapi_library
СообщениеДобавлено: Вс мар 10, 2019 6:21 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 422
Благодарил (а): 32 раз.
Поблагодарили: 46 раз.
Пункты репутации: 0
Что нового

В "Гаджет ExplorerTree" было много файлов с использованием TreeGadget, я все переделал на ExplorerTree, кроме "Удаляет флажок.pb"

TextGadget 9 стилей
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
; Описание всех стилей
; https://docs.microsoft.com/en-us/windows/desktop/controls/Static-control-styles
EnableExplicit
 
Define w
 
If OpenWindow(0, 0, 0, 300, 400, "Пример", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  w = WindowWidth(0)
  TextGadget(1, 10, 10, 100, 2, "", #SS_ETCHEDHORZ)
  TextGadget(2, 55, 15, 2, 30, "", #SS_ETCHEDVERT)
  TextGadget(3, 10, 50, w-20, 20, "#PB_Text_Border - 3D-рамка ярче выраженная", #PB_Text_Border)
  TextGadget(4, 10, 75, w-20, 20, "SS_SUNKEN - 3D-рамка", #SS_SUNKEN)
  TextGadget(5, 10, 100, w-20, 20, "WS_BORDER - чёрная рамка", #WS_BORDER)
;   TextGadget(6, 10, 205, 250, 20, "18", #SS_ETCHEDFRAME) ; текст не отображается
  TextGadget(6, 10, 125, w-20, 70, "Центрируется по вертикали", #PB_Text_Center | #SS_CENTERIMAGE | #WS_BORDER)
  TextGadget(7, 10, 200, 150, 35, "Без переноса строки на следующую", #SS_LEFTNOWORDWRAP | #WS_BORDER)
  TextGadget(8, 10, 240, 150, 20, "Многоточие если текст не умещается", #WS_BORDER | #SS_WORDELLIPSIS) ; многоточие
  TextGadget(9, 10, 265, 200, 20, "C:\Program Files (x86)\Notepad++\plugins\NppConverter", #WS_BORDER | #SS_PATHELLIPSIS) ; многоточие для путей
  TextGadget(11,10,290,w-20,20,"Выравнивание справа",#SS_RIGHT | #WS_BORDER)
  TextGadget(12,10,315,w-20,20,"По центру",#SS_CENTER | #WS_BORDER)
  TextGadget(13,10,340,w-20,20,"Слева (по умолчанию)", #WS_BORDER)
 
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


решил глянуть а что же в TextGadget (Гаджет Text (надпись)), так там по одному стилю на пример и то не все, ну почему это не засунуть в один?
Что интересно в файле "Использование RTF как TextGadget.pb" показан пример использования сырого режима RTF

Изменение пространства на иконку... Смущает откуда здесь число 65536? я в разделе ExplorerList заменил просто указав 90, но это повторяется уже в разделе ListIcon и я же думаю имею ли право изменять код и выдавать потом как оригинал? В предыдущем даже реакции не было из-за запредельного числа. Вернул назад, похоже тут два числа в одном.
Код:
1
2
3
  x = 100
  y = 50
  SendMessage_(GadgetID(1), #LVM_SETICONSPACING, 0, y * 65536 + x)



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод код архива winapi_library
СообщениеДобавлено: Пн мар 11, 2019 4:33 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 422
Благодарил (а): 32 раз.
Поблагодарили: 46 раз.
Пункты репутации: 0
Добавил ListIcon. Там пример Группы.pb имеет проблемы с получением текста имени групп. Англ текст обрезается, а русский кракозябры, должы быть указатели вместо Long. Метод тыка не помог.
Код:
1
2
3
4
Procedure StringToUnicode(pbstrptr.l, ucstrptr.l)
  MultiByteToWideChar_ (#CP_ACP, 0, pbstrptr, Len(PeekS(pbstrptr)), ucstrptr, Len(PeekS(ucstrptr)))
  PokeL( ucstrptr + Len(PeekS(pbstrptr))*2, 0)
EndProcedure



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перевод код архива winapi_library
СообщениеДобавлено: Пт мар 15, 2019 11:20 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 422
Благодарил (а): 32 раз.
Поблагодарили: 46 раз.
Пункты репутации: 0
Всвязи с необходимостью функций реестра и убить процесс стал смотреть соответствующие разделы.

"Процессы\Определение заголовка окна" - тут очистка памяти после вызова ProcedureReturn, естественно не сработает.

В "реестр" вообще пришлось писать заново, всё слабо, нет проверок успеха. Сделал пример чтения реестра с запросом размера и типа перед тем как получить данные
Код:
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
EnableExplicit
 
; Переделал с проверкой успеха
Procedure.s RegRead(Root, KeyPath$, Valie$)
        Protected Size, Name$, hKey, Type
        ; Если раздел открыт успешно
        If #ERROR_SUCCESS = RegOpenKeyEx_(Root,KeyPath$,0,#KEY_ALL_ACCESS,@hKey)
                ; Чтобы получить размер данных и тип. Размер для выделения буфера,
                ; тип для определения можно ли анализировать данные соответствующими функциями
                If #ERROR_SUCCESS = RegQueryValueEx_(hKey,Valie$,0,@Type,0,@Size)
                        ; Debug Str(Type)
                        Select Type
                                Case 1
                                        Debug "REG_SZ Строковый"
                                Case 2
                                        Debug "REG_EXPAND_SZ Строковый с %Temp%"
                                Case 3
                                        Debug "REG_BINARY Бинарный"
                                Case 4
                                        Debug "REG_DWORD 8 байт, Double, Quad"
                                Case 7
                                        Debug "REG_MULTI_SZ Многострочный текст "
                                Default
                                        Debug "один из редких типов"
                        EndSelect
                        Debug "Длина данных: " + Str(Size) + " байт"
                        Name$=Space(Size)
                        If #ERROR_SUCCESS = RegQueryValueEx_(hKey,Valie$,0,0,@Name$,@Size)
                                Debug "успешно, значение параметра " + Valie$ + ": " + Name$
                        EndIf
                EndIf
                RegCloseKey_(hKey)
        EndIf
        ProcedureReturn Name$
EndProcedure
 
Define Name$
Name$ = RegRead(#HKEY_CURRENT_USER, "Environment","TEMP")



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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 6


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

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