无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 169162|回复: 457
打印 上一主题 下一主题

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

[复制链接]
1#
发表于 2004-5-12 16:48:17 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

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


回复

使用道具 举报

2#
发表于 2004-5-12 16:49:11 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

SUB LoadList
DO
READ T$: IF T$ = "=" THEN EXIT DO
SumList = SumList + 1
B = SumList
ListB(B).X = VAL(T$)
READ ListB(B).Y, ListB(B).BW, ListB(B).Col, ListB(B).BH, ListB(B).Hotkey, ListB(B).G3D
ListB(B).Count = -1: ListB(B).Index = -1
LOOP
END SUB
SUB LoadMenu
DO
READ T$
IF T$ = "=" THEN EXIT DO
IF T$ = "-" THEN
SumMMenu = SumMMenu + 1: B = SumMMenu: A = 0
READ MenuHotkey(B), Menu(B, A).Enabled
ELSE
Menu(B, A).Enabled = VAL(T$)
END IF
READ Menu(B, A).Value, MenuCap(B, A)
SumMenu(B) = A: A = A + 1
LOOP
END SUB
SUB LoadOption
DO
READ T$
IF T$ = "=" THEN EXIT DO
IF T$ = "-" THEN
SumOptG = SumOptG + 1: B = SumOptG: A = 0
READ OptBValue(B), OptB(B, A).X
ELSE
OptB(B, A).X = VAL(T$)
END IF
READ OptB(B, A).Y, OptB(B, A).Enabled
READ OptB(B, A).Hotkey, OptBCap(B, A)
SumOptI(B) = A: A = A + 1
LOOP
END SUB
SUB LoadPercentBar
DO
READ T$: IF T$ = "=" THEN EXIT DO
SumPercent = SumPercent + 1
B = SumPercent
PercentBar(B).X = VAL(T$)
READ PercentBar(B).Y, PercentBar(B).W, PercentBar(B).H
READ PercentBar(B).FC, PercentBar(B).BC, PercentBar(B).Style
ShowPercentbar B, 0, PercentBar(), Win
LOOP
END SUB
SUB LoadText
DO
READ T$: IF T$ = "=" THEN EXIT DO
SumText = SumText + 1
B = SumText
Text(B).X = VAL(T$)
READ Text(B).Y, Text(B).BW, Text(B).Enabled, Text(B).FC
READ Text(B).Password, Text(B).MaxLen, Text(B).Hotkey, Text(B).G3D
LOOP
END SUB
SUB LoadWindow (XX, YY, W, H, Font, BC, Box, TC, T$)
ERASE Button, OptB, SumOptI, Check, Frame, ListB, ListI, TextTXT, Text
ERASE ButtonCap, OptBCap, OptBRValue, OptBValue, CheckCap, Combo, ComboTXT
ERASE Label, LabelCap, LabelRCap
ERASE Menu, MenuCap, SumMenu, PercentBar
SumPercent = -1
SumButton = -1
SumCheck = -1
SumOptG = -1
SumFrame = -1
SumList = -1
SumText = -1
SumCombo = -1
SumLabel = -1
SumMMenu = -1
DrawWindow XX, YY, W, H, Font, BC, Box, TC, T$, Button(), ButtonCap(), Win, SumButton
RW = ASC(MID$(Win.RetWins, 1, 1))
RW = RW + 1
MID$(Win.RetWins, 1, 1) = CHR$(RW)
MID$(Win.RetWins, RW + 1, 1) = CHR$(Wins)
ExitWin = 0
END SUB
SUB MsgBox (KeyB$, Titl$, MSG$)
ON ERROR RESUME NEXT
SHARED MsgKey, ContObj
RW = Wins
IF LEFT$(KeyB$, 1) = "@" THEN
TWW = 39: H = 110
Wins = -2
SumText = SumText + 1
TextTXT(SumText) = MSG$: Text(SumText).Hotkey = 9
Text(SumText).Enabled = -1: Text(SumText).FC = 0
Text(SumText).MaxLen = VAL(MID$(KeyB$, 2)): Text(SumText).G3D = -1
Text(SumText).Locate = LEN(MSG$)
KeyB$ = "OC"
MSG$ = Titl$
Titl$ = ""
ELSE
IF Titl$ = "" THEN Titl$ = "信息"
Wins = -1
H = 90
END IF
S = 1: MN = -1
MS$ = ""
DO
E = INSTR(S, MSG$, "`")
EE = E
IF E = 0 THEN EE = LEN(MSG$) + 1'': IF EE - S = 0 THEN MN = -2
IF MN < 0 AND Wins = -2 AND Titl$ = "" THEN
Titl$ = MID$(MSG$, S, EE - S)
IF Titl$ = "" THEN Titl$ = "输入"
ELSE
MN = MN + 1
MS$ = MS$ + MKI$(S) + MKI$(EE - S)
END IF
IF EE - S > TWW THEN TWW = EE - S
S = E + 1
LOOP WHILE E > 0
TW = TWW * 6 + 30
KK = LEN(KeyB$)
H = H + 14 * MN: W = 90 + (KK - 1) * 70: IF TW > W THEN W = TW
RRXX = Win.X: RRYY = Win.Y: RRWW = Win.W: RRHH = Win.H: RRBC = Win.BC
X = -1: Y = -1
''X = Mouse.X: Y = Mouse.Y
''IF X + W > 639 THEN X = 639 - W
''IF Y + H > 450 THEN Y = 450 - H
RSButton = SumButton + 1
MouseHide
GetTX X, Y, W, H, 0
DrawWindow X, Y, W, H, 3, 7, 0, 1, CHR$(1) + Titl$, Button(), ButtonCap(), Win, SumButton
K = SumButton
FOR KA = 0 TO KK - 1
K$ = MID$(KeyB$, KA + 1, 1)
SELECT CASE UCASE$(K$)
CASE "O": C$ = "确定": HK = 13
CASE "Y": C$ = "是(Y)": HK = 277
CASE "N": C$ = "否(N)": HK = 305
CASE "A": C$ = "中断(A)": HK = 286
CASE "R": C$ = "重试(R)": HK = 275
CASE "I": C$ = "忽略(I)": HK = 279
CASE ELSE: C$ = "取消": HK = 27
END SELECT
K = K + 1: ButtonCap(K) = C$: Button(K).Hotkey = HK
Button(K).X = (W - KK * 68) \ 2 + 68 * KA
Button(K).Y = H - 52
Button(K).W = 60: Button(K).H = 17
Button(K).Enabled = 1: Button(K).FC = 0
Button(K).FW = 0: Button(K).FH = 12
NEXT
SumButton = K
FOR A = 0 TO MN
S = CVI(MID$(MS$, A * 4 + 1, 2))
E = CVI(MID$(MS$, A * 4 + 3, 2))
PrintChr Win.X + 10, Win.Y + 10 + 14 * A, 12, 12, 0, -1, MID$(MSG$, S, E)
NEXT
IF Wins = -2 THEN
Text(SumText).BW = TWW - 1
Text(SumText).X = 8
Text(SumText).Y = H - 83
MSG$ = TextTXT(SumText)
END IF
ExitWin = 0
MsgKey = RSButton
ProcessLoop
PutTX X, Y, 0
SumButton = RSButton - 1
Win.X = RRXX: Win.Y = RRYY: Win.W = RRWW: Win.H = RRHH: Win.BC = RRBC
KeyB$ = MID$(KeyB$, MsgKey, 1)
IF Wins = -2 THEN
SumText = SumText - 1: IF SumText > -1 THEN PrintText 0, 5, 0, Text(), TextTXT(), Win, CutBoard, 0
IF MsgKey = 1 THEN MSG$ = TextTXT(SumText + 1)
END IF
MouseShow
MsgKey = 0: ContObj = 0
Wins = RW: ExitWin = 0
END SUB
SUB ProcessLoop
DIM PicTime AS SINGLE, InitTime AS SINGLE, RTimeClick AS SINGLE
SHARED XMenu, ContObj, MsgKey, RXInpT, KeyCode
RecWins = Wins
IF SumText > -1 AND RecWins <> -1 THEN ContObj = 3 ELSE ContObj = 0
LST = 0: LEND = SumList: XLLCMD = -1: InitControl = -1
IF RecWins = -2 THEN
XInpText = SumText
ELSE
XInpText = 0
END IF
RXInpT = XInpText
MouseShow
DO
IF ContObj <> -1 THEN GetMouse Mouse
KeyCode = 0
IF NOT InitControl THEN
GetKey KeyCode
C.Timer RecWins, KeyCode
END IF
RTextI = 0
IF ContObj <> 4 AND ContObj < 10 THEN
XRKCL = XKCL
XRLCMD = XXLCMD: A = 0
FOR XLCMD = MsgKey TO SumButton
IF Button(XLCMD).Enabled <> Button(XLCMD).REnabled OR InitControl AND XLCMD > RSButton THEN PrintButton XLCMD, InitControl - 2, Button(), ButtonCap(), Win: C.ButtonState RecWins, (XLCMD), 1
GotFocus xicmd, (Button(XLCMD).X), (Button(XLCMD).Y), (Button(XLCMD).W), (Button(XLCMD).H), Mouse, Win
HK = KeyCode = Button(XLCMD).Hotkey
IF (xicmd OR HK) AND Button(XLCMD).Enabled THEN
IF Mouse.K = 1 AND Mouse.RK = 0 OR Mouse.K = 1 AND XLLCMD = XLCMD OR HK THEN
IF A <> 2 THEN XLLCMD = XLCMD: IF HK THEN A = 2 ELSE XKCL = 2
ContObj = 7
ELSE
XKCL = -1
IF Mouse.K = 0 AND Mouse.RK = 1 THEN XKCL = 1
END IF
XXLCMD = XLCMD
IF A = 0 THEN A = 1
END IF
NEXT
IF XRLCMD <> XXLCMD OR A = 0 THEN
XKCL = 0
IF XRKCL = 2 THEN XKCL = 1
IF Mouse.K = 0 AND Mouse.RK = 1 THEN XLLCMD = -1
END IF
IF XKCL <> XRKCL THEN
PrintButton XRLCMD, XKCL, Button(), ButtonCap(), Win
C.ButtonState RecWins, (XRLCMD), (XKCL)
END IF
IF Mouse.K = 0 AND XLLCMD = XXLCMD AND Mouse.RK = 1 OR A = 2 THEN
IF RecWins < 0 THEN
Mouse.K = -99: RXInpT = 0: MsgKey = XLLCMD - MsgKey: ExitWin = 2
ELSE
C.ButtonClick RecWins, (XLLCMD)
IF MsgKey = XLLCMD THEN ExitWin = 2
END IF
END IF
''IF Mouse.K = 1 AND Mouse.RK = 0 THEN
'' GotFocus I, -5, -30, (Win.W), (Win.H), Mouse, Win
'' IF I = 0 THEN BEEP
''END IF
IF RecWins <> -1 THEN
IF RecWins = -2 THEN
RSText = SumText
IF RContObj = 3 AND ContObj <> 3 THEN PrintText XInpText, 3, 0, Text(), TextTXT(), Win, CutBoard, XPutII
RContObj = ContObj
ELSE
RSText = 0
END IF
FOR L = RSText TO SumText
IF InitControl THEN
PrintText L, 5, 0, Text(), TextTXT(), Win, CutBoard, 0
IF L = SumText THEN PrintText XInpText, 5, 0, Text(), TextTXT(), Win, CutBoard, 0
ELSE
X = Text(L).X: Y = Text(L).Y: W = (Text(L).BW) * 6 + 8
GotFocus I, X, Y + 1, W, 17, Mouse, Win
IF I THEN RTextI = 1
A = (KeyCode = Text(L).Hotkey)
IF I AND Mouse.K <> 0 AND Mouse.RK = 0 OR A THEN
PrintText RXInpT, 3, 0, Text(), TextTXT(), Win, CutBoard, 1
IF A = 0 THEN Text(L).Locate = (Mouse.X - (Win.X + X) + 1) \ 6
XInpText = L: ContObj = 3
PrintText L, 4, 0, Text(), TextTXT(), Win, CutBoard, 0: RXInpT = XInpText
END IF
IF Text(L).Enabled <> Text(L).REnabled THEN
PrintText RXInpT, 3, 0, Text(), TextTXT(), Win, CutBoard, 1
PrintText L, 5, 0, Text(), TextTXT(), Win, CutBoard, 0
RXInpT = L
END IF
END IF
NEXT
IF ContObj = 3 THEN
IF KeyCode <> 0 THEN
''IF KeyCode = 328 THEN XInpText = XInpText - 1: IF XInpText < RSText THEN XInpText = SumText
''IF KeyCode = 336 OR
IF KeyCode = 9 THEN XInpText = XInpText + 1: IF XInpText > SumText THEN XInpText = RSText
ELSE
IF TIMER - PicTime > .4 THEN XPutII = 0
IF TIMER - PicTime > .9 THEN XPutII = 1: PicTime = TIMER
END IF
IF RXInpT <> XInpText THEN
PrintText RXInpT, 3, 0, Text(), TextTXT(), Win, CutBoard, 1
PrintText XInpText, 4, 0, Text(), TextTXT(), Win, CutBoard, 0
RXInpT = XInpText
ELSE
IF XPutII <> RXPutII OR KeyCode > 0 THEN
RXPutII = XPutII
PrintText XInpText, 2, KeyCode, Text(), TextTXT(), Win, CutBoard, XPutII
IF KeyCode <> 0 THEN C.TextKeyPress RecWins, XInpText, KeyCode
END IF
END IF
END IF
END IF
END IF
IF RRTextI <> RTextI THEN RRTextI = RTextI: SetMouseCursor RTextI
回复

使用道具 举报

3#
发表于 2004-5-12 16:50:18 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

IF RecWins > -1 THEN
IF ContObj <> 4 THEN
II = 0
IF ContObj = 11 THEN
''IF Menu(XMenu, 0).Enabled THEN
XMenuHI = Menu(XMenu, 0).Enabled
IF XMenuHI > SumMenu(XMenu) THEN XMenuHI = SumMenu(XMenu)
MW = (SumMenu(XMenu) - 1) \ XMenuHI + 1
GotFocus II, RKMenuX + 2, RKMenuY - 3, MenuWidth * MW - 4, XMenuHI * 14 + 4, Mouse, Win
IF II AND (Mouse.Y <> XRMouseY OR Mouse.X <> XRMouseX) AND Mouse.Y > Win.Y + RKMenuY THEN
XMINX = ((Mouse.X - Win.X - RKMenuX - 1) \ MenuWidth) * XMenuHI + (Mouse.Y - Win.Y - RKMenuY - 1) \ 14 + 1
IF XMINX > SumMenu(XMenu) THEN XMINX = XRMINX
XRMouseY = Mouse.Y: XRMouseX = Mouse.X
END IF
IF II = 0 THEN IF Mouse.K = 1 THEN XMINX = 0
FOR A = 0 TO SumMenu(XMenu)
IF KeyCode = 336 THEN XMINX = XMINX + 1: IF XMINX > SumMenu(XMenu) THEN XMINX = 1
IF KeyCode = 328 THEN XMINX = XMINX - 1: IF XMINX < 1 THEN XMINX = SumMenu(XMenu)
IF MenuCap(XMenu, XMINX) <> "" THEN EXIT FOR
NEXT
IF KeyCode < 256 THEN
FOR A = 1 TO SumMenu(XMenu)
Cap$ = MenuCap(XMenu, A): L = INSTR(Cap$, "(")
Cap$ = UCASE$(MID$(Cap$, L + 1, 1))
IF Cap$ = UCASE$(CHR$(KeyCode)) THEN Mouse.K = 0: Mouse.RK = 1: XMINX = A: II = -1: EXIT FOR
NEXT
END IF
IF KeyCode = 13 THEN Mouse.K = 0: Mouse.RK = 1: II = -1
IF XMINX <> XRMINX THEN PrintMenu XMenu, XRMINX, XMINX, 4, Menu(), MenuCap(), SumMenu(), Win, RKSMenuX, RKSMenuY, RKMenuX, RKMenuY, MenuWidth: XRMINX = XMINX
IF Mouse.K = 0 AND Mouse.RK = 1 AND Menu(XMenu, XMINX).Enabled AND MenuCap(XMenu, XMINX) <> "" THEN IF XMINX > 0 THEN XPUT = 2 ELSE XPUT = 1
''END IF
IF (Mouse.K = 0 AND Mouse.RK > 0 OR RKSMenuX = -1 AND Mouse.K = 2 AND Mouse.RK = 0) AND II = 0 THEN XPUT = 1
PR = 0
IF KeyCode = 27 THEN XPUT = 1
IF RKSMenuX <> -1 THEN
IF KeyCode = 333 THEN XMenu = XMenu + 1: PR = -1: IF XMenu > SumMMenu THEN XMenu = 0
IF KeyCode = 331 THEN XMenu = XMenu - 1: PR = -1: IF XMenu < 0 THEN XMenu = SumMMenu
END IF
IF PR THEN XPUT = 2: XMINX = 0: ContObj = 10: XRMouseX = Mouse.X: XRMouseY = Mouse.Y
END IF
RKSMX = 0: RKSMY = -1
FOR M = 0 TO SumMMenu
IF M > 0 THEN
RKSMX = RKSMX + (LEN(MenuCap(M - 1, 0)) + 2) * 6 + 2
IF RKSMX + (LEN(MenuCap(M, 0)) + 2) * 6 + 2 > Win.W - 7 THEN RKSMX = 0: RKSMY = RKSMY + 14
END IF
GotFocus I, RKSMX - 1, RKSMY - 1, 6 * (LEN(MenuCap(M, 0)) + 2) + 2, 14, Mouse, Win
IF I AND II = 0 OR KeyCode = MenuHotkey(M) THEN
IF Mouse.K = 1 AND Mouse.RK = 0 OR KeyCode = MenuHotkey(M) OR XMenu <> M AND ContObj = 11 AND (Mouse.X <> XRMouseX OR Mouse.Y <> XRMouseY) THEN
IF ContObj = 11 THEN XPUT = 1
ContObj = 10: XMenu = M: XRMouseX = Mouse.X: XRMouseY = Mouse.Y
END IF
END IF
IF InitControl THEN
PrintMenu M, -1, -1, 0, Menu(), MenuCap(), SumMenu(), Win, RKSMX, RKSMY, RKMenuX, RKMenuY, MenuWidth
IF M = SumMMenu THEN MouseHide: Get3DBox (Win.X), (Win.Y) + RKSMY + 14, (Win.W) - 8, 1, 8, 15, -1: MouseShow
END IF
IF M = XMenu AND ContObj = 10 THEN RKSMenuX = RKSMX: RKSMenuY = RKSMY: RKMenuX = RKSMenuX - 1: RKMenuY = RKSMenuY + 16
NEXT
IF XPUT THEN
PrintMenu XRMenu, -1, -1, 3, Menu(), MenuCap(), SumMenu(), Win, RRKSMX, RRKSMY, RRKMX, RRKMY, RMW
IF XRMenu = XMenu THEN ContObj = 0
XRMenu = XMenu
IF XPUT = 2 THEN
C.MenuClick RecWins, XMenu, XMINX
ELSE
C.MenuClick -RecWins, -XMenu, 0
END IF
XPUT = 0: Mouse.K = -100: Mouse.RK = -100
RRTextI = 0: KeyCode = 0
END IF
IF ContObj = -1 THEN
SetMouseCursor 0: ContObj = 10
RKMenuY = Mouse.Y - Win.Y + 3
RKMenuX = Mouse.X - Win.X
RKSMenuX = -1
END IF
END IF
IF RContObj = 3 AND ContObj <> 3 THEN PrintText XInpText, 3, 0, Text(), TextTXT(), Win, CutBoard, XPutII
IF RContObj = 5 AND ContObj <> 5 THEN PrintCombo XCombo, 3, 0, Combo(), ComboTXT(), Win
RContObj = ContObj
IF ContObj = 10 THEN
C.MenuClick RecWins, XMenu, 0
PrintMenu XMenu, -1, 0, 1, Menu(), MenuCap(), SumMenu(), Win, RKSMenuX, RKSMenuY, RKMenuX, RKMenuY, MenuWidth
XRMenu = XMenu: XRMINX = 0: XMINX = 0
ContObj = 12
RRKSMX = RKSMenuX: RRKSMY = RKSMenuY
RRKMX = RKMenuX: RRKMY = RKMenuY: RMW = MenuWidth
END IF
IF ContObj = 12 AND Mouse.K = 0 AND Mouse.RK = 0 THEN ContObj = 11
IF ContObj < 10 THEN
IF (ContObj = 2 OR ContObj = 4) AND KeyCode > 0 THEN
I = ListB(XList).Index: S = ListB(XList).ScInx
B = S + ListB(XList).BH * ListB(XList).Col
IF KeyCode = 331 AND I > ListB(XList).BH - 1 THEN I = I - ListB(XList).BH: IF I < S THEN S = S - ListB(XList).BH
IF KeyCode = 333 AND I < ListB(XList).Count - ListB(XList).BH + 1 THEN I = I + ListB(XList).BH: IF I > B - 1 THEN S = S + ListB(XList).BH
IF KeyCode = 328 AND I > 0 THEN I = I - 1: IF I < S OR ListB(XList).BW <= 0 THEN IF ListB(XList).Col > 1 THEN S = S - ListB(XList).BH ELSE S = S - 1: I = S
IF KeyCode = 336 AND I < ListB(XList).Count THEN
I = I + 1
IF I > B - 1 OR ListB(XList).BW <= 0 THEN IF ListB(XList).Col > 1 THEN S = S + ListB(XList).BH ELSE S = S + 1: I = B
END IF
IF ContObj = 4 THEN
IF KeyCode = 13 THEN XComExit = 2: KeyCode = 0
IF KeyCode = 27 THEN XComExit = 1: KeyCode = 0
END IF
ListB(XList).Index = I: ListB(XList).ScInx = S
IF I > -1 THEN C.ListKeyPress RecWins, XList, KeyCode
END IF
RXL = XXL: XXX = 0
FOR XL = LST TO LEND
IF InitControl OR ContObj = -9 THEN
PrintList XL, -1, 1, 0, -2, ListB(), ListI(), Win: IF ContObj = -9 THEN ContObj = 4
ELSE
X = ListB(XL).X + 2: Y = ListB(XL).Y + 2: W = (ListB(XL).BW * ListB(XL).Col) * 6 + ListB(XL).Col * 3: H = ListB(XL).BH * 14 + 1
GotFocus XILIT, X, Y, W + 18, H, Mouse, Win
IF RXL <> XL AND PK AND XILIT THEN ListB(XXL).RCount = -2
IF (XILIT OR KeyCode = ListB(XL).Hotkey) AND ListB(XL).Count >= 0 AND XXX = 0 THEN
IF (Mouse.K = 1 AND Mouse.RK = 0 OR KeyCode = ListB(XL).Hotkey) AND ContObj <> 4 THEN ContObj = 2: XList = XL
GotFocus XLIL, X + W, Y, 18, H, Mouse, Win
MY = Mouse.Y - (Win.Y + Y)
MX = Mouse.X - (Win.X + X)
IF XLIL THEN
XSYY = -1
XMS = ListB(XL).Count - ListB(XL).BH * ListB(XL).Col + 1
IF XMS > 0 THEN
IF Mouse.K <> 1 AND Mouse.RK <> Mouse.K THEN PK = 0: MCNT = 0: NK = RNK: PR = 1: EXIT FOR
IF Mouse.K = 1 AND Mouse.RK = 0 THEN
NK = 5: PK = 1
IF MY < 16 THEN NK = 2 ELSE IF MY > H - 14 THEN NK = 3
PR = 1: RTimeClick = TIMER: InitTime = .4
RNK = NK
END IF
END IF
ELSE
IF RNK <> 0 AND Mouse.K <> 1 THEN RXL = XL: PK = 0: MCNT = 0: NK = 4: PR = 1: XSYY = -1: RNK = 0
IF Mouse.K <> 0 AND Mouse.RK = 0 OR ContObj = 4 AND (XRMouseY <> Mouse.Y OR XRMouseX <> Mouse.X) THEN
IL = (MY - 1) \ 14: JL = (MX - 1) \ (ListB(XL).BW * 6 + 3)
IL = ListB(XL).ScInx + JL * ListB(XL).BH + IL
IF IL > ListB(XL).Count THEN IL = -1
ListB(XL).Index = IL: XRMouseY = Mouse.Y: XRMouseX = Mouse.X
END IF
IF Mouse.K = 1 AND Mouse.RK = 0 THEN
IF ContObj = 4 THEN
XComExit = 2
ELSE
IF Mouse.DC AND IL > -1 THEN C.ListDblClick RecWins, XL
END IF
END IF
END IF
MCNT = 0
IF Mouse.K = 1 AND (TIMER - RTimeClick > InitTime AND (RNK = 2 OR RNK = 3) OR RNK = 5) THEN MCNT = 1: RTimeClick = TIMER: InitTime = ListScrollSpeed / 10
IF Mouse.K = 1 AND Mouse.RK = 0 OR MCNT THEN
S = ListB(XL).ScInx
IF RNK = 2 AND S > 0 THEN S = S - 1
IF RNK = 5 THEN
XSYY = MY - 15
IF XSYY < 0 THEN XSYY = 0
IF XSYY <> XRY THEN PR = 1: XRY = XSYY
END IF
IF RNK = 3 AND S < XMS + -(ListB(XL).Col > 1) * (ListB(XL).BH - ListB(XL).Count MOD ListB(XL).BH - 1) THEN S = S + 1
ListB(XL).ScInx = S
END IF
XXL = XL: XXX = 1
ELSE
IF RNK <> 0 THEN PK = 1
END IF
XPR = -1: XI = -1
B = ListB(XL).Index <> ListB(XL).RIndex
IF ListB(XL).Count <> ListB(XL).RCount THEN
XPR = 4
ELSEIF ListB(XL).ScInx <> ListB(XL).RScInx THEN
XPR = 5
ELSEIF B THEN
XI = ListB(XL).RIndex
XPR = 0
END IF
IF XPR > -1 THEN PrintList XL, XI, XPR, 0, -1, ListB(), ListI(), Win: A = ListB(XL).RIndex: ListB(XL).RIndex = XI: C.ListChange RecWins, XL, XPR: ListB(XL).RIndex = A
IF B AND ListB(XL).Index > -1 THEN C.ListClick RecWins, XL
END IF
NEXT
IF XXX = 0 AND PK THEN PR = 1: PK = 0: NK = RNK: XRY = -1: MCNT = 0: RNK = 0
IF PR AND RXL <= LEND THEN
RScInx = ListB(RXL).ScInx
PrintList RXL, -2, NK, PK, XSYY, ListB(), ListI(), Win: PR = 0
IF RScInx <> ListB(RXL).ScInx THEN C.ListChange RecWins, RXL, 9
END IF
IF XXX = 0 AND ContObj = 4 AND Mouse.K = 1 AND Mouse.RK = 0 THEN XComExit = 1
IF XComExit AND Mouse.K = 0 THEN
IF XComExit = 1 OR ListB(LEND).Index < 0 THEN ListB(LEND).Index = XComIndex: XComExit = 0
IF XComExit = 2 THEN SetCombo XCombo, (ListB(LEND).Index)
ContObj = 5: Mouse.RK = 0
MouseHide
PutTX Win.X + Combo(XCombo).X, XCOMY, 0
MouseShow
PrintCombo XCombo, 4, 0, Combo(), ComboTXT(), Win
IF XComExit = 2 THEN C.ComboClick RecWins, XCombo
XComExit = 0
LST = 0: LEND = SumList
END IF
IF ContObj <> 4 THEN
FOR T = 0 TO SumLabel
IF LabelCap(T) <> LabelRCap(T) OR InitControl THEN PrintLabel T, Label(), LabelCap(), LabelRCap(), Win
NEXT
FOR T = 0 TO SumOptG
FOR L = 0 TO SumOptI(T)
IF OptB(T, L).Enabled <> OptB(T, L).REnabled OR InitControl THEN PrintOption T, L, 11, OptB(), OptBRValue(), OptBValue(), OptBCap(), Win, SumOptI()
GotFocus I, (OptB(T, L).X), (OptB(T, L).Y), LEN(OptBCap(T, L)) * 6 + 16, 12, Mouse, Win
IF (I AND Mouse.K = 1 AND Mouse.RK = 0 OR KeyCode = OptB(T, L).Hotkey) AND OptB(T, L).Enabled THEN
OptBValue(T) = L
ContObj = 1
END IF
NEXT
IF OptBValue(T) <> OptBRValue(T) THEN
PrintOption T, -1, 0, OptB(), OptBRValue(), OptBValue(), OptBCap(), Win, SumOptI()
C.OptionClick RecWins, T, (OptBValue(T))
END IF
NEXT
FOR L = 0 TO SumCheck
IF Check(L).Enabled <> Check(L).REnabled OR InitControl THEN PrintCheck L, 11, Check(), CheckCap(), Win
GotFocus I, (Check(L).X), (Check(L).Y), LEN(CheckCap(L)) * 6 + 16, 12, Mouse, Win
IF (I AND Mouse.RK = 1 AND Mouse.K = 0 OR KeyCode = Check(L).Hotkey) AND Check(L).Enabled THEN
Check(L).Value = NOT Check(L).Value
ContObj = 6
END IF
IF Check(L).Value <> Check(L).RValue THEN
PrintCheck L, 0, Check(), CheckCap(), Win
C.CheckClick RecWins, L
END IF
NEXT
FOR A = 0 TO SumFrame
GotFocus I, (Frame(A).X), (Frame(A).Y), (Frame(A).W), (Frame(A).H), Mouse, Win
IF I THEN
IF Frame(A).GF = 0 THEN Frame(A).GF = -1: C.FrameMouseInOut RecWins, A, 1
IF Mouse.X <> Mouse.RX OR Mouse.Y <> Mouse.RY OR Mouse.K <> 0 OR Mouse.RK <> Mouse.K THEN C.FrameMouseState RecWins, A, (Mouse.X - Win.X - Frame(A).X), (Mouse.Y - Win.Y - Frame(A).Y), (Mouse.K)
IF Mouse.DC THEN
C.FrameDblClick RecWins, A
ELSEIF Mouse.K = 0 AND Mouse.RK <> 0 THEN
C.FrameClick RecWins, A, (Mouse.RK)
END IF
''EXIT FOR
ELSE
IF Frame(A).GF THEN Frame(A).GF = 0: C.FrameMouseInOut RecWins, A, 0
END IF
NEXT
FOR XLCOM = 0 TO SumCombo
IF Combo(XLCOM).Enabled <> Combo(XLCOM).REnabled OR InitControl THEN PrintCombo XLCOM, 1, 0, Combo(), ComboTXT(), Win
X = Combo(XLCOM).X: Y = Combo(XLCOM).Y: W = (Combo(XLCOM).BW) * 6
IF Combo(XLCOM).G3D > 0 THEN A = 1 ELSE A = 0
GotFocus I, X + A * (W + 7), Y + 1, (1 - A) * W + 23 - A * 5, 21, Mouse, Win
IF (I AND Mouse.K = 1 AND Mouse.RK = 0 OR KeyCode = ListB(SumList + XLCOM + 1).Hotkey) AND Combo(XLCOM).Enabled THEN
PrintCombo XCombo, 3, 0, Combo(), ComboTXT(), Win
MouseHide
GetTX Win.X + X, XCOMY, W + 25, H - 22, 0
MouseShow
PrintCombo XLCOM, 2, 1, Combo(), ComboTXT(), Win
ContObj = -9: XCombo = XLCOM
A = SumList + XLCOM + 1: XList = A
ListB(A).BH = ListB(A).Count + 1: IF ListB(A).BH > 8 THEN ListB(A).BH = 8
IF ListB(A).BH < 2 THEN ListB(A).BH = 1
LST = A: LEND = A: XComIndex = ListB(A).Index
H = ListB(A).BH * 14 + 2
B = Combo(XLCOM).G3D <> 0
XCOMY = Win.Y + Y + 18 - B
IF XCOMY + H > 455 THEN XCOMY = XCOMY - H - 20 + B * 2
ListB(A).BW = Combo(XCombo).BW
ListB(A).Col = (ListB(A).Count \ ListB(A).BH) + 1
IF ListB(A).Col > Combo(XLCOM).Col THEN ListB(A).Col = Combo(XLCOM).Col
B = ListB(A).BW * ListB(A).Col * 6 + 20 + (ListB(A).Col - 1) * 3
ListB(A).X = Combo(XCombo).X
IF ListB(A).X + B + Win.X + 3 > 640 THEN ListB(A).X = 640 - B - Win.X - 3
ListB(A).Y = XCOMY - Win.Y
IF RContObj = 3 THEN PrintText XInpText, 3, 0, Text(), TextTXT(), Win, CutBoard, 1
MouseHide
DrawBackBlock Win.X + ListB(A).X, Win.Y + ListB(A).Y, B, H, 5
MouseShow
C.ComboClick RecWins, -XCombo - 1
END IF
NEXT
END IF
END IF
END IF
InitControl = 0
IF ExitWin THEN
IF RecWins < 0 THEN EXIT DO
A = 0
C.FormUnload RecWins, A
IF A = 0 THEN
IF Wins = RecWins THEN
B = ASC(MID$(Win.RetWins, 1, 1))
IF B <= 1 THEN UnLoadMe
Wins = ASC(MID$(Win.RetWins, B, 1))
B = B - 2
IF B < 0 THEN B = 0
MID$(Win.RetWins, 1, 1) = CHR$(B)
END IF
EXIT DO
ELSE
ExitWin = 0: Wins = RecWins
END IF
END IF
LOOP
MouseHide
END SUB
SUB SetCombo (Inx, InxNo)
A = Inx + SumList + 1
ListB(A).Index = InxNo
IF InxNo < 0 THEN ComboTXT(Inx) = "" ELSE ComboTXT(Inx) = ListI(A, InxNo)
Combo(Inx).REnabled = 2
END SUB
超级经典的示例!!
大家可以分析分析此示例程序,
抛砖引玉
呵呵~
回复

使用道具 举报

4#
发表于 2004-5-23 16:07:02 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

[这个贴子最后由张三丰在 2004/05/23 04:11pm 第 2 次编辑]
下面引用由crshen2004/05/17 03:36pm 发表的内容:
在QB的shell中运行ghost将大大影响克隆速度,直接用批处理更好,快速稳定。
您对 QB 了解? 您太小看  Qb 了!
你不要用 QB 的 shell 执行命令,将大大影响克隆速度。
而是叫要 shell 的程序在 QB 编译好的程序结束时执行!
克隆速度不就上去了吗?
我文字表达能力不强,不知道你听懂了没有!
五个字,一句话!
         键盘缓冲区!

回复

使用道具 举报

5#
发表于 2004-5-26 21:10:00 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

只用 QBWIN 的弱功能!
谁又真正了解 QBWIN 啊?
不去研究研究他的强大的"键盘缓冲区"来调用 GHOIST!
回复

使用道具 举报

6#
发表于 2004-5-26 21:29:09 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

下面引用由889882004/05/26 09:24pm 发表的内容:
想说就说,不要故意卖弄,上无忧的人都是实实在在的。你会的,可能别人不会。别人会的,可能你也不会。又何必一副‘长者’的样子呢
呵呵!
不要大哥生气!
我也是在研究之中!
研究好了就告诉大家!
回复

使用道具 举报

7#
发表于 2004-6-2 19:13:29 | 显示全部楼层

想拥有自己的一键恢复吗?自己编写程序!(更新 附上源代码)

[这个贴子最后由张三丰在 2004/06/02 07:16pm 第 1 次编辑]



Disk Genius V2.0 Beta 0219的作者:李大海

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-11-10 13:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表