Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.02.2008, 21:13
|
|
Прописка
Регистрация: 23.01.2008
Сообщений: 102
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 19 сообщении(ях)
|
Цитата:
|
(rc-фаил + WinApi)
|
Это требует ещё и API изучать!
Набросал по быстрому программу на PureBasic.
Она содержит окно с меню, панелью инструментов и строкой состояния.
При щелчка по меню или панели, в редакторе отображается идентификатор и текст из меню.
При создании программы не было использовано ни одной API функции, только встроеные. Вот код с подробными комментариями
Код:
|
; Открываем окно
OpenWindow(0,0,0,400,300,"Пример",#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadg et|#PB_Window_SizeGadget|#PB_Window_ScreenCentered |#PB_Window_Invisible)
CreateGadgetList( WindowID(0) )
EditorGadget(1,1,30,398,230) ; Создаём текстовый редактор
If CreateMenu(0,WindowID(0)) ; Создаём меню
MenuTitle("Файл") ; Создаём заголовок
MenuItem(1,"Новый") ; Заполняем меню
MenuItem(2,"Открыть")
MenuTitle("Правка") ; Новый заголовок
MenuItem(3,"Отменить")
MenuItem(4,"Повторить")
EndIf
If CreateToolBar(0,WindowID(0)) ; Создаём панель инструментов
ToolBarStandardButton(1,#PB_ToolBarIcon_New) ; Добавояем кнопки
ToolBarStandardButton(2,#PB_ToolBarIcon_Open)
ToolBarSeparator() ; Разделитель
ToolBarStandardButton(3,#PB_ToolBarIcon_Undo)
ToolBarStandardButton(4,#PB_ToolBarIcon_Redo)
; Подсказки для кнопок панели инструментов
ToolBarToolTip(0,1,"Новый")
ToolBarToolTip(0,2,"Открыть")
ToolBarToolTip(0,3,"Отменить")
ToolBarToolTip(0,4,"Повторить")
EndIf
If CreateStatusBar(0,WindowID(0)) ; Создаём строку состояния
AddStatusBarField(200) ; Выделяем 200 пикселей
StatusBarText(0,0,"PureBasic") ; Выводим текст на троку состояния
EndIf
SmartWindowRefresh(0, 1) ; Уменьшаем мерцания при изменении размеров окна
HideWindow(0,0) ; Отображаем окно
Repeat
Event=WaitWindowEvent() ; Узнаём текущее событие в программе
Menu=EventMenu() ; Узнаём ID активного пункта меню
If Event=#PB_Event_SizeWindow ; Размеры окна изменились
; Изменяем размеры редактора
ResizeGadget(1,#PB_Ignore,#PB_Ignore,WindowWidth(0 )-2,WindowHeight(0)-78)
EndIf
If Event=#PB_Event_Menu ; Щелчёк по пункту меню или по кнопке на панели инструментов
; Выводим информацию в редактор текста.
AddGadgetItem(1,-1,"ID - "+Str(Menu)+" текст - "+GetMenuItemText(0,Menu) )
EndIf
Until Event=#PB_Event_CloseWindow ; Закрываем окно
End ; Конец программы |
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/18022008/749064.jpg)
Прикрепленный файл: 6483305.rar
|
|
|
|
18.02.2008, 21:51
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Такс опять флуд развели...
Просил же...
На счет высказывания некоторых об ущербности пуре,
скажу - его основа FASM а на нем даже ось свою написали.
Легкая работа с апи и инлайн асм.
Легко создавать сами окошки , сосредоточив усилия на самой программе.
И не забывайте , для чего я советовал его использовать.
Короче попробуйте хотя бы перед тем как писать здесь.
А вытирать я счас начну ...
|
|
|
|
18.02.2008, 23:42
|
|
Прописка
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Вобще целью моего поста было, объяснить что такое FreeBasic и каковы его достоинства, а не то, лучше ли он Pure или нет.
Ты не причем , много других флудливых любителей С и ДЕЛФИ.
dosikus.
|
|
|
|
19.02.2008, 10:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
|
Сообщение от Evgen_F
|
Но чтобы человек мог сделать выбор, он должен знать что и из чего (все варианты) он выбирает. Затерев пост, Вы ограничиваете людям ВЫБОР!!
|
Как не вспомнить притчу о Буридановом осле ? Аж уши мои удлиняются и шерстью обрастают
__________________
Мыслю, следовательно существую
|
|
|
|
19.02.2008, 11:16
|
|
Прописка
Регистрация: 23.01.2008
Сообщений: 102
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 19 сообщении(ях)
|
Цитата:
|
Такую штуку в Делфи я (не программист, а радист, изучал делфю самомтоятельно 1 месяц) набросал бы мышой за 10 минут
|
PureBasic тоже имеет визуальный проектировщик окон, а кто Вам вообще сказал что я всё это вручную писал?
И ещё один момент, EXE-шник созданный на Делфи будет весить где-то 400Кб, а на PB только 21Кб, хоть с современным инетом это уже не так важно, но все же...
Я выложил этот пример, чтобы показать что на PureBasic можно создавать интерфейс без применения API функций, хотя если кому-то нравится, можно и API использовать.
Цитата:
|
Но чтобы человек мог сделать выбор, он должен знать что и из чего (все варианты) он выбирает
|
Согласен, тогда отдельно создавайте темы, посвещённые Си, Дельфи и т. д. Всё в кучу не надо, это только сбивает с толку.
Скачать полную версию PB 4.00 можно здесь http://gamefiles.ifolder.ru/1463137
|
|
|
|
19.02.2008, 12:05
|
|
Прописка
Регистрация: 23.01.2008
Сообщений: 102
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 19 сообщении(ях)
|
Скачать программу PureBasic 4.00 можно здесь http://gamefiles.ifolder.ru/1463137 Размер: 8.22 Мб, доступна до: 2008-03-17 20:31:04
В архиве есть всё (компилятор, редактор, визуальный разработчик окон и т. д.)
Пробуйте, а потом уже высказывайте своё мнение. (кто скачает, пожалуйста напишите, понравилась программа или нет)
В прекриплённом файле есть самораспаковывающийся архив с руссификатором (он находится в нутри обычного, поскольку нельзя загружать EXE-файлы). Его содержимое следует извлечь в папку с программой ( обычно это C:Program FilesPureBasic )
Вот скриншот редактора PureBasic
-- Прилагается рисунок: --
Прикрепленный файл: 3317311.rar
|
|
|
|
19.02.2008, 14:53
|
|
Частый гость
Регистрация: 27.11.2006
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Скачал --попробовал--да ничего так прикольно--тока гдеб на него документацию на русском найти--а то никак неразберусь как назначить обработку событий от кнопок , меню и т.д.--на делфи то в сети полно документации)))
|
|
|
|
19.02.2008, 19:06
|
|
Прописка
Регистрация: 23.01.2008
Сообщений: 102
Сказал спасибо: 0
Сказали Спасибо 21 раз(а) в 19 сообщении(ях)
|
Цитата:
|
тока гдеб на него документацию на русском найти
|
Вот русскоязычный сайт. Там есть ссыки на учебник и форум. http://pbasic.spb.ru/
В этой теме форума http://pbasic.spb.ru/phpBB2/viewtopic.php?t=59&start=15 можно найти ссылку на архив с учебником на русском.
Вот оф. сайт (на английском) http://purebasic.com/
ещё один сайт (на английском) http://purearea.net/
Вот пример обработки событий от нажания на экранную кнопку
Код:
|
; Создаём окно.
OpenWindow(1,150,200,200,100,"Заголовок окна",#PB_Window_MinimizeGadget)
CreateGadgetList( WindowID(1) ) ; Создаём пустой список гаджетов.
ButtonGadget(2,50,30,80,25,"Кнопка")
Repeat ; Начало главного цикла.
Event=WaitWindowEvent() ; Получаем идентификатор события.
Gadget=EventGadget() ; Узнаём идентификатор активного гаджета.
If Event=#PB_Event_Gadget And Gadget=2 ; Условие будет выполнено при щелчке по кнопке.
MessageRequester("Сообщение","Была нажата кнопка") ; Выводим на экран сообщение.
EndIf
Until Event = #PB_Event_CloseWindow ; Прерываем цикл если в переменной "Event" будет число равное числу в константе.
End ; Директива, завершающая программу. |
Обработка событий от меню
Код:
|
; Открываем окно
If OpenWindow(0, 200, 200, 290, 130,"Меню",#PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
; Создаём меню
If CreateMenu(0,WindowID(0))
; Создаём новый заголовок меню
MenuTitle("Файл")
; Создаём пункты меню
MenuItem(0,"Открыть")
MenuItem(1,"Сохранить")
; Разделитель между меню
MenuBar()
MenuItem(2,"Выход")
; Создаём новый заголовок меню
MenuTitle("Справка")
MenuItem(3,"О программе")
EndIf
Repeat
Event=WaitWindowEvent() ; Узнаём текущее событие в программе
Menu=EventMenu() ; Получаем идентификатор активного пункта меню
If Event=#PB_Event_Menu ; Условие будет выполнено, если произойдёт событие в меню
Select Menu ; Запоминаем идентификатор меню для последующего сравнения в операторах Case
Case 0 ; Произошло событие в пункте и идентификатором 0
MessageRequester("Меню","Пункт 'Открыть'")
Case 1 ; Произошло событие в пункте и идентификатором 1
MessageRequester("Меню","Пункт 'Сохранить'")
Case 2 ; Произошло событие в пункте и идентификатором 2
Exit=1 ; Записываем в переменную "Exit" число 1. Это прервёт цикл и программа закроется
Case 3 ; Произошло событие в пункте и идентификатором 3
MessageRequester("Меню","Пункт 'О программе'")
EndSelect ; Этот оператор завершает операцию выбора, начатую оператором Select
EndIf
If Event=#PB_Event_CloseWindow
Exit=1 ; При попытке закрыть окно, записываем в эту переменную число 1
EndIf
Until Exit=1 ; Цикл прервётся и программа завершит свою работу когда в переменной "Exit" будет число 1
EndIf
EndIf
End |
Эти примеры были взяты из учебника (выше была дана ссылка на тему форума, где его можно найти).
Если у кого возникнут проблемы в освоении программы PureBasic - спрашивайте не стесняйтесть.
В прикреплённом файле есть эти примеры и скомпилированые EXE-шники.
Прикрепленный файл: 1303259.rar
|
|
|
|
19.02.2008, 22:01
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Спасибо PIT_PB ,у меня просьба расскажи о своей программе
для ком порта .
Можно ее попробовать вместе с протеусом , есть драйвер виртульного порта...
Для любителей флуда...
Вынужден прибегнуть к крайним мерам.
пункт 1. Модератор всегда прав...
пункт 2. Если модератор не прав, смотри пункт 1.
|
|
|
|
20.02.2008, 09:39
|
|
Частый гость
Регистрация: 31.01.2008
Сообщений: 18
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Сообщение от CERGEI1982
|
Я за С++ ...
к тому же может в будещем для микроконтролеров можно будет писать на С++.
|
Уже давно пишу программы для микроконтроллеров (семейство MCS-51 (8-ми разр.) и ST91x (32-разр.ARM9)) на ядрёной смеси С и С++. Различия между этими языками постепенно стираются, за исключением классов (в С их по-прежнему не используют). Насчёт сложности изучения С - это миф. Изучал многие языки программирования - они все похожи! В С несколько усложнённый синтаксис, вот и всё. Если стоит программа выбора - для микроконтроллеров однозначно С. Для ПК - С++. Таблица "быстродействия" программ, написанных на версиях Бэйсика, Delfi и С++ и выводы автора этого "тестирования" просто притянутый за уши к желаемому результату бред!!! Он бы ещё привел программу на асме и доказал, что на Бэйсике можно написать прогу короче и быстрее, чем на асме...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:27.
|
|