03-23-2023, 07:38 AM
oK
now compile ..but stuck in memory
now compile ..but stuck in memory
Code: (Select All)
'test 1 GUI win32 api in QB64pe v3.2.1 by Aurel
CONST IDC_ARROW = &H7F00
CONST COLOR_WINDOW = 5
CONST WS_OVERLAPPED = 0
CONST WS_CHILD = &H40000000
CONST WS_VISIBLE = &H10000000
CONST WS_MAXIMIZE = &H01000000
CONST WS_CAPTION = &H00C00000
CONST WS_VSCROLL = &H00200000
CONST WS_HSCROLL = &H00100000
CONST WS_SYSMENU = &H00080000
CONST WS_THICKFRAME = &H00040000
CONST WS_TABSTOP = &H00010000
CONST WS_MINIMIZEBOX = &H00020000
CONST WS_MAXIMIZEBOX = &H00010000
CONST WS_OVERLAPPEDWINDOW = WS_OVERLAPPED OR WS_CAPTION OR WS_SYSMENU OR WS_THICKFRAME OR WS_MINIMIZEBOX OR WS_MAXIMIZEBOX
CONST CW_USEDEFAULT = &H80000000
CONST BS_PUSHBUTTON = 0
CONST BS_AUTOCHECKBOX = 3
CONST BS_GROUPBOX = 7
CONST BS_AUTORADIOBUTTON = 9
CONST BS_TEXT = 0
CONST BN_CLICKED = 0
CONST BM_GETCHECK = &HF0
CONST ES_LEFT = 0
CONST ES_MULTILINE = 4
CONST ES_AUTOVSCROLL = &H0040
CONST ES_AUTOHSCROLL = &H0080
CONST ES_WANTRETURN = &H1000
CONST WM_DESTROY = 2
CONST WM_GETTEXT = &H000D
CONST WM_CLOSE = &H0010
CONST WM_COMMAND = &H0111
CONST SW_SHOWDEFAULT = &HA
CONST SW_SHOW = 5
DECLARE LIBRARY "win"
FUNCTION GetWindowProc%& ()
END DECLARE
DECLARE DYNAMIC LIBRARY "user32"
FUNCTION SendMessageA%& (BYVAL hWnd%&, BYVAL Msg~&, BYVAL wParam~%&, BYVAL lParam%&)
FUNCTION DefWindowProcA%& (BYVAL hWnd%&, BYVAL Msg~&, BYVAL wParam~%&, BYVAL lParam%&)
SUB PostQuitMessage (BYVAL nExitCode&)
FUNCTION LoadCursorW%& (BYVAL hInstance%&, BYVAL lpCursorName%&)
FUNCTION RegisterClassA~% (BYVAL lpWndClass%&)
'FUNCTION CreateWindowEx%& (ByVal dwExStyle As Long, byval lpClassName%&, byval lpWindowName%&, Byval dwStyle As Long, Byval x As Long, Byval y As Long, Byval nWidth As Long, Byval nHeight As Long, Byval hWndParent As Long, Byval hMenu As Long, Byval hInstance As _OFFSET, Byval lpParam As Long )
FUNCTION CreateWindowExA%& (BYVAL dwExStyle~&, BYVAL lpClassName%&, BYVAL lpWindowName%&, BYVAL dwStyle~&, BYVAL x&, BYVAL y&, BYVAL nWidth&, BYVAL nHeight&, BYVAL hWndParent%&, BYVAL hMenu%&, BYVAL hInstance%&, BYVAL lpParam%&)
FUNCTION ShowWindow& (BYVAL hWnd%&, BYVAL nCmdShow&)
FUNCTION UpdateWindow& (BYVAL hWnd%&)
FUNCTION GetMessageA& (BYVAL lpMsg%&, BYVAL hWnd%&, BYVAL wMsgFilterMin~&, BYVAL wMsgFilterMax~&)
FUNCTION TranslateMessage& (BYVAL lpMsg%&)
FUNCTION DispatchMessageA%& (BYVAL lpmsg%&)
END DECLARE
DECLARE DYNAMIC LIBRARY "kernel32"
FUNCTION GetModuleHandleA%& (BYVAL lpModuleName%&)
'FUNCTION GetLastError~& ()
END DECLARE
TYPE POINT
x AS LONG
y AS LONG
END TYPE
' $IF 32BIT THEN
TYPE MSG
hwnd AS _OFFSET
message AS _UNSIGNED LONG
wParam AS _UNSIGNED _OFFSET 'unsigned pointer sized integer
lParam AS _OFFSET 'pointer sized integer
time AS _UNSIGNED LONG
pt AS POINT
END TYPE
TYPE WNDCLASSA
style AS _UNSIGNED LONG
lpfnWndProc AS _OFFSET
cbClsExtra AS LONG
cbWndExtra AS LONG
hInstance AS _OFFSET
hIcon AS _OFFSET
hCursor AS _OFFSET
hbrBackground AS _OFFSET
lpszMenuName AS _OFFSET
lpszClassName AS _OFFSET
END TYPE
DIM SHARED hi AS _OFFSET
DIM SHARED bRet AS LONG
DIM SHARED hw AS _OFFSET
DIM SHARED hwb0 AS _OFFSET
DIM SHARED hwb1 AS _OFFSET
DIM SHARED hwcb AS _OFFSET
DIM SHARED hwgb AS _OFFSET
DIM SHARED hwr0 AS _OFFSET
DIM SHARED hwr1 AS _OFFSET
DIM SHARED hwe AS _OFFSET
DIM SHARED wc AS WNDCLASSA
DIM SHARED wmsg AS MSG
DIM SHARED at AS _UNSIGNED INTEGER
DIM SHARED buf AS STRING * 4096
DIM SHARED discardb AS LONG
DIM SHARED discardp AS _OFFSET
DIM SHARED t0 AS STRING
DIM SHARED t1 AS STRING
DIM SHARED ClassName AS STRING
ClassName = "QB64pe" + CHR$(0)
'DIM SHARED crlf AS STRING * 2
'crlf = MKI$(&HA0D)
hi = GetModuleHandleA(0)
wc.style = 0
wc.lpfnWndProc = GetWindowProc
wc.cbClsExtra = 0
wc.cbWndExtra = 0
wc.hInstance = hi
wc.hIcon = 0
wc.hCursor = LoadCursorW(0, IDC_ARROW)
wc.hbrBackground = COLOR_WINDOW + 1
wc.lpszMenuName = 0
wc.lpszClassName = _OFFSET(ClassName)
at = RegisterClassA(_OFFSET(wc)): IF 0=at THEN SYSTEM
'create main window
t1 = "title" + CHR$(0)
hw = CreateWindowExA(0, _OFFSET(ClassName), _OFFSET(t1), WS_OVERLAPPEDWINDOW , 200, 200, 800, 600, 0, 0, hi, 0)
IF 0 = hw THEN SYSTEM
'ShowWindow(hw, SW_SHOW)
'UpdateWindow(hw)
discardb = ShowWindow(hw, SW_SHOW)
discardb = UpdateWindow(hw)
'win message loop..................................
DO
bRet = GetMessageA(_OFFSET(wmsg), 0, 0, 0)
SELECT CASE bRet
CASE 0, -1: EXIT DO
END SELECT
discardb = TranslateMessage(_OFFSET(wmsg))
discardp = DispatchMessageA(_OFFSET(wmsg))
'wend
LOOP
'..................................................
FUNCTION WindowProc%& (hWnd AS _OFFSET, uMsg AS _UNSIGNED LONG, wParam AS _UNSIGNED _OFFSET, lParam AS _OFFSET)
SELECT CASE uMsg
CASE WM_DESTROY
PostQuitMessage(0)
WindowProc=0 : EXIT FUNCTION
CASE ELSE
WindowProc = DefWindowProcA(hWnd, uMsg, wParam, lParam): EXIT FUNCTION
END SELECT
'WindowProc = DefWindowProcA(hWnd, uMsg, wParam, lParam)
END FUNCTION
micro(A)developer
http://basic4us.epizy.com/forum/index.php
http://basic4us.epizy.com/forum/index.php