用FreeBasic编写的PowerBasic32/64位版本

一、前言:

经过一段时间的摸索研究,最终用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

运行效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值