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

📄 mappings.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 CPP
📖 第 1 页 / 共 3 页
字号:
						break;
		
					case IDC_REPLACE:
						{
						/*
						** Verify fields are valid
						*/
						if ( !Internal_verifyFields( hDlg, szBuf, BUF_SIZE ) )
							{ break; };
	
						/*
						** Get selected item index 
						*/
						int iCurSel = SendMessage( hWndList, LB_GETCURSEL, 0,
                            0 );
						assert( iCurSel>=0 );
	
						/*
						** Get text to add and add it to internal lists only
						*/
						int i, j;
						*szBuf = '\0';
	
						SendMessage( hWndType, WM_GETTEXT, BUF_SIZE,
                            (LPARAM)szBuf );
						for( i=0; i<BUF_SIZE && szBuf[i]!='\t' && szBuf[i];
                            i++ );
						if ( szBuf[i] ) { szBuf[i] = '\0'; };
						lTypes.Append( (DblList::type)PI_NEW(
                            PIString( szBuf ) ) );
						szBuf[i++] = '\t';
	
						SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE-i,
                            (LPARAM)&(szBuf[i]) );
						for( j=i; i<BUF_SIZE && szBuf[i] && szBuf[i]!='\t';
                            i++ );
						if ( szBuf[i] ) { szBuf[i] = '\0'; };
						lFroms.Append( (DblList::type)PI_NEW(
	                        PIString( &(szBuf[j]) ) ) );
						szBuf[i++] = '\t';
	
						SendMessage( hWndTo, WM_GETTEXT, BUF_SIZE-i,
                            (LPARAM)&(szBuf[i]) );
						for( j=i; i<BUF_SIZE && szBuf[i] && szBuf[i]!='\t';
                            i++ );
						if ( szBuf[i] ) { szBuf[i] = '\0'; };
						lTos.Append( (DblList::type)PI_NEW( PIString(
                            &(szBuf[j]) ) ) );
						szBuf[i++] = '\t';
	
						szBuf[i] = '\0';
						SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE-i,
                            (LPARAM)&(szBuf[i]) );
						if ( szBuf[i]=='\0' )
							{ strncpy( &(szBuf[i]), "(none)", BUF_SIZE-i ); };
						lRealms.Append( (DblList::type)PI_NEW( PIString(
                            &(szBuf[i]) ) ) );
		
						/*
						** Delete the item from the list and internal lists
						*/
						SendMessage( hWndList, LB_DELETESTRING,	iCurSel, 0 );
						PI_DELETE( (PIString *)lTypes.Detach( iCurSel) );
						PI_DELETE( (PIString *)lFroms.Detach( iCurSel) );
						PI_DELETE( (PIString *)lTos.Detach( iCurSel) );
						PI_DELETE( (PIString *)lRealms.Detach( iCurSel) );
						
						/*
						** Add new item to listbox
						*/
						SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)szBuf );
	
						/*
						** Clear edit fields, focus to list
						*/
						SendMessage( hWndType, CB_SETCURSEL, (WPARAM)-1, 0 );
						SendMessage( hWndFrom, WM_SETTEXT, 0, (LPARAM)"" );
						SendMessage( hWndTo, WM_SETTEXT, 0, (LPARAM)"" );
						SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)-1, 0 );
						SetFocus( hWndList );
						Changed( hDlg );
						};
						break;
	
					case IDC_DELETE:
						{
						int iCurSel = SendMessage( hWndList, LB_GETCURSEL,
                            0, 0 );
						SendMessage( hWndList, LB_DELETESTRING,	iCurSel, 0 );
						PI_DELETE( (PIString *)lTypes.Detach( iCurSel ) );
						PI_DELETE( (PIString *)lFroms.Detach( iCurSel ) );
						PI_DELETE( (PIString *)lTos.Detach( iCurSel ) );
						PI_DELETE( (PIString *)lRealms.Detach( iCurSel ) );
				
						/*
						** Clear edit fields, focus to list
						*/
						SendMessage( hWndType, CB_SETCURSEL, (WPARAM)-1, 0 );
						SendMessage( hWndFrom, WM_SETTEXT, 0, (LPARAM)"" );
						SendMessage( hWndTo, WM_SETTEXT, 0, (LPARAM)"" );
						SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)-1, 0 );
						SetFocus( hWndList );
						Changed( hDlg );
						};
						break;
	
					case IDC_TYPE:
						if ( GET_WM_COMMAND_CMD(wParam, lParam)!=CBN_SELCHANGE )
							{ break; };
						*szBuf = '\0';
						SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
                            (LPARAM)szBuf ); 
						Internal_updateButtons( wParam, lParam, szBuf );
						break;
	
					case IDC_FROM:
						if ( GET_WM_COMMAND_CMD(wParam, lParam)!=EN_CHANGE )
							{ break; };
						*szBuf = '\0';
						SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
                            (LPARAM)szBuf ); 
						Internal_updateButtons( wParam, lParam, szBuf );
						break;
	
					case IDC_TO:
						if ( GET_WM_COMMAND_CMD(wParam, lParam)!=EN_CHANGE )
							{ break; };
						*szBuf = '\0';
						SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
                            (LPARAM)szBuf );
						Internal_updateButtons( wParam, lParam, szBuf );
						break;
	
					case IDC_REALM:
						if ( GET_WM_COMMAND_CMD(wParam, lParam)!=CBN_SELCHANGE )
							{ break; };
						*szBuf = '\0';
						SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
                            (LPARAM)szBuf ); 
						Internal_updateButtons( wParam, lParam, szBuf );
						break;
	
					case IDC_LIST:
						if ( GET_WM_COMMAND_CMD(wParam, lParam)==LBN_SELCHANGE )
							{
							int iSel = SendMessage( hWndList, LB_GETCURSEL,
                                0, 0 );
							if ( iSel!=LB_ERR )
								{
								assert( iSel>=0 && iSel<lFroms.Size() );
								EnableWindow( hWndDelete, TRUE );
								int iIndex = SendMessage( hWndType,
                                    CB_FINDSTRINGEXACT, 
									(WPARAM)-1, 
									(LPARAM)(const char *)*((PIString *)
                                        lTypes[iSel]) );
								assert( iIndex>=0 );
								SendMessage( hWndType, CB_SETCURSEL, (WPARAM)
									(iIndex==CB_ERR ? -1 : iIndex), 0 );
								SendMessage( hWndFrom, WM_SETTEXT, 0,
									(LPARAM)(const char *)*((PIString *)
                                        lFroms[iSel]) );
								SendMessage( hWndTo, WM_SETTEXT, 0,
									(LPARAM)(const char *)*((PIString *)
                                        lTos[iSel]) );
								iIndex = SendMessage( hWndRealm,
                                    CB_FINDSTRINGEXACT, 
									    (WPARAM)-1, 
									(LPARAM)(const char *)*((PIString *)
                                        lRealms[iSel]) );
								assert( iIndex>=0 );
								SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)
									(iIndex==CB_ERR ? -1 : iIndex), -1 );
								};
							};
						break;
	
					default:;		
					}
				break;
	
			case WM_NOTIFY:
				{
				switch( ((NMHDR *)lParam)->code )
					{
                    case PSN_SETACTIVE:
                        {
                        int iCurSel = ::SendMessage( hWndRealm, CB_GETCURSEL,
                            0, 0 );

                        ::SendMessage( hWndRealm, CB_RESETCONTENT, 0, 0 );
                        int iTmp = 0;
                        for(;; iTmp++ )
                            {
                            const char *pTmp = M_LookupValueEx( pConfig,
                                "Realms", "Basic", iTmp );
                            if ( !pTmp ) { break; };

                            ::SendMessage( hWndRealm, CB_ADDSTRING, 0,
                                (LPARAM)pTmp );
                            };

                        for(iTmp = 0;; iTmp++ )
                            {
                            const char *pTmp = M_LookupValueEx( pConfig,
                                "Realms", "Digest", iTmp );
                            if ( !pTmp ) { break; };

                            ::SendMessage( hWndRealm, CB_ADDSTRING, 0,
                                (LPARAM)pTmp );
                            };

                        for(iTmp = 0;; iTmp++ )
                            {
                            const char *pTmp = M_LookupValueEx( pConfig,
                                "Realms", "Ntlm", iTmp );
                            if ( !pTmp ) { break; };

                            ::SendMessage( hWndRealm, CB_ADDSTRING, 0,
                                (LPARAM)pTmp );
                            };
                        ::SendMessage( hWndRealm, CB_ADDSTRING, 0,
                            (LPARAM)"(none)" );

                        ::SendMessage( hWndRealm, CB_SETCURSEL, iCurSel, 0 );
                        };
                        break;
	
					case PSN_QUERYCANCEL:
						return SHEET->Cancel(pInterface, hDlg);
	
					case PSN_KILLACTIVE:
						{
						int i = 0;
						int iCurSel = ::SendMessage( hWndList, LB_GETCURSEL,
                            0, 0 );
						int iCount = ::SendMessage( hWndList, LB_GETCOUNT,
                            0, 0 );
	
						/* --- remove old ones first --- */
						M_DeleteValue( pConfig, "Mappings", "Mapping" );
	
						/*
						** Save all mappings
						*/
						Internal_saveValues( hDlg );
	
						/*
						** Delete values
						*/
						DblListIterator x( lTypes );
						DblListIterator y( lFroms );
						DblListIterator z( lTos );
						DblListIterator w( lRealms );
						for( ; !x.BadIndex(); x++, y++, z++, w++ )
							{
							assert( !x.BadIndex() && !y.BadIndex() &&
                                !z.BadIndex() && !w.BadIndex() );
							PI_DELETE( (PIString *)x.Current() );
							PI_DELETE( (PIString *)y.Current() );
							PI_DELETE( (PIString *)z.Current() );
							PI_DELETE( (PIString *)w.Current() );
							};
						lTypes.Clear();
						lFroms.Clear();
						lTos.Clear();
						lRealms.Clear();
	
						/*
						** Load all mappings
						*/
						int iTmp = 0;
						const char *pTmp;
						for(;; iTmp++ )
							{
							pTmp = M_LookupValueEx( pConfig, "Mappings", 
								"Mapping", iTmp );
							if ( !pTmp )
								{ break; };
	
							if ( SendMessage( hWndList, LB_ADDSTRING, 0,
								(LPARAM)pTmp )>=0 )
								{
								Internal_addLine( pTmp );
								}
							else
								{ break; /* error */; };
							};
						::SendMessage( hWndList, LB_SETCURSEL, iCurSel, 0 );
						};
						SetWindowLong( hDlg, DWL_MSGRESULT, FALSE );
						break;
	
					default:
						return (FALSE);
					};
				};
				break;
	
			default:
				return (FALSE);
			};
	
		return (TRUE);
        };
};

/*____________________________________________________________________________*\
 *
 Function:
 Synopsis:
 Description:
\*____________________________________________________________________________*/
static BOOL CALLBACK fnDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam,
    LPARAM lParam)
{
    if ( uMsg==WM_INITDIALOG )
        {
        ::SetWindowLong( hDlg, DWL_USER, ((LPPROPSHEETPAGE)lParam)->lParam );
        };

    MappingsPage *pPage = (MappingsPage *)::GetWindowLong( hDlg, DWL_USER );
    return pPage ? pPage->DialogProc( hDlg, uMsg, wParam, lParam ) : FALSE;
}

/*____________________________________________________________________________*\
 *
 Function:
 Synopsis:
 Description:
\*____________________________________________________________________________*/
PUBLIC_PIAPI int MappingsPage_constructor( PIObject *pObj,
	int iArgc, const char *ppArgv[] )
{
	return IFaceBase_constructor( pObj, PI_NEW( MappingsPage( pObj,
		iArgc, ppArgv ) ) );
}

#if 0
/*___+++CNF_BEGIN+++___*/
	<Class>
		Name MappingsPageClass
		Type LogicExtension
		Library IntrFace
		OnClassLoad IFaceBase_onClassLoad
		Constructor MappingsPage_constructor
		CopyConstructor IFaceBase_copyConstructor
		Destructor IFaceBase_destructor
		Execute IFaceBase_execute
	</Class>

	<Object>
		Name MappingsPage
		Class MappingsPageClass
	</Object>

/*___+++CNF_END+++___*/
#endif

⌨️ 快捷键说明

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