Нужно чтобы окно програмы отображалось на сайте, т. е. в браузере?
Если так, то нужно генерировать HTML код страницы и обрабатывать запросы браузера, примерно как здесь USB градусник с передачей данных через интернет
Вопросы новичка (продолжение…)
Сообщений 421 страница 450 из 990
Поделиться42114.03.2011 23:59:12
Поделиться42215.03.2011 23:30:43
Извеняюсь за вопрос не потеме, а что это было, уже несколько недель форум как будто заснул. Я думал мало-ли, всех поголовно взломали. А тут проснелся вдруг!?
Поделиться42316.03.2011 00:41:27
За это время появилось несколько тем, к примеру
Журнал: ПРОграммист
Музыкальный плеер
Cвернуть все окна
Как запустить фаил из той-же директории WebGadget "index.html"
Поделиться42416.03.2011 22:21:29
Нужно чтобы окно програмы отображалось на сайте, т. е. в браузере?
Если так, то нужно генерировать HTML код страницы и обрабатывать запросы браузера, примерно как здесь USB градусник с передачей данных через интернет
Там должно быть так, что любой человек заходит на сайт и на страничке сайта есть интерфейс (пару кнопок и куда вводить и где будет результат отображаться), вводят текст и нажмают на кнопку и приложение действует там по алгоритму, этот пример в этом поможет? Я всё это время пытался в нём разобраться и не помогу понять там почти ничего, если Вам не трудно объясните пожалуйста, что да как можно сделать.
Поделиться42516.03.2011 22:49:15
Для этого нужно писать программу-сервер, которая будет генерировать WEB-страничку с кнопками, полями ввода текста и т. д., а потом, обрабатывать GET/POST запросы браузера с инфой из этих полей.
Но для этого нужно хорошо знать HTML.
Поделиться42617.03.2011 20:34:11
Пётр, спасибо.
Поделиться42719.03.2011 22:55:24
А скажите, допустим у меня есть папка к которой я знаю путь, а в этой папке есть ещё одна папка имени которой я незнаю. Но она там только одна. Мне надо открыть файл находящийся в папке имени которой я не знаю. Как открыть папку имени которой незнаешь если знаешь её содержимое и то что она в папке только одна?
Поделиться42819.03.2011 23:32:42
Копай в этом направлении:
Directory$ = "C:\" ; Lists all entries in the Windows directory (without the contents of sub-directories)
If ExamineDirectory(0, Directory$, "*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
Type$ = " [File] "
Else
Type$ = " [Sub-Dir] "
EndIf
Debug DirectoryEntryName(0) + Type$ + "- Size in byte: " + Str(DirectoryEntrySize(0))
Wend
FinishDirectory(0)
EndIfПоделиться42921.03.2011 20:07:05
Мне нужно чтоб программа выполняла определённые действия как только комп подключится к интернету. Как это осуществить?
Поделиться43021.03.2011 20:10:22
Для XP
Procedure.l InternetConnected() Protected dwConnectionTypes.l = #INTERNET_CONNECTION_MODEM + #INTERNET_CONNECTION_LAN + #INTERNET_CONNECTION_PROXY ProcedureReturn InternetGetConnectedState_(@dwConnectionTypes,0) EndProcedure Debug InternetConnected()
Поделиться43121.03.2011 20:40:53
Спасиб, но у меня win7, но я попробовал, тоже идёт
Поделиться43221.03.2011 22:31:31
Проверить наличие доступа в интернет, можно соединившись с любым сайтом, скажем, с wwwgoogle.ru
InitNetwork()
Connect=OpenNetworkConnection("www.google.ru",80)
If Connect
CloseNetworkConnection(Connect)
MessageRequester("", "Инет есть", #MB_OK|#MB_ICONINFORMATION)
Else
MessageRequester("", "Инета нету", #MB_OK|#MB_ICONWARNING)
EndIfПоделиться43329.03.2011 14:23:51
У меня есть программа которая при запуске через какоето время вылетает с ошибкой. Я сделал exeшник и проблема осталась. Но в свойствах в разделе "Совместимость" я поставил галочку "Запускать в совместимости с Win95" и всё заработало. Ну а мой вопрос в том, как в PureBasic запускать код в совместимость с превидущими версиями винды. У меня Win7. Заранее спасибо.
Поделиться43406.04.2011 16:37:15
Поделитесь примером изменения размера окна и гаджета мышкой (окно и гаджет одного размера, окно без рамки) 
Поделиться43506.04.2011 16:53:09
Поделитесь примером
Вырезал из Онлайн переводчика, разбирайся...
Enumeration
#Window_0
#But
EndEnumeration
OpenWindow(#Window_0,0,0,200,100,"Онлайн перевод",#PB_Window_ScreenCentered|#PB_Window_Invisible|#PB_Window_BorderLess)
SetWindowColor(#Window_0,$473929)
ButtonGadget(#But,120,70,70,20,"")
HideWindow(#Window_0,0)
Repeat
Event = HotkeyWaitWindowEvent()
mx.l = WindowMouseX(#Window_0)
my.l = WindowMouseY(#Window_0)
x = WindowWidth(#Window_0)
y=WindowHeight(#Window_0)
If Event=#PB_Event_SizeWindow
ResizeGadget(#But,x-80,y-30,#PB_Ignore,#PB_Ignore)
EndIf
If ((mx > 0 And mx < x) And (my > y-5 And my < y)) Or ((mx >x-5 And mx < x) And (my > 0 And my < y)) ; растянуть
SetCursor_(LoadCursor_(0,#IDC_SIZEALL)) ; курсор стрелка
EndIf
Select Event
Case #WM_LBUTTONDOWN
; перемещение
If mx >= 0 And mx <= 350-85 And my >= 0 And my <= 35
ReleaseCapture_()
SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
; растягивание
If ((mx > 0 And mx < x) And (my > y-5 And my < y)) Or ((mx >x-5 And mx < x) And (my > 0 And my < y))
ReleaseCapture_()
SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTBOTTOMRIGHT , 0)
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #But
EndSelect
EndSelect
ForEverОтредактировано mirashic (06.04.2011 16:56:42)
Поделиться43606.04.2011 18:04:04
mirashic
Спасибо, почти то, но у меня винда в виртуалке, и пурик ругается на HotkeyWaitWindowEvent, это первое и второе у меня есть события: нажали ПКМ, отпустили ПКМ и мышь на границе окна(гаджета) и самое главное у меня нет SendMessage_ 
отсюда следует, что мне нужно высчитывать положение мыши и её перемещение, далее ResizeWindow() и ResizeGadget(). Перепробовал всяко, то не растягивается, то мышь улетает на 100 пиксел а окно растягивается на30 пиксел, то ещё чего нибудь, весь мозг сломал, а результата ноль, поэтому и спросил может кто делал подобное 
Поделиться43706.04.2011 18:23:36
HotkeyWaitWindowEvent() - это я случайно оставил замени её WaitWindowEvent()
Поделиться43806.04.2011 18:33:35
У меня есть программа которая при запуске через какоето время вылетает с ошибкой.
Запусти прогу в среде PureBasic и при возникновении ошибки, будет отмечена строка в которой она произошла и появится краткое описание ошибки.
я поставил галочку "Запускать в совместимости с Win95" и всё заработало.
Это не решение проблемы - нужно искать ошибку в коде.
Поделиться43906.04.2011 19:00:42
mirashic
Как вариант пойдёт, но нужно иметь возможность тянуть окно за любую сторону, а не как здесь(только за правый нижний угол). Может ещё какие варианты есть?
Поделиться44006.04.2011 19:45:26
Как вариант, нарисовать своё окно (где рамка о фон совпадают) и применить библиотеку: SkinFeature.dll
Тогда можно тянуть за все 4 стороны...
http://purebasic.info/phpBB2/viewtopic.php?t=1465
что то типа: http://purebasic.ucoz.com/77.rar
Отредактировано mirashic (06.04.2011 19:49:51)
Поделиться44106.04.2011 20:34:15
применить библиотеку: SkinFeature.dll
Интересно как её прикрутить к Linux-проге?
Поделиться44206.04.2011 20:36:12
А негде не сказано про Linux ? Я наверно пропустил...
Отредактировано mirashic (06.04.2011 20:37:13)
Поделиться44306.04.2011 21:11:13
А негде не сказано про Linux ?
Косвенный признак
и самое главное у меня нет SendMessage_
Поделиться44410.04.2011 15:44:05
Где в XP хранятся настройки PureBasic, после сбоя пропали все панели инструментов, всё востановил, а панель шаблонов -нет ?
Поделиться44510.04.2011 15:51:46
Где в XP хранятся настройки PureBasic
C:\Documents and Settings\User\Application Data\PureBasic
Поделиться44610.04.2011 15:52:25
Спасибо.
Поделиться44715.04.2011 01:05:11
Запусти прогу в среде PureBasic и при возникновении ошибки, будет отмечена строка в которой она произошла и появится краткое описание ошибки.
Дело в том что ошибки как таковой нет. Программа "не отвечает" и зависает.
Вот программа:
; English forum:
; Author: Franco (updated for PB4.00 by benny)
; Date: 31. December 2004
; OS: Windows
; Demo: No
; 3D_Example coded by Franco
; based on an initial isometric 3D-code from Deeйm2031 (german forum)
;#PI = 3.1415626
;Don't know what this is... anyway:
;good visual results for CAD with 36000
Constant.f=360 * 360 ; to be on the save side...
;For gaming: 2.828 -> isometric
;Constant.f = 2 * Sqr(2)
Global _sin.f, _cos.f
Dim _sin.f(360)
Dim _cos.f(360)
CameraPosition.f = 18
Procedure d_init3d(ScreenWidth.l,ScreenHeight.l)
; write sin und cos in Array
; Dim _sin.f(360)
; Dim _cos.f(360)
Shared _sin(), _cos()
For i = 0 To 360
_sin(i) = Sin(i/(180/#PI))
_cos(i) = Cos(i/(180/#PI))
Next i
; Screen stuff...
Global ScreenWidth2.l
Global ScreenHeight2.l
ScreenWidth2.l = Round((ScreenWidth/2),0)
ScreenHeight2.l = Round((ScreenHeight/2),0)
Global wx.l
Global wy.l
Global wz.l
EndProcedure
Procedure.f CalcXRotation(x.f,y.f,z.f)
Shared _cos(), _sin()
Result.f = _cos(wy) * _cos(wz) * x - _cos(wy) * _sin(wz) * y + _sin(wy) * z
ProcedureReturn Result
EndProcedure
Procedure.f CalcYRotation(x.f,y.f,z.f)
Shared _cos(), _sin()
Result.f = (_cos(wx) * _sin(wz) + _sin(wx) * _sin(wy) * _cos(wz)) * x + (_cos(wx) * _cos(wz) - _sin(wx) * _sin(wy) * _sin(wz)) * y - _sin(wx) * _cos(wy) * z
ProcedureReturn Result
EndProcedure
Procedure.f CalcZRotation(x.f,y.f,z.f)
Shared _cos(), _sin()
Result.f = (_sin(wx) * _sin(wz) - _cos(wx) * _sin(wy) * _cos(wz)) *y + (_sin(wx) * _cos(wz) + _cos(wx) * _sin(wy) * _sin(wz)) * y + _cos(wx) * _cos(wy) * z
ProcedureReturn Result
EndProcedure
Procedure CheckXRotation(x.l)
If x >= 360
Repeat
x - 360
Until x >= 0 And x < 360
EndIf
If x < 0
Repeat
x + 360
Until x >= 0 And x < 360
EndIf
ProcedureReturn x
EndProcedure
Procedure CheckYRotation(y.l)
If y >= 360
Repeat
y - 360
Until y >= 0 And y < 360
EndIf
If y < 0
Repeat
y + 360
Until y >= 0 And y < 360
EndIf
ProcedureReturn y
EndProcedure
Procedure CheckZRotation(z.l)
If z >= 360
Repeat
z - 360
Until z >= 0 And z < 360
EndIf
If z < 0
Repeat
z + 360
Until z >= 0 And z < 360
EndIf
ProcedureReturn z
EndProcedure
Procedure d_circle3d(x1.f,y1.f,z1.f,diameter.f)
Shared Constant, CameraPosition
; calculate rotation
xx.f = CalcXRotation(x1*CameraPosition,y1*CameraPosition,z1*CameraPosition)
yy.f = CalcYRotation(x1*CameraPosition,y1*CameraPosition,z1*CameraPosition)
zz.f = CalcZRotation(x1*CameraPosition,y1*CameraPosition,z1*CameraPosition)
; 1. convert to 2D coordinates
; 2. draw it...
Circle(Round(xx-zz/Constant,0)+ScreenWidth2,Round(yy-zz/Constant,0)+ScreenHeight2, diameter*CameraPosition)
EndProcedure
Procedure d_line3d(x1.f,y1.f,z1.f,x2.f,y2.f,z2.f)
Shared Constant,CameraPosition
; calculate rotation
xx.f = CalcXRotation(x1*CameraPosition,y1*CameraPosition,z1*CameraPosition)
yy.f = CalcYRotation(x1*CameraPosition,y1*CameraPosition,z1*CameraPosition)
zz.f = CalcZRotation(x1*CameraPosition,y1*CameraPosition,z1*CameraPosition)
xx2.f = CalcXRotation(x2*CameraPosition,y2*CameraPosition,z2*CameraPosition)
yy2.f = CalcYRotation(x2*CameraPosition,y2*CameraPosition,z2*CameraPosition)
zz2.f = CalcZRotation(x2*CameraPosition,y2*CameraPosition,z2*CameraPosition)
; 1. convert to 2D coordinates
; 2. draw it...
LineXY(Round(xx-zz/Constant,0)+ScreenWidth2,Round(yy-zz/Constant,0)+ScreenHeight2,Round(xx2-zz2/Constant,0)+ScreenWidth2,Round(yy2-zz2/Constant,0)+ScreenHeight2)
EndProcedure
;- Init stuff
InitSprite()
InitMouse()
InitKeyboard()
d_init3d(1021,716)
OpenWindow(1,100,200,750,480,"Test",#PB_Window_SystemMenu)
OpenWindowedScreen( WindowID(1),10,10,800,600,1,10,10)
;- main program
x.f = 0
y.f = 0
z.f = 0
Start.l = 1
Repeat
ExamineMouse()
ExamineKeyboard()
; check rotation -> if x, y and z <0 or >360 error
wx = CheckXRotation(x)
wy = CheckYRotation(y)
wz = CheckZRotation(z)
ClearScreen(RGB(0,0,0))
StartDrawing(ScreenOutput())
; DrawingMode:
; 0: Default mode, text is displayed with background, graphics shape are filled
; 1: Set the text background transparent
; 2: Enable the XOr mode (all graphics are XOR'ed with current background)
; 4: Enable the outlined shape. Circle, Box etc... will be only outlined, no more filled.
DrawingMode(0)
; set the circle on top of the component
FrontColor(RGB(255,0,0))
d_circle3d(0,0,4,0.2)
FrontColor(RGB(255,255,255))
; IC SOL18-P-300-1.27 Toshiba ULN2803
; dimensions in millimeter
; body top
d_line3d( -15.775, 3.75, 1.15,-25.775, 3.75, 1.15)
d_line3d( -15.775,-3.75, 1.15,-25.775,-3.75, 1.15)
d_line3d( -25.775, 3.75, 1.15,-25.775,-3.75, 1.15)
d_line3d( -15.775, 3.75, 1.15,-15.775,-3.75, 1.15)
;body bottom
d_line3d( -15.775, 3.75,-1.15,-25.775, 3.75,-1.15)
d_line3d( -15.775,-3.75,-1.15,-25.775,-3.75,-1.15)
d_line3d( -25.775, 3.75,-1.15,-25.775,-3.75,-1.15)
d_line3d( -15.775, 3.75,-1.15,-15.775,-3.75,-1.15)
;body z corners
d_line3d( -25.775, 3.75, 1.15,-25.775, 3.75,-1.15)
d_line3d( -15.775, 3.75, 1.15,-15.775, 3.75,-1.15)
d_line3d( -25.775,-3.75, 1.15,-25.775,-3.75,-1.15)
d_line3d( -15.775,-3.75, 1.15,-15.775,-3.75,-1.15)
; IC SOL18-P-300-1.27 Toshiba ULN2803
; dimensions in millimeter
; body top
d_line3d( -5.775, 3.75, 1.15, 5.775, 3.75, 1.15)
d_line3d( -5.775,-3.75, 1.15, 5.775,-3.75, 1.15)
d_line3d( 5.775, 3.75, 1.15, 5.775,-3.75, 1.15)
d_line3d( -5.775, 3.75, 1.15,-5.775,-3.75, 1.15)
;body bottom
d_line3d( -5.775, 3.75,-1.15, 5.775, 3.75,-1.15)
d_line3d( -5.775,-3.75,-1.15, 5.775,-3.75,-1.15)
d_line3d( 5.775, 3.75,-1.15, 5.775,-3.75,-1.15)
d_line3d( -5.775, 3.75,-1.15,-5.775,-3.75,-1.15)
;body z corners
d_line3d( 5.775, 3.75, 1.15, 5.775, 3.75,-1.15)
d_line3d( -5.775, 3.75, 1.15,-5.775, 3.75,-1.15)
d_line3d( 5.775,-3.75, 1.15, 5.775,-3.75,-1.15)
d_line3d( -5.775,-3.75, 1.15,-5.775,-3.75,-1.15)
;lead # 5
d_line3d( 0.24, 3.75, 0.14,-0.24, 3.75, 0.14)
d_line3d( 0.24, 3.75,-0.14,-0.24, 3.75,-0.14)
d_line3d( 0.24, 3.75, 0.14, 0.24, 3.75,-0.14)
d_line3d( -0.24, 3.75, 0.14,-0.24, 3.75,-0.14)
d_line3d( 0.24, 3.75, 0.14, 0.24, 4.49, 0.14)
d_line3d( -0.24, 3.75, 0.14,-0.24, 4.49, 0.14)
d_line3d( 0.24, 3.75,-0.14, 0.24, 4.31,-0.14)
d_line3d( -0.24, 3.75,-0.14,-0.24, 4.31,-0.14)
d_line3d( 0.24, 4.49, 0.14, 0.24, 4.49,-1.22)
d_line3d( -0.24, 4.49, 0.14,-0.24, 4.49,-1.22)
d_line3d( 0.24, 4.31,-0.14, 0.24, 4.31,-1.50)
d_line3d( -0.24, 4.31,-0.14,-0.24, 4.31,-1.50)
d_line3d( 0.24, 4.49, 0.14,-0.24, 4.49, 0.14)
d_line3d( 0.24, 3.75,-0.14,-0.24, 3.75,-0.14)
d_line3d( 0.24, 4.49,-1.22, 0.24, 5.15,-1.22)
d_line3d( -0.24, 4.49,-1.22,-0.24, 5.15,-1.22)
d_line3d( 0.24, 4.31,-1.50, 0.24, 5.15,-1.50)
d_line3d( -0.24, 4.31,-1.50,-0.24, 5.15,-1.50)
d_line3d( 0.24, 5.15,-1.22,-0.24, 5.15,-1.22)
d_line3d( 0.24, 5.15,-1.50,-0.24, 5.15,-1.50)
d_line3d( 0.24, 5.15,-1.22, 0.24, 5.15,-1.50)
d_line3d( -0.24, 5.15,-1.22,-0.24, 5.15,-1.50)
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Home)
Constant = Constant * 1.02
SetWindowText_(WindowID(1),StrF(Constant))
EndIf
If KeyboardPushed(#PB_Key_End)
Constant = Constant * 0.98
SetWindowText_(WindowID(1),StrF(Constant))
EndIf
If KeyboardPushed(#PB_Key_PageUp)
CameraPosition = CameraPosition * 1.02
EndIf
If KeyboardPushed(#PB_Key_PageDown)
CameraPosition = CameraPosition * 0.98
EndIf
If KeyboardPushed(#PB_Key_Up)
x = x - 1 ;normally it should be y
EndIf
If KeyboardPushed(#PB_Key_Down)
x = x + 1 ;normally it should be y
EndIf
If KeyboardPushed(#PB_Key_Right)
y = y - 1 ;normally it should be x
EndIf
If KeyboardPushed(#PB_Key_Left)
y = y + 1 ;normally it should be x
EndIf
If KeyboardPushed(#PB_Key_Delete)
z = z - 1
EndIf
If KeyboardPushed(#PB_Key_Insert)
z = z + 1
EndIf
If KeyboardPushed(#PB_Key_F1)
x = 0
y = 0
z = 0
EndIf
SetWindowText_(WindowID(1)," X: " + Str(wx) + " Y: " + Str(wy) + " Z: " + Str(wz) + " SinX: " + StrF(_sin(wx),2) + " SinY: " + StrF(_sin(wy),2) + " SinZ: " + StrF(_sin(wz),2) + " CosX: " + StrF(_cos(wx),2) + " CosY: " + StrF(_cos(wy),2) + " CosZ: " + StrF(_cos(wz),2) + " Constant: " + StrF(Constant))
Until MouseButton(1) Or KeyboardPushed(#PB_Key_Escape)
EndПоделиться44815.04.2011 02:20:00
Подскажите пожалуйста, вот у меня программа
OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 10, 250, 120)
AddGadgetItem (0, 0, "1")
AddGadgetItem (0, 1, "2")
Repeat
event=WindowEvent()
If event=#PB_Event_Gadget And EventType() =#PB_EventType_LeftDoubleClick
Debug "был клик на одну штуку, а как определить на какую???"
EndIf
Until event =#PB_Event_CloseWindowкоторая выводит список. Я например хочу кликнуть на один из пунктов. Но я незнаю как проработать сабытие. Представленное событие говорит о том что я нажал что то. А как определить что я нажал?
Поделиться44915.04.2011 08:21:10
Я например хочу кликнуть на один из пунктов
#List=1
OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(#List, 10, 10, 250, 120)
AddGadgetItem (#List,-1, "1")
AddGadgetItem (#List,-1, "2")
AddGadgetItem (#List,-1, "3")
AddGadgetItem (#List,-1, "4")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #List
Debug GetGadgetText(#List)
EndSelect
EndSelect
If Event = #PB_Event_CloseWindow
Break
EndIf
ForEverПоделиться45015.04.2011 11:16:04
Дело в том что ошибки как таковой нет. Программа "не отвечает" и зависает.
У меня она почему-то не висла.
Возможно что виснет в цикле одной из процедур при некоторых условиях.
А как определить что я нажал?
Для этого есть функции GetGadgetState чтобы узнать позицию пункта и GetGadgetText чтобы получить текст пункта, по которому кликнули.
Похожие темы
| Какая версия? | OffTop | 03.10.2021 |
| Мне постоянно пищет вот это | Вопросы по PureBasic | 14.10.2011 |
| Размер экрана в пикселях | Вопросы по PureBasic | 13.02.2011 |
| консоль | Вопросы по PureBasic | 19.03.2015 |
| Полноэкранные приложения на purebasic | Вопросы по PureBasic | 08.03.2011 |