purebasic.info

PureBasic forum
Текущее время: Пт дек 14, 2018 4:39 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Символ €
СообщениеДобавлено: Вт мар 06, 2018 10:30 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 272
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Рисует это - "|", вот что ему надо? PB 5.62 utf-8
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Structure RECT
  left.i
  top.i
  right.i
  bottom.i
EndStructure
rec.RECT
 
lpchText .s = "€"
;PokeS(@lpchText, lpchText, #PB_Ascii)
OpenWindow(0, 0, 0, 50, 50, "", #PB_Window_SystemMenu|1)
 
hDC.i = GetDC_(WindowID(0))
rec\top = 20
rec\bottom = 37
rec\left = 52
rec\right = 97
DrawText_(hDC, @lpchText , Len(lpchText), @rec, 2048)
 
Repeat
  Event.i = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
ReleaseDC_(WindowID(0), DC)
End



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Символ €
СообщениеДобавлено: Ср мар 07, 2018 12:05 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
repeat писал(а):
вот что ему надо
Шрифт по умолчанию не содержит этого символа. Нужно перед DrawText добавить строку
Код:
1
SelectObject_(hDC, LoadFont(0, "Arial", 10))


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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Символ €
СообщениеДобавлено: Ср мар 07, 2018 6:31 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2294
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Почему через WinAPI рисуешь, а не через PB?

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Символ €
СообщениеДобавлено: Ср мар 07, 2018 8:23 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6412
Благодарил (а): 21 раз.
Поблагодарили: 201 раз.
Пункты репутации: 52
К чему такие издевательства, если можно всё в одну строчку
Код:
1
2
3
4
5
6
OpenWindow(0, 0, 0, 50, 50, "", #PB_Window_SystemMenu|1)
TextGadget(0, 25, 20, 40, 25, "€")
Repeat
  Event.i = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
 


И шрифт сразу находится :D

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Символ €
СообщениеДобавлено: Ср мар 07, 2018 4:21 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 272
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Вот и мне показалось что застрял, опять, на элементарном, оттого и пример такой. Собственно, какой repeat такой и пример. Дело то в другом: SelectObject дает какой-то другой шрифт и заметно притормаживает прокрутка (даже при небольших объемах). Возможно как-то подружить SetGadgetFont с символом"€"?
Код:
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
Procedure WinCallback(hWnd.i, uMsg.i, wParam.i, lParam.i)
  Protected rc.RECT
  If uMsg = #WM_NOTIFY
    *nr.NMHDR = lParam
    Select *nr\code
      Case #NM_CUSTOMDRAW
        *nm.NMLVCUSTOMDRAW = lParam
        Select *nm\nmcd\dwDrawStage
          Case #CDDS_PREPAINT
            ProcedureReturn #CDRF_NOTIFYITEMDRAW
          Case #CDDS_ITEMPREPAINT
            ProcedureReturn #CDRF_NOTIFYSUBITEMDRAW
          Case #CDDS_ITEMPREPAINT | #CDDS_SUBITEM
            rc\left = #LVIR_LABEL
            rc\top = 0
            SendMessage_(GadgetID(0), #LVM_GETSUBITEMRECT, *nm\nmcd\dwItemSpec, @rc)
            ;SelectObject_(*nm\nmcd\hdc, LoadFont(0, "Arial", 10))
            DrawText_(*nm\nmcd\hdc, @" Test 0299A €€€€€€", 18, @rc, 2048)
            ProcedureReturn #CDRF_SKIPDEFAULT
        EndSelect
        ProcedureReturn #PB_ProcessPureBasicEvents
      Case #LVN_ODCACHEHINT
        ProcedureReturn 0
      Case #LVN_GETDISPINFO
        ProcedureReturn #PB_ProcessPureBasicEvents
      Case #LVN_ODFINDITEM
        ProcedureReturn -1
    EndSelect
  EndIf
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
 
OpenWindow(0, 0, 0, 200, 200, "", #PB_Window_SystemMenu|1)
SetWindowCallback(@WinCallback())
ListIconGadget(0, 0, 0, 200, 200, "", 175, #LVS_OWNERDATA)
;SetGadgetFont(0, LoadFont(#PB_Any, "Arial", 10))
SendMessage_(GadgetID(0), #LVM_SETITEMCOUNT, 10, 1)
Repeat
  Event.i = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Символ €
СообщениеДобавлено: Ср мар 07, 2018 8:18 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
repeat писал(а):
Возможно как-то подружить SetGadgetFont с символом"€"?
Код:
1
SetGadgetFont(0, FontID(LoadFont(#PB_Any, "Arial", 10)))


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


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

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 272
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Пётр писал(а):
Код:
1
SetGadgetFont(0, FontID(LoadFont(#PB_Any, "Arial", 10)))


Спасибо, Пётр, буду разбираться.

qpAHToMAS писал(а):
Почему через WinAPI рисуешь, а не через PB?

Даже поэкспериментировал со StartDrawing, но запустить его с *nm\nmcd\hdc не получилось.


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

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


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

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


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

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