⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control.inc

📁 一个背单词源码
💻 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 + -