📄 email.c
字号:
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 + -