一、前言:
经过一段时间的摸索研究,最终用FreeBasic开发出PowerBasic风格的编程样式,相识度可达90%你不仅可以使用全部FB中的功能,而且还可以用PB习惯的编程方式书写代码。
简单代码过程,实现一个hello Word!
#define __FB_OUT_EXE__
#define __FB_OPTION_DYNAMIC__
#define __FB_OPTION_EXPLICIT__
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
REM #PBFORMS BEGIN INCLUDES
#INCLUDE ONCE "windows.bi"
#INCLUDE ONCE "win/mmsystem.bi"
#INCLUDE ONCE "win/windowsx.bi"
#INCLUDE ONCE "win/commctrl.bi"
#INCLUDE ONCE "win/uxtheme.bi"
#INCLUDE ONCE "PowerBasic_Style.bi"
REM #PBFORMS END INCLUDES
'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
REM #PBFORMS BEGIN CONSTANTS
#define IDD_DIALOG1 101
#define IDR_IMGFILE1 110
REM #PBFORMS END CONSTANTS
'------------------------------------------------------------------------------
' ** Declarations **
'------------------------------------------------------------------------------
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc ( )
DECLARE FUNCTION ShowDIALOG1 ( BYVAL hParent AS HWND ) AS LONG
REM #PBFORMS DECLARATIONS
'------------------------------------------------------------------------------
'GLOBAL CALL_ShowDIALOG1Proc AS DLGPROC = PROCPTR ( ShowDIALOG1Proc )
'==============================================================================
' ** Main Application Entry Point **
'==============================================================================
FUNCTION PBMAIN ( )
PBFormsInitComCtls ( ICC_WIN95_CLASSES OR ICC_DATE_CLASSES OR ICC_INTERNET_CLASSES )
ShowDIALOG1 HWND_DESKTOP
END FUNCTION
'==============================================================================
' ** CallBacks **
'==============================================================================
CALLBACK FUNCTION ShowDIALOG1Proc ( )
DIM Rct AS RECT
DIM hDC AS HDC
DIM hvBrush AS HBRUSH
SELECT CASE CB.MSG
CASE WM_INITDIALOG
MsgBox "WM_INITDIALOG"
CASE WM_NCACTIVATE
STATIC hWndSaveFocus AS HWND
IF ISFALSE ( CB.WPARAM ) THEN
hWndSaveFocus = GetFocus ( )
ELSEIF hWndSaveFocus THEN
SetFocus ( hWndSaveFocus )
hWndSaveFocus = 0
END IF
CASE WM_PAINT
DIM pnt AS PAINTSTRUCT
hDC = BeginPaint( CB.HNDL, @pnt )
GetClientRect ( CB.HNDL, @Rct )
SetBkMode hDC, TRANSPARENT
SetTextColor hDC, BGR ( 255, 0, 0 )
DrawText ( hDC, "PowerBasic64 For Windows!", -1, @Rct, DT_SINGLELINE or DT_CENTER or DT_VCENTER )
EndPaint( CB.HNDL, @pnt )
FUNCTION = TRUE
EXIT FUNCTION
CASE WM_COMMAND
CASE WM_CLOSE
IF MessageBox ( CB.HNDL, "是否退出程序?", "提示窗口", MB_YESNOCANCEL ) = IDYES THEN
DIALOG_END CB.HNDL
END IF
CASE WM_DESTROY
DIALOG_END CB.HNDL
CASE ELSE
FUNCTION = FALSE
END SELECT
END FUNCTION
'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowDIALOG1 ( BYVAL hParent AS HWND ) AS LONG
STATIC lRslt AS LRESULT
STATIC hDlg AS HWND
hDlg = DIALOG_NEW ( hParent, _
"PB/Win IDE 23.02", _
( GetSystemMetrics ( SM_CXSCREEN ) -320 ) / 2, _
( GetSystemMetrics ( SM_CYSCREEN ) - 200 ) / 2, _
320, _
200, _
WS_OVERLAPPEDWINDOW OR WS_MINIMIZEBOX OR WS_MAXIMIZEBOX OR _
WS_SIZEBOX OR DS_MODALFRAME OR DS_CENTER OR DS_SETFONT, _
WS_EX_WINDOWEDGE OR WS_EX_CONTROLPARENT ) 'WS_EX_TOPMOST OR WS_EX_DLGMODALFRAME
DIALOG_SET_ICON hDlg, "#" + STR ( IDR_IMGFILE1 )
DIALOG_SET_COLOR hDlg, -1, BGR ( 255,255,255 )
DIALOG_SHOW_MODAL hDlg, CALL_ShowDIALOG1Proc, lRslt
'DIALOG_SHOW_MODELESS hDlg, CALL_ShowDIALOG1Proc
'DIALOG_DOEVENTS
FUNCTION = lRslt
END FUNCTION
运行效果图: