📄 control.inc
字号:
.const
;;Control.dlg
IDC_BTN_COUNT equ 4003
IDC_BTN_CTL_DEL equ 4004
IDC_BTN_CTL_NEWDB equ 4012
IDC_BTN_ZAP_DB equ 4002
IDC_CBO_DB equ 1001
IDC_EDT1 equ 4006
IDC_GRP4 equ 4005
IDC_GRP5 equ 4001
IDC_STC21 equ 4009
IDD_DLG_CONTROL equ 4000
.data?
hControlComboTables dd ?
.code
ControlInit proc uses esi hWin:dword
;作用:
;参数:
;返回值:
;
;开发日期:
;备注:
;set icon;
;1004
LOCAL lhButton
LOCAL lhCombo
invoke LoadIcon,hInstance,1004
; push eax
; invoke SendMessage,hWin,WM_SETICON,ICON_SMALL,EAX
; pop eax
invoke SendMessage,hWin,WM_SETICON,ICON_BIG,EAX
;invoke GetDlgItem,hWin,IDC_CBO
invoke GetDlgItem,hWin,IDC_CBO_DB
mov lhCombo,eax
mov hControlComboTables,eax
invoke ODBCGetTables
mov esi,eax
push esi
assume esi:ptr SQLTABLE
.while 1
invoke CompareString,0,NORM_IGNORECASE,addr [esi].szName,4,SADD("Msys"),4
.if eax==2
jmp @f
.endif
invoke SendMessage,lhCombo,CB_ADDSTRING,0,addr [esi].szName
@@:
add esi,sizeof SQLTABLE
movzx eax,byte ptr [esi]
.if !eax
.break
.endif
.endw
assume esi:nothing
pop esi
invoke GlobalUnlock,esi
invoke GlobalFree,esi
invoke SendMessage,lhCombo,CB_SETCURSEL,0,0
ret
ControlInit endp
ControlCreateNewTable proc hWin:dword
;作用:向总词库里添加新表
;参数:
;返回值:
;
;开发日期:
;备注:
;语法:select * from xx into yy where false
;false 是要添加空表.
;1.先得到所输入的新表表名;
;2.再检查是否己存在该表.
; 若存在,则提示,停止添加;
; 若不不了存在,则添加.
;3.成功添加后,需通知主窗口的combo更新内容;不得已设立全局变量成hComboTableName
LOCAL ltablename[256]:byte
LOCAL lSQL[1024]:byte
LOCAL lhCombo:dword
invoke GetDlgItemText,hWin,IDC_EDT1,addr ltablename,sizeof ltablename
.if !eax
MyDebug "请输入新表的名称!"
invoke SetFocus,$invoke(GetDlgItem,hWin,IDC_EDT1)
ret
.endif
invoke GetDlgItem,hWin,IDC_CBO_DB
mov lhCombo,eax
invoke SendMessage,lhCombo,CB_FINDSTRINGEXACT,-1,addr ltablename
.if eax!=CB_ERR
MyDebug "您所输入的新表名称已经存在!"
ret
.endif
invoke wsprintf,addr lSQL,SADD("select * into %s from encyclopedia where false"),addr ltablename
invoke ODBCExeDirect,addr lSQL
.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
invoke SendMessage,hComboTableName,CB_ADDSTRING,0,addr ltablename
invoke SendMessage,hControlComboTables,CB_ADDSTRING,0,addr ltablename
MyDebug "已经成功地添加了该表!"
.endif
ret
ControlCreateNewTable endp
ControlDropTable proc hWin:dword
;作用:删除词汇表
;参数:
;返回值:
;
;开发日期:
;备注:
;1.得到词汇表名;不可为"encyclopedia"
LOCAL lbuf[256]:byte
LOCAL lSQL[1024]:byte
invoke GetDlgItemText,hWin,IDC_CBO_DB,addr lbuf,sizeof lbuf
.if !eax
ret
.endif
invoke lstrcmp,addr lbuf,SADD("encyclopedia")
.if !eax;若为主词库,不可删除!
MyDebug "不允许删除主词库!"
ret
.endif
;2.得到删除确认
invoke MessageBox,NULL,SADD("此删除过程为不可逆操作,你确认要删除吗?"),addr lbuf,MB_DEFBUTTON1 or MB_ICONASTERISK or MB_YESNO
.IF EAX!=IDYES
ret
.endif
invoke wsprintf,addr lSQL,SADD("drop table %s"),addr lbuf
invoke ODBCExeDirect,addr lSQL
.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
; CB_DELETESTRING
; wParam = (WPARAM) index; // item to delete
; lParam = 0;
invoke SendMessage,hComboTableName,CB_FINDSTRINGEXACT,-1,addr lbuf
invoke SendMessage,hComboTableName,CB_DELETESTRING,eax,0
invoke SendMessage,hControlComboTables,CB_FINDSTRINGEXACT,-1,addr lbuf
invoke SendMessage,hControlComboTables,CB_DELETESTRING,eax,0
MyDebug "已经成功地删除了该表!"
.endif
ret
ControlDropTable endp
ControlZapTable proc hWin:dword
;作用:清空表
;参数:
;返回值:
;
;开发日期:19:49:50 2005-04-10
;备注:
;1.得到表名
;2.不允许清空主表.
;3.执行清空操作
LOCAL lTableName[256]:byte
LOCAL lSQL[1024]:byte
invoke GetWindowText,hControlComboTables,addr lTableName,sizeof lTableName
invoke lstrcmp,addr lTableName,SADD("encyclopedia")
.if !eax
MyDebug "不允许清空Encyclopedia词库!"
ret
.endif
invoke wsprintf,addr lSQL,SADD("delete * from %s"),addr lTableName
invoke ODBCExeDirect,addr lSQL
.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
invoke MessageBox,NULL,SADD( "成功地将此表清空!"),addr lTableName,MB_ICONASTERISK
.endif
ret
ControlZapTable endp
ControlCountItem proc hWin:dword
;作用:计算所选的词库的词条数目.
;参数:
;返回值:
;
;开发日期:20:05:02 2005-04-10
;备注:
LOCAL lTableName[256]:byte
LOCAL lSQL[1024]:byte
invoke GetWindowText,hControlComboTables,addr lTableName,sizeof lTableName
invoke wsprintf,addr lSQL,SADD("SELECT COUNT(*) FROM %s"),addr lTableName
invoke ODBCExeDirect,addr lSQL
.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
invoke SQLBindCol, hStmt,1,SQL_C_CHAR, addr buffer_row_1, sizeof buffer_row_1,addr buffer_1_Length
mov byte ptr ds:[buffer_row_1],0
invoke SQLFetch, hStmt
.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
invoke wsprintf,addr lSQL,SADD("此词库的词条数目为: %s。"),addr buffer_row_1
invoke MessageBox,NULL,addr lSQL,addr lTableName,MB_ICONASTERISK
.endif
invoke SQLCloseCursor,hStmt
invoke SQLFreeHandle,SQL_HANDLE_STMT,hStmt
.endif
ret
ControlCountItem endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -