|
想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)
DEFINT A-Z
''-------------------------------------------------------------------
''定义各控件最多可用的数目:
''** 依控件使用的数目进行相对的修改, 节省内存容量
CONST MaxButton = 10, MaxCheck = 5, MaxOptG = 2, MaxOptI = 5
'' 按钮 复选按钮 单选按钮(组数),(每组项目数)
CONST MaxFrame = 5, MaxList = 1, MaxListItem = 20, MaxText = 5
'' 框架 列表框 , 每一列表项目数 文本框
CONST MaxCombo = 5, MaxLabel = 5, MaxMainMenu = 5, MaxMenuItem = 10
'' 下拉式列表 标签 菜单 菜单项目
CONST MaxPercent = 0
''** 依你所需要的列表滚动速度进行设置(-1到10)
CONST ListScrollSpeed = 1 ''列表屏幕滚动速度(-1最快)
''$INCLUDE: ''..\qbwin\qbwin.BI''
''$INCLUDE: ''..\qbwin\Qbwin.DAT''
SystemInit 1 ''系统初始化
''0:不使用中文字库与输入法文件
''1:必须要中文字库文件(QBWIN.FNT),否则程序不能运行
''-1:如果程序找到有中文字库与输入法文件时可以使用,可以不使用
''定义及初始化用户变量区域 ----------------------------
''-----------------------------------------------------
DO
''桌面定义
''格式: DrawDesktop 提示行开关,桌面颜色,提示行字体颜色,背景色,提示文字$
IF ExitWin < 2 THEN DrawDesktop 2, 3, 0, 7, "按 Ctrl+F1 键打开/关闭输入法"
''各表单控件读入区域, 读入各种控件之间用 [=] 表示该种控件读完
SELECT CASE Wins
CASE 0:
''读入窗口
''格式: LoadWindow X,Y,W,H,Font,BC,Box,TC,Caption
LoadWindow -1, -1, 530, 380, 1125, 7, -1, 1, "实例源程序"
''说明:
'' X: X坐标 -1: 向中间对齐
'' Y: Y坐标 同上
'' W: 宽度
'' H: 高度
''Font: 字型 (0-5)
'' BC: 背景色(0-15)
'' Box: 0:禁止关闭按钮 -1:可用关闭按钮 1:屏蔽关闭按钮
'' TC: 标题栏颜色
''Caption: 窗口标题
''变量: Wins: 调用窗口序号
'' ExitWin: 退出当前窗口
'' =0: 执行过程循环(窗口运行时)
'' =1: 退出当前窗口, 若调用其它窗口时重画背景
'' =2: 退出当前窗口, 若调用其它窗口时保留原来背景
RESTORE WIN00
WIN00:
''热键值: Alt+ F1=360 1=376 Q=272 A=286 Z=300
LoadMenu ''读入菜单
''格式: DATA [-,Hotkey,] Enabled,Value,Caption []里的参数为分组用
DATA -,289,4,0,文件(F)
''主菜单, 热键为Alt+F, 键值为289
DATA 1,100,"显示(1)"
DATA 1,0,激活/禁用<实例>菜单(2)
DATA 1,0,
''标题为空时, 为阻隔线
DATA 1,0,退出(X)
DATA -,290,0,5,G.实例
''主菜单, 热键为Alt+G, 键值为290
DATA 1,-1,"1.激活文本输入框"
''复选式
DATA 1,0,
DATA 1,1,A.激活下拉列表
DATA 1,0,B.禁用下拉列表
''单选式
DATA -,-1,1,1,
DATA 1,0,"&1 "
DATA 1,0,&2
DATA 1,0,&3
DATA 1,0,&4
DATA 1,0,&5
DATA 1,0,&6
DATA =
SumMMenu = SumMMenu - 1 ''隐藏鼠标右键菜单
''表示菜单控件读入完毕
''说明:
'' Hotkey: 热键值
'' Enabled: 是否激活
'' Value: 是否选择(-1到1), 0:普通 -1:打钩 1:三角箭头
'' 对于主菜单项目该值无意义, 而它的值决定的是该项主菜单项目的光
'' 带颜色(0-15).
''菜单单击事件子程序: C.MenuClick
''----框架被读入到变量中
LoadFrame 1 ''读入框架 是否读入到变量
''格式: DATA X,Y,W,H,FC,FM,BC,Mode,Caption
DATA 220,180,120,90,1,0,15,6,""
DATA =
''----普通的显示式框架
LoadFrame 0 ''读入框架 是否读入到变量
''格式: DATA X,Y,W,H,FC,FM,BC,Mode,Caption
DATA 5,30,350,300,1,2,-1,7,框架
DATA =
'' X: X坐标
'' Y: Y坐标
'' W: 宽度
'' H: 高度
'' FC: 标题字体颜色
'' BC: 背景色
''Mode: 框架风格(0-7)
''以下两个事件子程序只有在框架被读入到变量后才能发生
''框架按钮事件子程序: C.FrameClick
''框架双击事件子程序: C.FrameDblClick
LoadLabel 0, 0 ''读入标签 是否读入到变量, 背景框
''格式: DATA X,Y,BW,FW,FH,FC,BC,FM,Style,Caption
DATA 380,30,0,14,32,0,-1,6,0,"Ctrl+F1`切换输入法"
DATA 230,160,0,16,12,0,-1,8,0,请按鼠标右键
DATA 10,337,0,14,12,0,-1,25,0,"进度条:"
DATA =
''说明:
'' X: X坐标
'' Y: Y坐标
'' BW: 显示区字符数 0:自动
'' FW: 字宽
'' FH: 字高
'' FC: 字体颜色
'' BC: 背景色 -1:透明
'' FM: 字型模式 0:正常 1:凹陷 2:突出 3:粗体
'' Style: 显示风格 0:左对齐 1:右对齐
LoadText ''读入文本框
''格式: DATA X,Y,BW,Enabled,FC,PassWord,MaxLen,Hotkey,3D
DATA 20,50,30,0,0,0,100,-1,-1
DATA =
''说明:
'' X: X坐标
'' Y: Y坐标
'' BW: 可示字符数
'' Enabled: 当前激活状态
'' FC: 字体颜色
'' MaxLen: 最多输入字符数
'' Hotkey: 热键值
'' G3D: 是否立体效果
''编辑键说明: Ctrl+Del: 剪切 403
'' Ctrl+Ins: 粘贴 402
'' Ctrl+C : 复制 3
''
''文本框键盘事件子程序: C.TextKeyPress
LoadOption ''读入单选按钮
''格式: DATA [-,Value,] X,Y,Enabled,Hotkey,Caption []里的参数为分组用
DATA -,0,20,90,1,-1,组1(0)
DATA 20,110,1,-1,组1(1)
DATA -,1,120,90,1,-2,组2(0)
DATA 120,110,0,-2,组2(1)
DATA 120,130,1,-2,组2(2)
DATA =
''说明:
'' Value: 被选择的项目序号 *对应的变量是OptBValue(组序号)
'' X: X坐标
'' Y: Y坐标
'' Enabled: 当前激活状态
'' Hotkey: 热键值
''单选按钮单击事件子程序: C.OptionClick
LoadCheck ''读入复选按钮
''格式: DATA X,Y,Enabled,Value,Hotkey,Caption
DATA 220,90,1,1,-1,Check1
DATA 220,110,0,0,-2,复选按扭2
DATA =
''说明:
'' X: X坐标
'' Y: Y坐标
'' Enabled: 当前激活状态
'' Value: 当前选择状态
'' Hotkey: 热键值
''复选按钮单击事件子程序: C.CheckClick
LoadButton 0 ''读入命令按钮 背景框
''格式: DATA X,Y,W,H,Enabled,FC,FW,FH,Hotkey,Caption
DATA 380,100,120,35,1,105,22,12,-1,按钮1
DATA 380,150,80,25,1,101,30,12,-1,按钮2
DATA 380,210,80,40,1,213,5,12,-1,"打开`输入法"
DATA 380,270,80,40,1,1,25,12,-1,"关闭`输入法"
DATA 210,305,20,17,1,1,0,12,-1,"-"
DATA 260,305,20,17,1,1,0,12,-1,"+"
DATA =
''说明:
'' X: X坐标
'' Y: Y坐标
'' W: 宽度
'' H: 高度
'' Enabled: 当前激活状态
'' FC: 字体颜色
'' FW: 字宽
'' FH: 字高
'' Hotkey: 热键值
''按钮单击事件子程序: C.ButtonClick
LoadList ''读入列表框
''格式: DATA X,Y,BW,Col,BH,Hotkey,3D
DATA 20,160,20,1,8,-1,-1
DATA =
ListAdd 0, -1, "列表项目0"
ListAdd 0, -1, "列表项目1"
ListAdd 0, -1, "列表项目2"
ListAdd 0, -1, "列表项目3"
ListAdd 0, -1, "列表项目4"
ListAdd 0, -1, "列表项目5"
ListAdd 0, -1, "列表项目6"
ListAdd 0, -1, "列表项目7"
ListAdd 0, -1, "列表项目8"
ListAdd 0, -1, CHR$(255) + "5"
ListB(0).Index = 2 ''定义列表索引值为2, 若不定义值为-1即没有选定项目
''说明:
'' X: X坐标
'' Y: Y坐标
'' BW: 字符数
'' BH: 行数
'' Hotkey: 热键值
'' G3D: 是否立体效果
''变量: ListI(序号,项目号): 项目标题$
''配合子程序: ListAdd (序号,插入位置,项目$) 如果插入位置为-1时,即追加
'' ListRemove (序号,删除位置)
'' 如果删除位置为-1时,即从最后删除
'' -2时,即全部删除
''列表单击事件子程序: C.ListClick
''列表双击事件子程序: C.ListDblClick
''列表键盘事件子程序: C.ListKeyPress
LoadCombo ''读入下拉式列表框
''格式: DATA X,Y,BW,Col,Enabled,Hotkey,3D
DATA 20,290,20,2,1,-1,-1
DATA =
ListAdd 1, -1, "下拉列表项目0"
ListAdd 1, -1, "下拉列表项目1"
ListAdd 1, -1, "下拉列表项目2"
ListAdd 1, -1, "下拉列表项目3"
ListAdd 1, -1, "下拉列表项目4"
ListAdd 1, -1, CHR$(255) + "3"
ListAdd 1, -1, CHR$(255) + "13"
ListAdd 1, -1, CHR$(255) + "15"
ListAdd 1, -1, CHR$(255) + "5"
SetCombo 0, 3 ''设置下拉列表的索引值为3 相对ListB(1).Index=3
''说明:
'' X: X坐标
'' Y: Y坐标
'' BW: 字符数
'' Enabled: 当前激活状态
'' G3D: 是否立体效果
''变量: ComboTxt(序号): 标题$
''配合子程序: SetCombo (序号,索引值)
''下拉列表单击事件子程序: C.ComboClick
''---------------------------------
''过程循环处理事件子程序: C.Timer
''不妨到各个事件子程序看看.
LoadPercentBar ''读入进度条
''格式: DATA X,Y,W,H,FC,BC,Style
DATA 70,335,440,15,1,7,11
DATA =
''显示进度条子程序 ShowPercentBar 序号,百分值,PercentBar(),Win
END SELECT
ProcessLoop ''过程循环处理
LOOP
SUB C.ButtonClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
CASE 1: Button(2).Enabled = NOT Button(2).Enabled
CASE 2: Check(1).Enabled = NOT Check(1).Enabled
CASE 3:
''PutTX 0, 0, 1
GetKey -1 ''打开输入法
CASE 4:
GetKey -2 ''关闭输入法
SHARED KeyCode
KeyCode = -5
END SELECT
END SUB
SUB C.ButtonState (NWin, Inx, State)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 3:
''PRINT State;
CASE 5, 6:
SHARED PassKey
PassKey = 0
IF State = 2 THEN PassKey = Inx
END SELECT
END SUB
SUB C.CheckClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.ComboClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.FormUnload (NWin, QBCancel)
SELECT CASE NWin
CASE 0:
K$ = "OC": MsgBox K$, "退出", " 确定想离开吗?"
QBCancel = (K$ = "C")
END SELECT
END SUB
SUB C.FrameClick (NWin, Inx, Button)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.FrameDblClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.FrameMouseInOut (NWin, Inx, State)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0, 1:
SetMouseCursor State * 3
END SELECT
END SUB
SUB C.FrameMouseState (NWin, Inx, X, Y, Button)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
IF Button = 2 THEN DisplayMenu 2, -1, 0: Frame(0).GF = 0
END SELECT
END SUB
SUB C.ListChange (NWin, Inx, CType)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0, 1:
END SELECT
END SUB
SUB C.ListClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.ListDblClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.ListKeyPress (NWin, Inx, KeyCode)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
IF KeyCode = 45 THEN ListB(0).Loc = ListB(0).Loc - 1: ListB(0).RScInx = -2
IF KeyCode = 61 THEN ListB(0).Loc = ListB(0).Loc + 1: ListB(0).RScInx = -2
END SELECT
END SUB
SUB C.MenuClick (NWin, MInx, Inx)
Sel = NWin * 10000 + MInx * 100 + Inx
SELECT CASE Sel
CASE 1: PRINT "Welcome for you!": Menu(0, 1).Enabled = 0
CASE 2: Menu(1, 0).Enabled = NOT Menu(1, 0).Enabled
CASE 4:
ExitWin = 2
CASE 101: Menu(MInx, Inx).Value = NOT Menu(MInx, Inx).Value
CASE 103, 104: Menu(MInx, 3).Value = 0: Menu(MInx, 4).Value = 0
Menu(MInx, Inx).Value = 1
CASE 201 TO 210:
MouseHide
LINE (Win.X + Frame(0).X + 2, Win.Y + Frame(0).Y + 2)-STEP(Frame(0).W - 4, Frame(0).H - 4), Inx, BF
MouseShow
END SELECT
END SUB
SUB C.OptionClick (NWin, GInx, Inx)
Sel = NWin * 100 + GInx
SELECT CASE Sel
CASE 1:
ListB(0).Index = OptBValue(1)
END SELECT
END SUB
SUB C.TextKeyPress (NWin, Inx, KeyCode)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 0:
END SELECT
END SUB
SUB C.Timer (NWin, KeyCode)
SELECT CASE NWin
CASE 0:
SHARED PercentV AS SINGLE, PassKey
IF PassKey = 6 THEN
PercentV = PercentV + .0001
ELSEIF PassKey = 5 THEN
PercentV = PercentV - .0001
END IF
IF PercentV < .0001 OR PercentV >= 1 THEN PassKey = 0
ShowPercentbar 0, PercentV, PercentBar(), Win
OptB(1, 1).Enabled = Check(1).Value
Text(0).Enabled = Menu(1, 1).Value
Combo(0).Enabled = Menu(1, 3).Value = 1
END SELECT
''LOCATE 1, 1: PRINT Mouse.X - Win.X; Mouse.Y - Win.Y
''LOCATE 1, 1: PRINT FRE(-1)
END SUB
SUB DisplayMenu (MenuNo, X, Y)
SHARED XMenu, ContObj
XMenu = MenuN ContObj = -1
IF X >= 0 THEN Mouse.X = X: Mouse.Y = Y
END SUB
SUB ListAdd (Inx, InsNo, Item$)
XListAdd Inx, InsNo, Item$, ListB(), ListI(), MaxListItem
END SUB
SUB ListRemove (Inx, RemNo)
XListRemove Inx, RemNo, ListB(), ListI(), MaxListItem
END SUB
SUB LoadButton (Cmd)
DO
READ T$: IF T$ = "=" THEN EXIT DO
SumButton = SumButton + 1
B = SumButton
Button(B).X = VAL(T$)
READ Button(B).Y, Button(B).W, Button(B).H, Button(B).Enabled
READ Button(B).FC, Button(B).FW, Button(B).FH, Button(B).Hotkey, ButtonCap(B)
IF Cmd THEN Get3DCmd Win.X + Button(B).X - 2, Win.Y + Button(B).Y - 2, Button(B).W + 4, Button(B).H + 4, -1, Cmd, Win
LOOP
END SUB
SUB LoadCheck
DO
READ T$: IF T$ = "=" THEN EXIT DO
SumCheck = SumCheck + 1
B = SumCheck
Check(B).X = VAL(T$)
READ Check(B).Y, Check(B).Enabled
READ Check(B).Value, Check(B).Hotkey, CheckCap(B)
LOOP
END SUB
SUB LoadCombo
DO
READ T$: IF T$ = "=" THEN EXIT DO
SumCombo = SumCombo + 1
B = SumCombo
Combo(B).X = VAL(T$)
L = B + SumList + 1
READ Combo(B).Y, Combo(B).BW, Combo(B).Col, Combo(B).Enabled, HK, Combo(B).G3D
ListB(L).Hotkey = HK
ListB(L).Count = -1: ListB(L).Index = -1
LOOP
END SUB
SUB LoadFrame (Memo)
DO
READ T$: IF T$ = "=" THEN EXIT DO
X = VAL(T$)
READ Y, W, H, FC, FM, BC, Mode, C$
IF Memo THEN
SumFrame = SumFrame + 1
B = SumFrame
Frame(B).X = X: Frame(B).Y = Y
Frame(B).W = W: Frame(B).H = H
END IF
PrintFrame X, Y, W, H, FC, FM, BC, Mode, C$, Win
LOOP
END SUB
SUB LoadLabel (Memo, Cmd)
DO
READ T$: IF T$ = "=" THEN EXIT DO
X = VAL(T$)
READ Y, BW, FW, FH, FC, BC, FM, ST, MSG$
Get3DCmd Win.X + X - 3, Win.Y + Y - 3, BW * 6 + 6 + (FW - 12) * BW, FH + 5, BC, Cmd, Win
IF Memo > 0 THEN
SumLabel = SumLabel + 1
B = SumLabel
Label(B).X = X: Label(B).Y = Y
Label(B).FW = FW: Label(B).FH = FH
Label(B).BW = BW: Label(B).FC = FC
Label(B).BC = BC: Label(B).FM = FM
Label(B).Style = ST: LabelCap(B) = MSG$
ELSE
S = 1: MN = -1
DO
E = INSTR(S, MSG$, "`")
EE = E
IF E = 0 THEN EE = LEN(MSG$) + 1
MN = MN + 1
PrintFont X, Y + MN * FH, FW, FH, FC, BC, FM, MID$(MSG$, S, EE - S), Win
S = E + 1
LOOP WHILE E > 0
END IF
LOOP
END SUB
|
|