Раздел посвящен программированию с использованием Power Basic.
-
Dark Machine
-
- Продвинутый пользователь
-
-
- Сообщения: 126
- Зарегистрирован: 26.05.2004 (Ср) 13:12
Dark Machine » 26.12.2006 (Вт) 15:46
- Код: Выделить всё
#COMPILE EXE
#INCLUDE "Win32Api.inc"
GLOBAL hDlg AS LONG
CALLBACK FUNCTION CbMain()
LOCAL Pt AS POINTAPI
STATIC hTimer AS DWORD
SELECT CASE CBMSG
CASE %WM_INITDIALOG
hTimer = SetTimer (CBHNDL, &hFEED, 25, BYVAL 0)
CASE %WM_TIMER
GetCursorPos Pt
CONTROL SET TEXT CBHNDL, 1001, FORMAT$(Pt.x,"000") + ", " + FORMAT$(Pt.y,"000")
CASE %WM_DESTROY
KillTimer CBHNDL, hTimer
END SELECT
END FUNCTION
FUNCTION PBMAIN () AS LONG
DIALOG NEW 0, "Cursor test:", , , 100, 50, %WS_SYSMENU TO hDlg
CONTROL ADD LABEL, hDlg, 1001,"Test",15,10,70,15,,%WS_EX_CLIENTEDGE
DIALOG SHOW MODAL hDlg , CALL CbMain
END FUNCTION
[/code]
-
volo
-
- Продвинутый пользователь
-
-
- Сообщения: 142
- Зарегистрирован: 10.12.2004 (Пт) 11:18
- Откуда: Soviet Union
-
volo » 27.12.2006 (Ср) 11:54
Добавлю пример определения координат в окне:
- Код: Выделить всё
#COMPILE EXE
#INCLUDE "Win32Api.inc"
GLOBAL hDlg AS LONG
CALLBACK FUNCTION CbMain()
SELECT CASE CBMSG
CASE %WM_MOUSEMOVE
LOCAL xpos AS LONG, ypos AS LONG
xPos = LOWRD(CBLPARAM)'; // horizontal position of cursor
yPos = HIWRD(CBLPARAM)
CONTROL SET TEXT CBHNDL, 1001, FORMAT$(xpos,"000") + ", " + FORMAT$(ypos,"000")
END SELECT
END FUNCTION
FUNCTION PBMAIN () AS LONG
DIALOG NEW 0, "Cursor test:", , , 200, 250, %WS_SYSMENU TO hDlg
CONTROL ADD LABEL, hDlg, 1001,"Test",15,10,70,15,,%WS_EX_CLIENTEDGE
DIALOG SHOW MODAL hDlg , CALL CbMain
END FUNCTION
-
PBDN
-
- Обычный пользователь
-
-
- Сообщения: 59
- Зарегистрирован: 21.10.2006 (Сб) 22:10
PBDN » 29.12.2006 (Пт) 13:02
Ну и еще один примерчик
- Код: Выделить всё
#COMPILE EXE
#DIM ALL
'-------------------------------------------------------------------------------------------------------------------
#INCLUDE "WIN32API.INC"
'
%USEMACROS = 1 ' Eliminate unnecessary includes
$AppName = "MousePos"
'-------------------------
%StTxt_X = 1001
%StTxt_Y = 1002
%TxtBox_X = 1003
%TxtBox_Y = 1004
'-------------------------
'
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GLOBAL Flag_Work AS LONG ' -- Flag to stop thread
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'
'##############################################################################
FUNCTION Track (BYVAL hDlg AS DWORD) AS LONG
DIM Flag_Work AS GLOBAL LONG
DIM XY AS STATIC POINTAPI
LOCAL x,y AS LONG
'
Flag_Work = 1
'
WHILE Flag_Work
IF GetCursorPos(XY) = %FALSE THEN
MSGBOX "Can't catch mouse :)", _
%MB_SYSTEMMODAL OR %MB_ICONERROR, _
"WinAPI->GetCursorPos Error"
Flag_Work = 0 : PostMessage (hDlg, %WM_SYSCOMMAND, %SC_CLOSE, 0)
EXIT FUNCTION
END IF
IF XY.x<>x THEN x=XY.x : CONTROL SET TEXT hDlg, %TxtBox_X, STR$(x)
IF XY.y<>y THEN y=XY.y : CONTROL SET TEXT hDlg, %TxtBox_Y, STR$(y)
SLEEP 1 ' release time for other tasks
WEND '*********************************************************************
'
END FUNCTION
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
CALLBACK FUNCTION cbDlg() AS LONG
DIM Flag_Work AS GLOBAL LONG
STATIC hThread AS DWORD
LOCAL lResult AS LONG
'
SELECT CASE CBMSG
CASE %WM_INITDIALOG
THREAD CREATE Track(CBHNDL) TO hThread
'
CASE %WM_SYSCOMMAND
IF (CBWPARAM AND &HFFF0) = %SC_CLOSE THEN
Flag_Work=0
WaitForSingleObject(hThread,%INFINITE)
THREAD CLOSE hThread TO lResult
FUNCTION=0
END IF
END SELECT
'
END FUNCTION
'
FUNCTION PBMAIN()
LOCAL hDLG AS DWORD
'-- Creating dialog --------------------------------------------------------------
DIALOG NEW %HWND_DESKTOP, $AppName, 100,100, 75, 11, _
%WS_POPUP OR %WS_CAPTION OR %WS_SYSMENU OR %DS_SYSMODAL OR _
%WS_CLIPSIBLINGS OR %WS_VISIBLE,_
%WS_EX_TOPMOST OR %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR _
%WS_EX_LTRREADING , _
TO hDLG
'
CONTROL ADD LABEL, hDLG, %StTxt_X, "X:", 2, 1, 8, 7
CONTROL ADD TEXTBOX, hDLG, %TxtBox_X, "", 10, 0, 24, 10
'
CONTROL ADD LABEL, hDLG, %StTxt_Y, "Y:", 42, 1, 8, 7
CONTROL ADD TEXTBOX, hDLG, %TxtBox_Y, "", 49, 0, 24, 10
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DIALOG SHOW MODAL hDLG, CALL cbDlg()
END FUNCTION
Вернуться в Power Basic
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31