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

📄 encyclopedia.asm

📁 一个背单词源码
💻 ASM
字号:
.386
.model flat,stdcall
option casemap:none

include Encyclopedia.inc
include MYMAC.INC


include debug.inc
includelib debug.lib
include db.inc
include statusbar.inc

include hComboTableName.inc

include buttons.inc
include list.inc
include filter.asm
include addnew.asm
include edit.asm
include control.asm

.code

start:
	invoke exist,SADD("wordlist.mdb")
	.if !eax
		MyDebug "找不到词库文件wordlist.mdb,程序即将退出!!!"
		invoke ExitProcess,eax
	.endif
	invoke GetModuleHandle,NULL
	mov    hInstance,eax
	invoke GetCommandLine	
	mov		CommandLine,eax
	invoke InitCommonControls
	invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
	invoke ExitProcess,eax

WinMain proc uses esi hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
	LOCAL	wc:WNDCLASSEX
	LOCAL	msg:MSG
	LOCAL	@hAccelerator:dword
	
	
	mov		wc.cbSize,sizeof WNDCLASSEX
	mov		wc.style,CS_HREDRAW or CS_VREDRAW
	mov		wc.lpfnWndProc,offset WndProc
	mov		wc.cbClsExtra,NULL
	mov		wc.cbWndExtra,DLGWINDOWEXTRA
	push	hInst
	pop		wc.hInstance
	mov		wc.hbrBackground,COLOR_BTNFACE+1
	mov		wc.lpszMenuName,NULL ;IDM_MENU
	mov		wc.lpszClassName,offset ClassName
	invoke LoadIcon,NULL,IDI_APPLICATION
	mov		wc.hIcon,eax
	mov		wc.hIconSm,eax
	invoke LoadCursor,NULL,IDC_ARROW
	mov		wc.hCursor,eax
	invoke RegisterClassEx,addr wc
	invoke CreateDialogParam,hInstance,IDD_DIALOG1,NULL,addr WndProc,NULL
	invoke ShowWindow,hWnd,SW_SHOWNORMAL
	invoke UpdateWindow,hWnd
	
	invoke	LoadAccelerators,hInstance,20000
	mov	@hAccelerator,eax

	
	.while TRUE
		invoke GetMessage,addr msg,NULL,0,0
	  .BREAK .if !eax	  	
	  	invoke	TranslateAccelerator,hWnd,@hAccelerator,addr msg
		mov esi,eax
		invoke IsDialogMessage, hWnd, ADDR msg
	  	.if	!esi && !eax
			invoke TranslateMessage,addr msg
			invoke DispatchMessage,addr msg		
		.endif
	.endw
	mov		eax,msg.wParam
	ret

WinMain endp

WndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

	mov		eax,uMsg	
	.if eax==WM_COMMAND
		.if	lParam == 0
			mov	eax,wParam
			movzx	eax,ax
			.if	eax ==10001	;f1
				invoke DialogBoxParam,NULL,IDD_DLG_FILTER,NULL,addr FilterDlgProc,NULL
			.elseif eax==10002	;f2
				invoke DialogBoxParam,NULL,IDD_DLG_ADDNEW,NULL,addr AddNewDlgProc,NULL
			.elseif eax==10003	;f3
				invoke DialogBoxParam,NULL,IDD_DLG_EDIT,NULL,addr EditDlgProc,NULL
			.elseif eax==10004	;f4
				invoke ButtonDelete,hWin	
			.elseif eax==10005	;f5
				invoke DialogBoxParam,NULL,IDD_DLG_CONTROL,NULL,addr ControlDlgProc,NULL
		   .endif
		.endif
		mov		edx,wParam
		movzx	eax,dx
		shr		edx,16
		.if edx==BN_CLICKED
			.if eax==IDC_BTN_SEARCH
				invoke DialogBoxParam,NULL,IDD_DLG_FILTER,NULL,addr FilterDlgProc,NULL
			.elseif eax==IDC_BTN_ADD
				invoke DialogBoxParam,NULL,IDD_DLG_ADDNEW,NULL,addr AddNewDlgProc,NULL
			.elseif eax==IDC_BTN_EDIT
				invoke DialogBoxParam,NULL,IDD_DLG_EDIT,NULL,addr EditDlgProc,NULL
			.elseif eax==IDC_BTN_DEL
				invoke ButtonDelete,hWin
			.elseif eax==IDC_BTN_MAIN
				invoke DialogBoxParam,NULL,IDD_DLG_CONTROL,NULL,addr ControlDlgProc,NULL
			.elseif eax==IDCANCEL
				;Msg AppName
				invoke GetWindowTextLength,hEditInput
				.if eax
					invoke SetWindowText,hEditInput,0
				.else
					INVOKE ShowWindow,hWin,SW_MINIMIZE	
				.endif				
			.endif
		.endif
		mov eax,wParam
		.if ax==IDC_EDT_INPUT
			shr eax,16
			.if eax==EN_UPDATE
				Invoke DoSearch,hWin
			.elseif eax==EN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("输入不超过36个字符;接收通配符*和?;支持Up,Down,PageUp,PageDown键")
			.endif
		
		.elseif ax==IDC_CBO
			shr eax,16
			.if eax==CBN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("显示当前词库.")
			.elseif eax==CBN_SELCHANGE
				;改变listbox的内容
				invoke SetListBox,hWin
			.endif
		.elseif ax==IDC_LST1
			shr eax,16
			.if eax==LBN_SELCHANGE	|| eax==LB_SETCURSEL			
				invoke DisplayDetail,hWin
			.elseif eax==LBN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("单击、按键(Up,Down,PageUp,PageDown)来调整所选单词.")
			.endif
		.elseif ax==IDC_EDT_WORD
			shr eax,16
			.if eax==EN_SETFOCUS
				invoke DestroyCaret
				invoke StatusBarSetIndexText,0,SADD("显示当前词条。只读。可以点击相应按钮来编辑或删除。")
			.endif
		.elseif ax==IDC_EDT_PHONE
			shr eax,16
			.if eax==EN_SETFOCUS
				invoke DestroyCaret
				invoke StatusBarSetIndexText,0,SADD("显示当前词条的音标。只读。可以点击相应按钮来编辑或删除。")
			.endif
		.elseif ax==IDC_BTN_EDIT
			shr eax,16
			.if eax==BN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("编辑当前词条。其快捷键为F3。")
			.endif
		.elseif ax==IDC_BTN_ADD
			shr eax,16
			.if eax==BN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("新增词条。其快捷键为F2。")
			.endif
		.elseif ax==IDC_BTN_DEL	
			shr eax,16
			.if eax==BN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("删除当前词条。其快捷键为F4。")
			.endif
		.elseif ax==IDC_BTN_MAIN
			shr eax,16
			.if eax==BN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("系统设置。包括词库的新建、删除。支持标准SQL语句。其快捷键为F5")
			.endif
		.elseif ax==IDC_BTN_SEARCH
			shr eax,16
			.if eax==BN_SETFOCUS
				invoke StatusBarSetIndexText,0,SADD("高级搜索功能。支持标准SQL语句。其快捷键为F1。")
			.endif
		
		.endif
	.elseif eax==WM_SIZE	
;		mov eax,wParam
;		.if eax==SIZE_MAXIMIZED	
;			invoke MyResize,hWin
;		.endif	
		invoke MyResize,hWin
		invoke InvalidateRect, hWin,NULL,TRUE
		invoke SetFocus,hEditInput
	.ELSEIF eax==WM_PAINT
		invoke MainWindowPaint,hWin
	.ELSEIF eax == WM_CTLCOLORSTATIC 
       mov eax,lParam 
          .if eax == hWord
             invoke GetStockObject, WHITE_BRUSH 
             ret 
          .endif
	.elseif eax==WM_INITDIALOG
		push	hWin
		pop		hWnd
		invoke ODBCConnect,hWin
		invoke InitControlAttributs,hWin	
		invoke InitTableNameCombo,hWin
		invoke InitButtons,hWin
		invoke SetListBox,hWin	
		invoke LoadIcon,hInstance,1005
		invoke SendMessage,hWin,WM_SETICON,ICON_BIG,EAX	
		invoke StaTusBarInit,hWin
	.elseif eax==WM_CLOSE		
		invoke ODBCDisconnect,hWin
		invoke DestroyWindow,hWin
	.elseif uMsg==WM_DESTROY		
		invoke PostQuitMessage,NULL
	.else
		invoke DefWindowProc,hWin,uMsg,wParam,lParam
		ret
	.endif
	xor    eax,eax
	ret

WndProc endp

end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -