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

📄 email.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 2 页
字号:

	bt_del = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 4, 20, 20, 20, mainwin, 0, (void *)zi_delete);			
	bt_addrbk = CreateWindow(WNDCLASS_BUTTON, "地", WS_CHILD|BS_REGULAR, 26, 20, 20, 20, mainwin, 0, NULL);	
	bt_ok = CreateWindow(WNDCLASS_BUTTON, "确", WS_CHILD|BS_REGULAR, 48, 20, 20, 20, mainwin, 0, NULL);	
	bt_cancel = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 70, 20, 20, 20, mainwin, 0, (void *)zi_cancel);
				
	st1 = CreateWindow(WNDCLASS_STATIC, "请选择或添加信箱:", WS_CHILD|SS_TEXT,4,42,104,20, mainwin,0,NULL); 
	ed_account = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, 4,64,126,20,mainwin,EMAIL_ADDRESSEE_LEN,NULL);
	bt_empty = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 132,64,20,20, mainwin, 0, (void *)zi_delete);
	
	st2 = CreateWindow(WNDCLASS_STATIC, "现有信箱:", WS_CHILD|SS_TEXT,4,86,56,20, mainwin,0,NULL); 
	//标题按钮的初始化:	
	i = 108;
	for( count = 0; count < ACCOUNT_DISP_NUM; count++ )
	{
		bt_list[count] = CreateWindow(WNDCLASS_BUTTON,NULL,WS_CHILD|BS_REGULAR,4,i,138,20,mainwin,0,NULL);
		i += 21;
//		SetWindowText( bt_list[count], NULL, 0);
		EnableWindow( bt_list[count], FALSE );
	}			
	
//	FreeDBList( &global_email_list, &number );
	GetAccountList( &account_num, (char *)account_list );

	//设置滚动条
	low = 0; 
	startp = 0;
	if( account_num <= ACCOUNT_DISP_NUM )
	{
		high = 0;
		endp = account_num;
	}else{
		high = (U16)(account_num - ACCOUNT_DISP_NUM);
		endp = ACCOUNT_DISP_NUM;
	}
	hmenu = MAKELONG( low, high );
	scroll = CreateWindow(WNDCLASS_SCROLL, NULL, WS_CHILD|SBS_VERT, 143,108,16,105,mainwin,hmenu,NULL);

	for( i = 0; ( i < ACCOUNT_DISP_NUM ) && ( (startp+i) < account_num ); i++ )	//获得要显示的记录号
		suffix_in_disp[i] = (U16)(startp+i);

	AccountDisplayList( (char *)account_list, suffix_in_disp, bt_list, 0 );
	select_bt = ACCOUNT_DISP_NUM;
			
	while(!quit) 
	{
		ASIXGetMessage( &Msg, NULL, 0, 0);	
		
		switch ( Msg.message )
		{
			case	WM_COMMAND:	
				for( count = 0; count < ACCOUNT_DISP_NUM; count++ )//点击标志
				{
					if( Msg.lparam == bt_list[count] )
					{ 
						if( select_bt != ACCOUNT_DISP_NUM )
						{
							if( select_bt != count )	//清除原来反色的按钮
							{
								RepaintWindow( bt_list[select_bt], BS_INVERT );
								RepaintWindow( bt_list[count], BS_INVERT );
								activeflag[select_bt] = UNACTIVE;
							}
						}else{
							RepaintWindow( bt_list[count], BS_INVERT );
						}
						
						switch( activeflag[count] )
						{
							case	UNACTIVE:
							case	DOUBLEACTIVE:
								select_bt = (U8)count;
								activeflag[count] = SINGLEACTIVE;		  					
								select_no = suffix_in_disp[select_bt];
								SetWindowText( ed_account, account_list[select_no], NULL );
								break;

							case	SINGLEACTIVE:
								select_bt = (U8)count;
								activeflag[count] = DOUBLEACTIVE;
									
								select_no = suffix_in_disp[select_bt];
								RepaintWindow( bt_list[select_bt], BS_INVERT );
								memcpy( cur_account, account_list[select_no], ACCOUNT_LEN );
								EmailBox();
								if( kbflag == TRUE )	//有键盘
								{					//有键盘
									DestroyWindow( keyboard ); 
									kbflag = FALSE;
								}
								display_flag = TRUE;
								break;
						}
						break;
					}
				}

				if( Msg.lparam == bt_del )		//删除
				{
					if( account_num != 0 )
					{
						msgbox = MessageBox( mainwin, "确实要删除此帐号吗?", "提醒", MB_OKCANCEL|MB_ICONQUESTION );
						if( msgbox == IDOK )
						{
							for( i = select_no; i < account_num-1; i++ )
								memcpy( account_list[i], account_list[i+1], ACCOUNT_LEN );
							memset( account_list[account_num-1], 0x00, ACCOUNT_LEN );
							SetWindowText( ed_account, account_list[select_no], NULL );
							SaveEmailAccount( (char *)account_list, 0 );
							account_num--;
							display_flag = TRUE;
							if( select_no != account_num )
							{
								keep_flag = TRUE;
							}
						}
					}
				}
				if( Msg.lparam == bt_addrbk )	//地址本
				{
//					BrowseAddrBk( 0 );
				}
				if( Msg.lparam == bt_ok )		//确定
				{
					GetEditorStr( ed_account, cur_account, ACCOUNT_LEN );
					if( cur_account[0] == 0 )
					{
						msgbox = MessageBox( mainwin, "请选择一个信箱!", "提醒", MB_OKCANCEL|MB_ICONQUESTION );
					}else{
						for( count = 0, i = 0; i < account_num; i++ )
						{
							if( strcmp( account_list[i], cur_account ) != 0 )
								count++;
						}
						if( count == account_num )	//是新的邮箱
						{
							msgbox = MessageBox( mainwin, "确实要添加此信箱吗?", "提醒", MB_OKCANCEL|MB_ICONQUESTION );
							if( msgbox == IDOK )
							{
								memcpy( account_list[account_num], cur_account, ACCOUNT_LEN );
								account_num++;
								SaveEmailAccount( (char *)account_list, 0 );
								EmailBox();	//启动信箱
								if( kbflag == TRUE )	//有键盘
								{					//有键盘
									DestroyWindow( keyboard ); 
									kbflag = FALSE;
								}
								display_flag = TRUE;
							}else{
								memcpy( cur_account, 0x00, ACCOUNT_LEN );
							}
						}else{
							EmailBox();	//启动信箱
							if( kbflag == TRUE )	//有键盘
							{					//有键盘
								DestroyWindow( keyboard ); 
								kbflag = FALSE;
							}
							display_flag = TRUE;
						}
					}		
				}
				if( Msg.lparam == bt_cancel )	//取消
				{
					quit = TRUE;
				}
				if( Msg.lparam == bt_empty )	//重置文本框
				{
					SetWindowText( ed_account, NULL, NULL );
					SetFocus( ed_account );
				}

				if( Msg.lparam == kb )
				{
					if( kbflag == FALSE )	//无键盘
					{
						keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,144,158,70,mainwin,0,NULL);
						SetFocus( ed_account );
						kbflag = TRUE; 
					}else{					//有键盘
						DestroyWindow( keyboard ); 
						kbflag = FALSE;
					}
				}

				if( display_flag == TRUE )		//汇总	
				{
					if( select_bt != ACCOUNT_DISP_NUM  )
					{
						activeflag[select_bt] = UNACTIVE;	
						RepaintWindow( bt_list[select_bt], BS_INVERT );//清按钮的反色区
					}
		
					low = 0;
					if( account_num <= ACCOUNT_DISP_NUM )
					{
						high = 0;
						endp = account_num;
					}else{
						high = (U16)(account_num - ACCOUNT_DISP_NUM);
						endp = ACCOUNT_DISP_NUM;
					}
//					startp = 0;
					SetScrollRange( scroll, low, high );
					SetScrollPos( scroll, startp, 0, 0 );

					memset( suffix_in_disp, EOD, ACCOUNT_DISP_NUM*sizeof(U16) );
					for( i = 0; ( i < ACCOUNT_DISP_NUM ) && ( (startp+i) < account_num ); i++ )	//获得要显示的记录号
						suffix_in_disp[i] = startp+i;

					AccountDisplayList( (char *)account_list, suffix_in_disp, bt_list, 0 );
					if( keep_flag == TRUE )
					{
						activeflag[select_bt] = SINGLEACTIVE;	
						RepaintWindow( bt_list[select_bt], BS_INVERT );//清按钮的反色区
					}else{
						select_bt = ACCOUNT_DISP_NUM;
					}
					keep_flag = FALSE;
					display_flag = FALSE;
				}
				break;
			case	WM_VSCROLL:
				if(Msg.lparam == scroll)
				{
					if( startp == 0 )	topdir = TRUE;
					if( endp == number )	enddir = TRUE;

					switch( Msg.wparam )
					{
						case	SB_LINEDOWN:
								startp++;
								endp++;
								break;
						case	SB_LINEUP:
								startp--;
								endp--;
								break;										
						case	SB_PAGEDOWN:
								startp += ACCOUNT_DISP_NUM;
								endp += ACCOUNT_DISP_NUM;
								break;										
						case	SB_PAGEUP:
								startp -= ACCOUNT_DISP_NUM;
								endp -= ACCOUNT_DISP_NUM;
								break;
						case	SB_ENDSCROLL :
								startp = (U8)GetScrollPos(scroll,0,0,0);
								endp = startp - ACCOUNT_DISP_NUM;
								break;
						default :
								break;
					}
														    
					low = 0;
					if( account_num > ACCOUNT_DISP_NUM )
					{
						high = (U16)(account_num - ACCOUNT_DISP_NUM);
						if( (S8)(startp) < 0 )	startp = 0;
						if( startp > high )		startp = high;		
						endp = startp + ACCOUNT_DISP_NUM;
					}else{
						high = 0;
						startp = 0;
						endp = account_num;
					}

					if(topdir==TRUE)
						if( startp != 0 ) topdir = FALSE;
					if( enddir == TRUE )
						if( endp != number ) enddir = FALSE;
					SetScrollRange( scroll, low, high );
					
					if( ( topdir == FALSE ) && ( enddir == FALSE ) )
					{

						SetScrollPos( scroll, startp, 0, 0 ); 
						if( select_bt != ACCOUNT_DISP_NUM)       //移动的时候需要使原来选择的记录返黑
						{
							RepaintWindow( bt_list[select_bt], BS_INVERT );
							activeflag[select_bt] = UNACTIVE;
							select_bt = EMAIL_DISP_NUM;
						}
						memset( suffix_in_disp, EOD, ACCOUNT_DISP_NUM*sizeof(U16) );
						for( i = 0; ( i < ACCOUNT_DISP_NUM ) && ( (startp+i) < account_num ); i++ )	//获得要显示的记录号
							suffix_in_disp[i] = startp+i;
						AccountDisplayList( (char *)account_list, suffix_in_disp, bt_list, 0 );
					}

				}
				break;
			case	WM_QUIT:
					quit = TRUE;
					break;	
			}
			DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam); 		
	}
	
	DestroyWindow(mainwin);
	SaveDB( emaillacb );

	if( DetachDataBase( emaillacb ) != DB_OK )
		msgbox = MessageBox(mainwin, "数据库断开失败!", "友情提醒", MB_OK|MB_ICONERROR);
}

/***********************************************************************************************/
STATUS	AccountDisplayList( char *account_list, U16 *suffix_in_digs, U32 *bt_name, U8 reserved )
{
	U16		i = 0;

	while( ( *suffix_in_digs != EOD ) && ( i < ACCOUNT_DISP_NUM ) )
	{
		EnableWindow( *bt_name, TRUE);	
		SetWindowText( *bt_name++, account_list+ACCOUNT_LEN*(*suffix_in_digs), NULL);
		i++;
		suffix_in_digs++;
	}

	while( i < ACCOUNT_DISP_NUM )
	{
		if( i == 0 )
			SetWindowText( *bt_name, "此记录为空!", NULL );
		else
			SetWindowText( *bt_name, NULL, NULL );
		EnableWindow( *bt_name++, FALSE );
		i++;
	}		
		
	bt_name -= i; 
		
	return	EMAIL_OK;
}

⌨️ 快捷键说明

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