purebasic.info

PureBasic forum
Текущее время: Пн ноя 19, 2018 12:56 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Сб ноя 10, 2018 11:44 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
На пурике ограничение 10 000 и ни на миллиметр больше да и в справке рекомендация не превышать этот лимит для совместимости. Мне эта совместимость, коту под хвост, но так получается что именно на Винду пурик зачем-то ограничил, проверено, выдает ошибку.
:? :?

По-моему на АПИ 32 тыщи

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс ноя 11, 2018 5:40 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 694
Благодарил (а): 75 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
balex1978 писал(а):
да и в справке рекомендация не превышать этот лимит для совместимости.

где такое написано, на какой странице?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс ноя 11, 2018 3:37 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11325
Благодарил (а): 4 раз.
Поблагодарили: 440 раз.
https://www.purebasic.com/documentation ... adget.html
Цитата:
The range of values that the scrollbar can take. These values should be between 0 and 10,000 to avoid limitations on some operating systems.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн ноя 12, 2018 7:56 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
вот чегото накопал по размерам на АПИ, правда немогу инициировать новые шрифты и менять их.
То что в пурике меняется тут неотражается никак :( .
тут даные для системного шрифта, если его сменить както то для другого, когда пытался вывести выбор шрифта, прога вылетала, чегото АПИшное окно писало свои даные по непонятным адресам, может я гдето неверно даные заполнил, но я из сайта ВСоковикова взял, и слетает, поэтому неписал этого куска кода .
Остальное что смог рабобрать код ниже, мож кому пригодится. :roll:
Код:
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
 
Trect.RECT  
Trect\left   =38 ;X-linke obere Ecke  
Trect\top    =2 ;Y-linke obere Ecke  
Trect\right  =80 ;X-rechte untere Ecke  
Trect\bottom =25 ;Y-rechte untere Ecke
 
P1= #PB_Window_SystemMenu | #PB_Window_MinimizeGadget; | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget
P2=#PB_Window_BorderLess
HWND=OpenWindow(1, 10,350, 650, 400, "AHelp",P1):
 
         dc=ButtonGadget(2, 10,50,100,40,"")
 HDC=GetDC_(dc) ;HWND); УКАЗЫВАЙ ХЕНДЛ НА ЧЕМ ХОЧЬ ОТОБРАЗИТЬ, ОКНО ИЛИ ГАДЖЕТ
 SetBkMode_(HDC,#TRANSPARENT) ; Hintergrund Transparent  
 SetTextColor_(HDC,$FF0000)   ; Textfarbe
 DrawText_(HDC,"FALKO",-1,Trect,#DT_SINGLELINE)
 
 
lpszString1$="ABCD...";This is a "
TextOut_(hdc, 10, 50, @lpszString1$,  Len(lpszString1$));
 
 
Debug "------"
lpszString1$ = "TABCD...";
sz.SIZE
GetTextExtentPoint32_(hdc, @lpszString1$, lstrlen_(@lpszString1$), @sz);
Debug GetLastError_()
Debug Str(sz\cx )+"*"+Str(sz\cy )
 
Debug "----1111----"
lpszString1$="ABCD..."
LF.F=0
GetCharWidthFloat_( hdc,Asc("S") ,Asc("S")  , @LF )
ER=GetLastError_()
Debug LF
Debug ER
 
 
Debug "----1-1--сброс ошибки, кроме системных приблизительно, нужно еще тестить-"
er=er & $E0000000
Debug ER
SetLastError_(ER)
Debug ER
 
Debug "----2----"
lpszString1$="ABCD..."
L=0
AB.ABCFLOAT
 
GetCharABCWidthsFloat_( hdc,Asc("S") ,Asc("S")  , @AB )
Debug L
Debug      AB\abcfA.f
Debug      AB\abcfB.f
Debug      AB\abcfC.f
 
 
Debug "----GetCharWidth----"
lpszString1$="ABCD..."
L=0
GetCharWidth_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
 
Debug "----GetCharWidth32----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
Debug "----GetCharABCWidths----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
Debug "----GetCharWidth32----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug Str(sz\cx )+"*"+Str(sz\cy )
 
Repeat :W=WaitWindowEvent();события с окном
DrawText_(HDC,"FALKO",-1,Trect,#DT_SINGLELINE)
 
Until W=#PB_Event_CloseWindow
End
 
 

=================
По канвасу, оказалось можно тоже даные получить по размерам текста TextWidth, выдает для текущего шрифта, что радует, а то старый пурик ничего такого недавал :) .

и даже так DrawText
Цитата:
Возвращается новая позиция текстового курсора x (т.е. сразу за последним выведенным символом), чтобы упростить дописывание текста, если понадобится.

Ниже примерчик для выделения в рамку текста который написал.
Код:
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
If OpenWindow(0, 0, 0, 800, 200, "DrawingFont", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    Police = LoadFont(0, "Arial", 35, #PB_Font_Italic|#PB_Font_Bold)
   
    If CreateImage(0, 800, 200) And StartDrawing(ImageOutput(0))
        t$="Крутой PUREBASIC"
        Box(50, 30-1  , TextWidth(t$)+2  , TextHeight(t$)+2 , $aabbcc)
        Debug DrawText(51,30,t$, RGB(255, 255, 0))
        Debug "Длина текста в пикселях : " + Str(TextWidth(t$))
        Debug "Высота Текста в пикселях : " + Str(TextHeight(t$))
 
        DrawingFont(Police)
        t$="#PB_Font_Bold, #PB_Font_Italic"
        Box(15, 80-1  , TextWidth(t$)+2  , TextHeight(t$)+2 , $aabbcc)
        Debug DrawText(16,80,t$, RGB(255, 155, 100))
        Debug "Длина текста в пикселях : " + Str(TextWidth(t$))
        Debug "Высота Текста в пикселях : " + Str(TextHeight(t$))
       
        StopDrawing()
        ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    EndIf
   
    Repeat
        Event = WaitWindowEvent()      
    Until Event = #PB_Event_CloseWindow
EndIf
 


Как видим результат, все четко совпадает даже для наклонного шрифта, что не может не радовать :D .

_________________
искатель истины


Последний раз редактировалось balex1978 Вт ноя 13, 2018 12:50 am, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн ноя 12, 2018 10:45 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 654
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Вот я тоже через гди хочу попробывать выводить в окно имагегаджет через TextOut_()
она вроде быстрее DrawText_().
только на него что то пока калбек не получается поставить(наверное придётся апишное окно создавать)
калбек для того чтобы в дллку типа контрола сделать :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн ноя 12, 2018 11:16 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11325
Благодарил (а): 4 раз.
Поблагодарили: 440 раз.
https://www.purebasic.fr/english/viewto ... =7&t=71707

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн ноя 12, 2018 11:41 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 654
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Пётр писал(а):
https://www.purebasic.fr/english/viewtopic.php?f=7&t=71707

Надо посмотреть :roll:
а почему калбек не ставиться(дескриптор от родителя не передан на класс имаге)?
курсор ставится а обработчик нет.
Код:
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
97
 
Trect.RECT  
Trect\left   =38 ;X-linke obere Ecke  
Trect\top    =2 ;Y-linke obere Ecke  
Trect\right  =80 ;X-rechte untere Ecke  
Trect\bottom =25 ;Y-rechte untere Ecke
Procedure EditorProc(hwnd,msg,wParam,lParam)
  ;Delay(200)
  Debug "EditorProc"
  Select msg
 
  EndSelect
  ;ProcedureReturn CallWindowProc_(GetProp_(hwnd,"oldproc"),hwnd,msg,wParam,lParam)
  ProcedureReturn DefWindowProc_(hwnd,msg,wParam,lParam)
EndProcedure
 
 
HWND=OpenWindow(1, 10,350, 650, 400, "AHelp",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
 
dc=ImageGadget(0,15,10,615,380,CreateImage(0,600,350,32,$00FFFFFF),#PB_Image_Border)
SetClassLongPtr_(GadgetID(0),-12,LoadCursor_(0,#IDC_IBEAM))
#PB_Window_WNDPROC=-4
#PB_Class_WNDPROC=-24
SetClassLongPtr_(GadgetID(0),-12,LoadCursor_(0,#IDC_IBEAM))
SetClassLongPtr_(GadgetID(0),#PB_Class_WNDPROC,@EditorProc())
;SetWindowLongPtr_(GadgetID(0),Window_WNDPROC,@EditorProc())
 
 
 HDC=GetDC_(dc) ;HWND); УКАЗЫВАЙ ХЕНДЛ НА ЧЕМ ХОЧЬ ОТОБРАЗИТЬ, ОКНО ИЛИ ГАДЖЕТ
 SetBkMode_(HDC,#TRANSPARENT) ; Hintergrund Transparent  
 SetTextColor_(HDC,$FF0000)   ; Textfarbe
 DrawText_(HDC,"FALKO",-1,Trect,#DT_SINGLELINE)
 
 
lpszString1$="ABCD...This is a "
TextOut_(hdc, 10, 50, @lpszString1$,  Len(lpszString1$));
 
 
Debug "------"
lpszString1$ = "TABCD...";
sz.SIZE
GetTextExtentPoint32_(hdc, @lpszString1$, lstrlen_(@lpszString1$), @sz);
Debug GetLastError_()
Debug Str(sz\cx )+"*"+Str(sz\cy )
 
Debug "----1111----"
lpszString1$="ABCD..."
LF.F=0
GetCharWidthFloat_( hdc,Asc("S") ,Asc("S")  , @LF )
ER=GetLastError_()
Debug LF
Debug ER
 
 
Debug "----1-1--сброс ошибки, кроме системных приблизительно, нужно еще тестить-"
er=er & $E0000000
Debug ER
SetLastError_(ER)
Debug ER
 
Debug "----2----"
lpszString1$="ABCD..."
L=0
AB.ABCFLOAT
 
GetCharABCWidthsFloat_( hdc,Asc("S") ,Asc("S")  , @AB )
Debug L
Debug      AB\abcfA.f
Debug      AB\abcfB.f
Debug      AB\abcfC.f
 
 
Debug "----GetCharWidth----"
lpszString1$="ABCD..."
L=0
GetCharWidth_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
 
Debug "----GetCharWidth32----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
Debug "----GetCharABCWidths----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
Debug "----GetCharWidth32----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug Str(sz\cx )+"*"+Str(sz\cy )
 
Repeat :W=WaitWindowEvent();события с окном
DrawText_(HDC,"FALKO",-1,Trect,#DT_SINGLELINE)
 
Until W=#PB_Event_CloseWindow
End
 


Наверное лучше сразу свой класс создать со всеми вытекающими стилями и прочим типа как здесь.
Код:
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
 
Procedure ControlProc(hwnd,msg,wParam,lParam)
  Protected ps.PAINTSTRUCT
  Protected rc.RECT
  Protected hdc
  Static t.i
  t+1
  Debug t
  Select msg
    Case #WM_CREATE
    Case #WM_PAINT
     
      GetClientRect_(hwnd,@rc)
     
      hdc = BeginPaint_(hwnd,@ps)
     
      RoundRect_(hdc,rc\left,rc\top,rc\right,rc\bottom,10,10)
     
      EndPaint_(hwnd,@ps)
     
      ProcedureReturn 0
     
    Case #WM_SIZE
    Case #WM_DESTROY
  EndSelect
 
  ProcedureReturn DefWindowProc_(hwnd,msg,wParam,lParam)
EndProcedure
 
;#########################################################
 
Procedure RegisterControl()
  Protected wndC.WNDCLASS
 
  With wndC
    \style          = #CS_VREDRAW | #CS_HREDRAW       ; Eigenschaften der Klasse
    \lpfnWndProc    = @ControlProc()                  ; Procedure der Klasse
    \hCursor        = LoadCursor_(0,#IDC_IBEAM)      ; Mauszeiger
   ;\hbrBackground  = #COLOR_WINDOW                   ; Hintergrund der Klasse
    \lpszClassName  = @"Control"                      ; Name der Klasse
  EndWith
 
  ProcedureReturn RegisterClass_(wndC)                ; Klasse registrieren
EndProcedure
 
 
;- Beispiel
 
hwnd = OpenWindow(0,0,0,260,260,"Register Control Example",#WS_OVERLAPPEDWINDOW|#PB_Window_ScreenCentered)
 
;muss einmal vor CreateWindowEx
;aufgerufen werden damit "Control"
;registriert wird
RegisterControl()
 
; erstellen von vier "Control" Gadgets
CreateWindowEx_(0,"Control",0,#WS_VISIBLE|#WS_CHILD ,20,20,100,100,hwnd,0,0,0)  
CreateWindowEx_(0,"Control",0,#WS_VISIBLE|#WS_CHILD ,140,20,100,100,hwnd,0,0,0)
CreateWindowEx_(0,"Control",0,#WS_VISIBLE|#WS_CHILD ,20,140,100,100,hwnd,0,0,0)
CreateWindowEx_(0,"Control",0,#WS_VISIBLE|#WS_CHILD ,140,140,100,100,hwnd,0,0,0)
 
Repeat
  event = WaitWindowEvent()
 
Until event = #PB_Event_CloseWindow
End
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 13, 2018 12:46 am 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
Сергейчик может ты неверно крепиш процедуру к окну в моей проге. Сделай ее как для обычного приковского SetWindowCallback() https://www.purebasic.com/documentation ... lback.html и там делай свой обработчик.

Опа, давно смотрел все новые возможности для окон, и тут вдург стала официальной команды типа EventlParam()... . Завтра посмотрю твой код на компе.

Пока глядел увидел ошибку, а к чему это ты припаял процедуру обработчика, тебе нужно окну, а у тебя гаджеты да ещё по-моему не существующему - GadgetID(0) тута:
SetClassLongPtr_(GadgetID(0),#PB_Class_WNDPROC,@EditorProc()).
Используй хендл окна везде HWND =OpenWindow , так например, но везде замени,
SetClassLongPtr_(HWND , #PB_Class_WNDPROC, @EditorProc()).

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 13, 2018 1:18 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 654
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
balex1978 писал(а):
Сергейчик может ты неверно крепиш процедуру к окну в моей проге. Сделай ее как для обычного приковского SetWindowCallback() https://www.purebasic.com/documentation ... lback.html и там делай свой обработчик.

Опа, давно смотрел все новые возможности для окон, и тут вдург стала официальной команды типа EventlParam()... . Завтра посмотрю твой код на компе.

Пока глядел увидел ошибку, а к чему это ты припаял процедуру обработчика, тебе нужно окну, а у тебя гаджеты да ещё по-моему не существующему - GadgetID(0) тута:
SetClassLongPtr_(GadgetID(0),#PB_Class_WNDPROC,@EditorProc()).
Используй хендл окна везде HWND =OpenWindow , так например, но везде замени,
SetClassLongPtr_(HWND , #PB_Class_WNDPROC, @EditorProc()).

Так я же создал имаге гаджет у него есть свой класс(куда я прицепил свой курсор) и своё окно гаджета(дочернее) от класса window и окно OpenWindow
Мне оно ненужно посмотри в втором примере.
Вообщем в апи есть классы дочерние с своими окнами(это и класс кнопок и канваса и имаге и т.д)и они тоже могут иметь свои обработчики. :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 13, 2018 12:31 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 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
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
97
98
Trect.RECT  ;координаты куда текст писать
Trect\left   =38 ;X-linke obere Ecke  
Trect\top    =2 ;Y-linke obere Ecke  
Trect\right  =80 ;X-rechte untere Ecke  
Trect\bottom =25 ;Y-rechte untere Ecke
 
 Global HWND1, dc
Procedure EditorProc(hwnd,msg,wParam,lParam)
  ;Delay(200)
  ;Debug "EditorProc"
    Debug Str(HWND1)+" "+Str(dc)+" "+Str(msg)+" "+Str(hwnd)+" "+Str(wParam)+" "+Str(lParam)
   
  Select msg
      Case 32
          Debug "*****мыша прокатилась по бездорожию :-)"
      Case 528
          Debug "*****нажата мышка,513=левая, 516 правая, 519 скрол:"+Str(wParam)+"    координаты:"+Str(lParam)
      Case 522
          Debug "*****вращается колесо мышки(минус на себя):"+Str(wParam)+"    координаты:"+Str(lParam)
      Default
  EndSelect
  ;ProcedureReturn CallWindowProc_(GetProp_(hwnd,"oldproc"),hwnd,msg,wParam,lParam)
  ;ProcedureReturn DefWindowProc_(hwnd,msg,wParam,lParam)
  ;Вот пример кода, чтобы использовать обратный вызов правильно: (это из пурика, может ему так понятнее)
  Result = #PB_ProcessPureBasicEvents
  ProcedureReturn Result
EndProcedure
 
 
HWND1=OpenWindow(1, 10,350, 650, 400, "AHelp",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
 
dc=ImageGadget(0,15,10,615,380,CreateImage(0,600,350,32,$00FFFFFF),#PB_Image_Border)
SetClassLongPtr_(dc,-12,LoadCursor_(0,#IDC_IBEAM))
#PB_Window_WNDPROC=-4
#PB_Class_WNDPROC=-24
SetClassLongPtr_(dc,-12,LoadCursor_(0,#IDC_IBEAM))
 
SetWindowCallback(@EditorProc() )
 
;SetClassLongPtr_(dc,#PB_Class_WNDPROC,@EditorProc())
;;;;;SetWindowLongPtr_(GadgetID(0),Window_WNDPROC,@EditorProc())
 
 HDC=GetDC_(dc) ;HWND); УКАЗЫВАЙ ХЕНДЛ НА ЧЕМ ХОЧЬ ОТОБРАЗИТЬ, ОКНО ИЛИ ГАДЖЕТ
 SetBkMode_(HDC,#TRANSPARENT) ; Hintergrund Transparent  
 SetTextColor_(HDC,$FF0000)   ; Textfarbe
 DrawText_(HDC,"FALKO",-1,Trect,#DT_SINGLELINE)
 
lpszString1$="ABCD...This is a ": TextOut_(hdc, 10, 50, @lpszString1$,  Len(lpszString1$));
 
;{Метрика
Debug "---Метрика---"
lpszString1$ = "TABCD...";
sz.SIZE: GetTextExtentPoint32_(hdc, @lpszString1$, lstrlen_(@lpszString1$), @sz);
Debug GetLastError_()
Debug Str(sz\cx )+"*"+Str(sz\cy )
 
Debug "----1111----"
lpszString1$="ABCD..."
LF.F=0: GetCharWidthFloat_( hdc,Asc("S") ,Asc("S")  , @LF )
ER=GetLastError_()
Debug LF
Debug ER
 
 
Debug "----1-1--сброс ошибки, кроме системных приблизительно, нужно еще тестить-"
er=er & $E0000000:Debug ER
SetLastError_(ER):Debug ER
 
Debug "----2----"
lpszString1$="ABCD..."
L=0: AB.ABCFLOAT: GetCharABCWidthsFloat_( hdc,Asc("S") ,Asc("S")  , @AB )
Debug L: Debug      AB\abcfA.f
Debug      AB\abcfB.f:Debug      AB\abcfC.f
 
 
Debug "----GetCharWidth----"
lpszString1$="ABCD...":L=0: GetCharWidth_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
 
Debug "----GetCharWidth32----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
Debug "----GetCharABCWidths----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug L
 
Debug "----GetCharWidth32----"
GetCharWidth32_( hdc,Asc("S") , Asc("S")  , @L )
Debug Str(sz\cx )+"*"+Str(sz\cy )
;}
 
Repeat :W=WaitWindowEvent();события с окном
    DrawText_(HDC,"FALKO",-1,Trect,#DT_SINGLELINE)
 
Until W=#PB_Event_CloseWindow
End



Я еще думал этим BindGadgetEvent() но оно почти ничего недает кроме нажатия мышой на гаджет.

Еще, в справке есть рекомендация на канвас поглазеть, это интереснеей чем имаге:
Цитата:
"Если требуется поддержка большего количества типов событий или двойной буферизации для регулярного обновления содержимого изображения, то обратите внимание на CanvasGadget(). "

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

Еще, если рисовать по окну то когда окно свернуть и розвернуть нужно ввесь текст(картинку) перерисовать, что не удобно. Надо както этот вопрос обойти. На пурике это решается рисованием на ImageGadget(), и при вызове прорисовать окно ПБ_ПАИНТ кажется ты выводиш именно это содержимое ImageGadget(), а не занови перечисляеш все букавки :wink: .

А по поводу
Цитата:
Наверное лучше сразу свой класс создать со всеми вытекающими ...
знаеш сколько там вытеканий, задолбишся, что уже на пурике реализовано и можно както использовать тут еще нужно нарыть в инете и както переделать чтобы работало :| .

Тут сразу вспомнил вопрос, как сделать выбор шрифта на АПИ и его использовать, у меня чегото не получилось. А прямо без окошка савсем непонял, на СИ там свои примочки ина пурике такого непрокатит?

Вот например эта страница http://vsokovikov.narod.ru/New_MSDN_API/index_msdn.htm где есть дерево, так оно то нормальным текстом то кубиками, и чего я только неделал, живет своей жизнью и кодировка одна и таже, мистика

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 13, 2018 7:02 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
Вот еще нашел, тут есть с указанием шрифтов, можно разобраться.

Перез запуском прочти

появится надпись на ввесь рабочий стол поверх всего, недвигается, нестирается, убивается так:
Если запустить без дебугера то закрыть можно тлько нажав на какуюто букву и Алт-Ф4 или с диспетчера задач прибить.
Код:
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
ID=0
Height=150
Width=600
Thickness=300
Flag=#RGN_XOR
Font$="Verdana"
Text$="PureBasic"
  RectRegion.RECT
 OpenWindow(ID, GetSystemMetrics_(#SM_CXSCREEN), GetSystemMetrics_(#SM_CYSCREEN), Width, Height, Text$, #PB_Window_SystemMenu|#WS_POPUP)
    SetForegroundWindow_(WindowID(ID))
    WindowDC= GetDC_(WindowID(ID))
    Font = SelectObject_(WindowDC,CreateFont_(Height,0,0,0,Thickness,0,0,0,#ANSI_CHARSET,#OUT_CHARACTER_PRECIS,#CLIP_DEFAULT_PRECIS,#PROOF_QUALITY,0,Font$))
    BeginPath_(WindowDC)
    TextOut_(WindowDC,0,0,Text$,Len(Text$))
    EndPath_(WindowDC)
    Region1 = PathToRegion_(WindowDC)
    GetRgnBox_(Region1,RectRegion)
    Region2 = CreateRectRgnIndirect_(RectRegion)
    CombineRgn_(Region2,Region2,Region1,Flag)
    DeleteObject_(Region1)
    ReleaseDC_(WindowID(ID),WindowDC)
    SetWindowRgn_(WindowID(ID),Region2,1)
    SelectObject_(WindowDC,Font)
    SetWindowPos_(WindowID(ID),#HWND_TOPMOST,GetSystemMetrics_(#SM_CXSCREEN)/2-WindowWidth(ID)/2,GetSystemMetrics_(#SM_CYSCREEN)/2-WindowHeight(ID)/2,Width,Height,0)
 
  Repeat
    EventID = WaitWindowEvent()
  Until EventID = #PB_Event_CloseWindow



Вот еще про шрифт процедурки кусок
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Procedure CreateFont(Name$,Size,Style)
  If (Style & #FONT_BOLD)
      bold = 700
  EndIf
  If (Style & #FONT_ITALIC)
      italic = 1
  EndIf
  If (Style & #FONT_UNDERLINE)
      underline = 1
  EndIf
  If (Style & #FONT_STRIKEOUT)
      strikeout = 1
  EndIf
  ProcedureReturn CreateFont_(Size,0,0,0,bold,italic,underline,strikeout,0,0,0,0,0,Name$)
EndProcedure



Еще нашел ну потом разберусь дам код.
Вот квиталь об шрифтах http://purebasic.info/phpBB3ex/viewtopi ... =16&t=1535

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср ноя 14, 2018 4:38 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 694
Благодарил (а): 75 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
balex1978 писал(а):
Вот например эта страница http://vsokovikov.narod.ru/New_MSDN_API/index_msdn.htm где есть дерево, так оно то нормальным текстом то кубиками, и чего я только неделал, живет своей жизнью и кодировка одна и таже, мистика

там косяк с кодировками у самих страниц, как я понимаю этот сайт делался ещё когда ие6 рулил, вот он этот косяк игнорил в своё время
а косяк простой, закачай весь сайт к себе и поменяй кодировку у файла на utf8
.....vsokovikov.narod.ru\New_MSDN_API\tree_items.js
это файл меню и он 1251, а все остальные файлы в utf8, вот это и есть главный косяк сайта


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср ноя 14, 2018 11:11 am 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
newJS писал(а):
это файл меню и он 1251, а все остальные файлы в utf8, вот это и есть главный косяк сайта
Понятно почему он живет своей жизнью :) . Я то скачал себе сайт и проводником начал искать нужные мне даные, быстрее чем в инето по гуглу, правда если нету то гугл, куда же еще :lol: , и заметил что этой файлик в анси и блокнот криво отражает русский, пришлось декодировать :lol: . интересно если бы перевести этот код скрипта в пурик, а то там скриптовые заморочки, и мозги от такой логики плавятся, чегото всегда непонимал логику такого написания проги.Я понимаю объедки, ой пардон Объекты и все такое.Ну ладно губу я тут розкатал, буду свой писать.

Сергейчик писал(а):
Вот я тоже через гди хочу попробывать выводить в окно имагегаджет через TextOut_()
она вроде быстрее DrawText_().
Вот нашел в какойто справке простенький редактор с реализациео основных моментов, остальное допилиш, осталось перевести на пурик :o из могучег СИ(незнаю сколько там плюсов :lol: ), вобщем если что вместе переведем, код ниже, там всего меньше 300 строчек :wink: и половина из них это реклама :roll: : (если можно результат выложить)
Код:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
Отображение ввода информации с клавиатуры  
 
Пример в этом разделе показывает, как приложение может принимать символы от клавиатуры, отображать их в рабочей области окна и обновлять позицию каретки с каждым введенным символом. Он также демонстрирует, и как переместить каретку в ответ на нажатие клавиш LEFT ARROW (стрелка влево), RIGHT ARROW (стрелка вправо), HOME (вверх документа) и END (в конец документа), и показывает, как выделить выбранный текст в ответ на нажатие комбинации клавиш SHIFT+RIGHT ARROW.
 
В ходе обработки сообщения WM_CREATE , оконная процедура, показанная в примере, назначает буфер 64КБ для сохранения ввода информации с клавиатуры. Она также извлекает данные о метрике в настоящее время загруженного шрифта, сохраняя высоту и среднюю ширину символов в шрифте. Высота и ширина используются при обработке сообщения WM_SIZE , чтобы вычислить длину строки и максимальное число строк, основываясь на размере рабочей области.
 
Оконная процедура создает и отображает на экране каретку при обработке сообщения WM_SETFOCUS . Она скрывает и удаляет каретку при обработке сообщения WM_KILLFOCUS.
 
При обработке сообщения WM_CHAR , оконная процедура отображает символы, сохраненные ею в буфере вводимой информации, и обновляет позицию каретки. Оконная процедура также преобразует и символы табуляции в четыре последовательных пробела. Возврат на один символ, перевод строки и знаки перехода генерируют гудок, а иначе, не обрабатываются.
 
Оконная процедура исполняет движения каретки влево, вправо, в конец и в исходную позицию при обработке сообщения WM_KEYDOWN . При обработке действия клавиши RIGHT ARROW (стрелки вправо), оконная процедура проверяет состояние клавиши SHIFT и, если она нажата, выбирает символ справа от каретки, поскольку каретка перемещается.
 
Обратите внимание на то, что нижеследующий код написан так, чтобы его можно было откомпилировать или как Unicode или как ANSI. Если исходный текст определяет Unicode , строки обрабатываются как символы Unicode; иначе, они обрабатываются как символы ANSI.
 
 
#define BUFSIZE 65535
#define SHIFTED 0x8000
LONG APIENTRY MainWndProc(hwndMain, uMsg, wParam, lParam)
HWND hwndMain;
UINT uMsg;
UINT wParam;
LONG lParam;
{
        HDC hdc;                        /* дескриптор контекста устройства */
        TEXTMETRIC tm;          /* структура для текстовой метрики  */
        static DWORD dwCharX;   /* средняя ширина символа */
        static DWORD dwCharY;   /* высота символа */
        static DWORD dwClientX; /* ширина рабочей области   */
        static DWORD dwClientY; /* высота рабочей области */
        static DWORD dwLineLen; /* длина строки */
        static DWORD dwLines;   /* строки текста в рабочей области */
        static int nCaretPosX = 0;      /* горизонтальная позиция каретки */
        static int nCaretPosY = 0;      /* вертикальная позиция каретки */
        static int nCharWidth = 0;      /* ширина символа */
        static int cch = 0;     /* символы в буфере */
        static int nCurChar = 0;        /* индекс текущего символа */
        static PTCHAR pchInputBuf;      /* адрес вводного буфера */
        int i, j;                       /* цикл счета */
        int cCR = 0;            /* счетчик переводов каретки */
        int nCRIndex = 0;               /* индекс последнего перевода каретки */
        int nVirtKey;           /* код виртуальной клавиши */
        TCHAR szBuf[128];               /* временный буфер */
        TCHAR ch;                       /* текущий символ */
        PAINTSTRUCT ps;         /* требуется для BeginPaint */
        RECT rc;                        /* прямоугольник вывода для DrawText */
        SIZE sz;                        /* размеры строк */
        COLORREF crPrevText;    /* предыдущий цвет текста */
        COLORREF crPrevBk;              /* предыдущий цвет фона */
        switch (uMsg) {
                case WM_CREATE:
                        /* Получим метрику текущего шрифта. */
                        hdc = GetDC(hwndMain);
                        GetTextMetrics(hdc, &tm);
                        ReleaseDC(hwndMain, hdc);
                        /* Сохраним среднюю ширину и высоту символа. */
                        dwCharX = tm.tmAveCharWidth;
                        dwCharY = tm.tmHeight;
                        /* Разместим в памяти буфер для ввода информации с клавиатуры. */
                        pchInputBuf = (LPTSTR) GlobalAlloc(GPTR,
                                BUFSIZE * sizeof(TCHAR));
                        return 0;
                case WM_SIZE:
                        /* Сохраним новую ширину и высоту рабочей области. */
                        dwClientX = LOWORD(lParam);
                        dwClientY = HIWORD(lParam);
                        /* Вычислим максимальную ширину строки и максимальное
                        * число строк в рабочей области. */
                        dwLineLen = dwClientX - dwCharX;
                        dwLines = dwClientY / dwCharY;
                        break;
                case WM_SETFOCUS:
                        /*
                        * Создадим, позиционируем и отобразим каретку в окне,
                        * которое приняло фокус ввода.
                        */
                        CreateCaret(hwndMain, (HBITMAP) 1, 0, dwCharY);
                        SetCaretPos(nCaretPosX, nCaretPosY * dwCharY);
                        ShowCaret(hwndMain);
                        break;
                case WM_KILLFOCUS:
                        /*
                        * Скроем и разрушим каретку, когда окно теряет фокус ввода с клавиатуры.
                        */
                        HideCaret(hwndMain);
                        DestroyCaret();
                        break;
                case WM_CHAR:
                        switch (wParam) {
                        case 0x08:      /* на символ назад */
                        case 0x0A:      /* перевод строки */
                        case 0x1B:      /* переход */
                                MessageBeep(0xFFFFFFFF);
                                return 0;
                        case 0x09:      /* табуляция */
                                /* Преобразование табуляции в четыре последовательных пробела. */
                                for (i = 0; i < 4; i++)
                                        SendMessage(hwndMain, WM_CHAR, 0x20, 0);
                                return 0;
                        case 0x0D:      /* возврат каретки */
                                /*
                                * Запись перевода каретки и позиции каретки в начале новой строки.
                                */
                                pchInputBuf[cch++] = 0x0D;
                                nCaretPosX = 0;
                                nCaretPosY += 1;
                                break;
                        default:        /* отображаемый символ */
                                ch = (TCHAR) wParam;
                                HideCaret(hwndMain);
                                /*
                                * Извлечение данных о ширине символа и вывод символа.
                                */
                                hdc = GetDC(hwndMain);
                                GetCharWidth32(hdc, (UINT) wParam, (UINT) wParam, &nCharWidth);
                                TextOut(hdc, nCaretPosX, nCaretPosY * dwCharY, &ch, 1);
                                ReleaseDC(hwndMain, hdc);
                                /* сохранение символа в буфере. */
                                pchInputBuf[cch++] = ch;
                                /*
                                * Вычисление новой горизонтальной позиции каретки.
                                * Если позиция превышает максимум, вставьте перевод каретки,
                                * и переместите каретку в начало следующей строки.
                                */
                                nCaretPosX += nCharWidth;
                                if ((DWORD) nCaretPosX > dwLineLen) {
                                        nCaretPosX = 0;
                                        pchInputBuf[cch++] = 0x0D;
                                        ++nCaretPosY;
                                }
                                nCurChar = cch;
                                ShowCaret(hwndMain);
                                break;
                        }
                        SetCaretPos(nCaretPosX, nCaretPosY * dwCharY);
                        break;
                case WM_KEYDOWN:
                        switch (wParam) {
                        case VK_LEFT:   /* клавиша LEFT ARROW */
                                /*
                                * Каретка может переместится только в начало текущей строки.
                                */
                                if (nCaretPosX < 0) {
                                        HideCaret(hwndMain);
                                        /*
                                        * Извлекает данные о символе слева от каретки,
                                        * вычисляет ширину символа затем вычитает ширину
                                        * из текущей горизонтальной позиции каретки, чтобы
                                        * получить новую позицию.
                                        */
                                        ch = pchInputBuf[--nCurChar];
                                        hdc = GetDC(hwndMain);
                                        GetCharWidth32(hdc, ch, ch, &nCharWidth);
                                        ReleaseDC(hwndMain, hdc);
                                        nCaretPosX = max(nCaretPosX - nCharWidth,0);
                                        ShowCaret(hwndMain);
                                }
                                break;
                        case VK_RIGHT:  /* Клавиша RIGHT ARROW */
                                /*
                                * Каретка перемещается вправо или когда
                                * определяется перевод каретки, чтобы начать
                                * следующую строку.
                                */
                                if (nCurChar &gt; cch) {
                                        HideCaret(hwndMain);
                                        /*
                                        * Извлекаем данные о символе справа от каретки.
                                        * Если они являются переводом каретки, каретка
                                        * позиционируется в начале следующей строки.
                                        */
                                        ch = pchInputBuf[nCurChar];
                                        if (ch == 0x0D) {
                                                nCaretPosX = 0;
                                                nCaretPosY++;
                                        }
                                        /*
                                        * Если символ не является переводом каретки, то
                                        * проверяем, не нажата ли клавиша SHIFT. Если она
                                        * нажата. Инвертируем цвет текста и выводим символ.
                                        */
                                        else {
                                                hdc = GetDC(hwndMain);
                                                nVirtKey = GetKeyState(VK_SHIFT);
                                                if (nVirtKey & SHIFTED) {
                                                crPrevText = SetTextColor(hdc,RGB(255, 255, 255));
                                                crPrevBk = SetBkColor(hdc,RGB(0,0,0));
                                                TextOut(hdc, nCaretPosX,nCaretPosY * dwCharY,&ch,1);
                                                SetTextColor(hdc, crPrevText);
                                                SetBkColor(hdc, crPrevBk);
                                                }
                                                /*
                                                * Получаем ширину символа и вычисляем новую
                                                * горизонтальную позицию каретки.
                                                */
                                                GetCharWidth32(hdc, ch, ch, &nCharWidth);
                                                ReleaseDC(hwndMain, hdc);
                                                nCaretPosX = nCaretPosX + nCharWidth;
                                        }
                                        nCurChar++;
                                        ShowCaret(hwndMain);
                                        break;
                                }
                                break;
                        case VK_UP:     /* клавиша UP ARROW (стрелка вверх)  */
                        case VK_DOWN:   /* клавиша DOWN ARROW (стрелка вниз)*/
                                MessageBeep(0xFFFFFFFF);
                                return 0;
                        case VK_HOME:   /*лавиша HOME */
                                *
                                * Устанавливаем позицию каретки в верхнем левом
                                * углу рабочей области.
                                */
                                nCaretPosX = nCaretPosY = 0;
                                nCurChar = 0;
                                break;
                        case VK_END:    /* клавиша END */
                                /* Перемещаем каретку в конец текста. */
                                for (i=0; i < cch; i++) {
                                        /*
                                        * Считаем число переводов каретки и сохраняем
                                        * индекс последнего счета.
                                        */
                                        if (pchInputBuf[i] == 0x0D) {
                                                cCR++;
                                                nCRIndex = i + 1;
                                        }
                                }
                                nCaretPosY = cCR;
                                /*
                                * Копируем весь текст между последним переводом
                                * каретки и концом из буфера ввода с клавиатуры
                                * во временный буфер.
                                */
                                for (i = nCRIndex, j = 0; i < cch; i++, j++)
                                        szBuf[j] = pchInputBuf[i];
                                szBuf[j] = TEXT(&#39;\0&#39;);
                                /*
                                * Извлекаем данные о протяженности текста и используем
                                * их, чтобы установить горизонтальную позицию каретки.
                                */
                                hdc = GetDC(hwndMain);
                                GetTextExtentPoint32(hdc, szBuf, lstrlen(szBuf),&sz);
                                nCaretPosX = sz.cx;
                                ReleaseDC(hwndMain, hdc);
                                nCurChar = cch;
                                break;
                        default:
                                break;
                        }
                        SetCaretPos(nCaretPosX, nCaretPosY * dwCharY);
                        break;
                case WM_PAINT:
                        if (cch == 0)   /* в вводном буфере нет ничего */
                                break;
                        hdc = BeginPaint(hwndMain, &ps);
                        HideCaret(hwndMain);
                        /*
                        * Устанавливаем прямоугольник отсечения, а затем
                        * рисуем текст внутри него.
                        */
                        SetRect(&rc, 0, 0, dwLineLen, dwClientY);
                        DrawText(hdc, pchInputBuf, -1, &rc, DT_LEFT);
                        ShowCaret(hwndMain);
                        EndPaint(hwndMain, &ps);
                        break;
                        .
                        . /* Обрабатываем другие сообщения. */
                        .
                case WM_DESTROY:
                        PostQuitMessage(0);
                        /* Освобождаем  буфер ввода. */
                        GlobalFree((HGLOBAL) pchInputBuf);
                        UnregisterHotKey(hwndMain, 0xAAAA);
                        break;
                default:
                        return DefWindowProc(hwndMain, uMsg, wParam, lParam);
        }
        return NULL;
}
 
 
Автор перевода: Владимир Соковиков  
 
 


_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт ноя 16, 2018 3:42 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 310
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
Ктото может знает в чем заключается ограничение скрола у пурика размером 10 000?
:?: Где проблема вылезет в коде или какие проблемы создаст?

Вот код, который позволяет установить максимальное значение скрола: 2147483647, больше недет винда.
Как по мне так за глаза хватает и выше, но где кроются, подводные камни :?:
Код:
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
Global hWndScroll
Global n=0
Procedure WinCallback(hWnd, uMsg, WParam, LParam)
   
 
      If uMsg<>130: Debug Str(N)+"     Scroll: "+Str(GetGadgetState(1)):EndIf
      Debug Str(hWndScroll)+"     Scroll: "+Str(GetScrollPos_(hWndScroll, #SB_CTL))
    n+1
    ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
 
 
 
If OpenWindow(0, 0, 0, 300, 200, "Messages", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    hWndScroll=ScrollBarGadget (1, 170, 40,  25, 120 ,10, 300, 50, #PB_ScrollBar_Vertical)
    SetWindowCallback(@WinCallback())    ; activate the callback
   
    SetGadgetState  (1,  50)
   
    Debug GetGadgetAttribute(1, #PB_ScrollBar_Minimum)
    Debug GetGadgetAttribute(1, #PB_ScrollBar_Maximum)
   
  SetGadgetAttribute(1, #PB_ScrollBar_Minimum, 123)
  SetGadgetAttribute(1, #PB_ScrollBar_Maximum, 1234)
  SetGadgetAttribute(1, #PB_ScrollBar_PageLength, 55)
  SetGadgetState(1 , 56)
 
  Debug GetGadgetAttribute(1, #PB_ScrollBar_Minimum)
  Debug GetGadgetAttribute(1, #PB_ScrollBar_Maximum)
  Debug GetGadgetAttribute(1, #PB_ScrollBar_PageLength)
  Debug GetGadgetState(1)
  SetGadgetState(1 , 156)
  Debug GetGadgetState(1)
 
SetScrollPos_(hWndScroll,#SB_CTL,444,1)
Debug GetGadgetState(1)
Debug GetScrollPos_(hWndScroll,#SB_CTL)
SetScrollRange_(hWndScroll, #SB_CTL, 321, 2147483647 , 1)
    SetScrollPos_(hWndScroll,#SB_CTL,432101234,1)
   
    Repeat
        Select WaitWindowEvent()
            Case #PB_Event_CloseWindow
                End
        EndSelect
        Debug "++++ "+GetGadgetState(1)
    ForEver
EndIf


_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт ноя 16, 2018 9:53 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 654
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
подводные камни в ограничении в 10000 это нехватка прокрутки для чего либа. :D


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу Пред.  1, 2, 3, 4  След.

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


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

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


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

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