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

📄 mapping.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				pTmp = AD_lookupValueEx( __pConfig, "Internal", 
					"MappingTypes", iTmp );
				if ( !pTmp )
					{ break; };

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

			/*
			** Limit edit field lengths, really just a sanity thing
			*/
			SendMessage( hWndFrom, EM_SETLIMITTEXT, 256, 0 );
			SendMessage( hWndTo, EM_SETLIMITTEXT, 256, 0 );

			/*
			** Setup tabstops
			*/
			aTabstop[0] = 0;
			aTabstop[1] = 53;
			aTabstop[2] = 107;
			aTabstop[3] = 161;
			SendMessage( hWndList, LB_SETTABSTOPS, 4, (LPARAM)&aTabstop );

			/*
			** Load all mappings
			*/
			iTmp = 0;
			for(;; iTmp++ )
				{
				pTmp = AD_lookupValueEx( __pConfig, "Mappings", 
					"Mapping", iTmp );
				if ( !pTmp )
					{ break; };

				if ( SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)pTmp )>=0 )
					{
					Internal_addLine( pTmp );
					}
				else
					{ break; /* error */; };
				};
			}

			AD_hourglassOff();
			break;

		case WM_DESTROY:
			{
			/*
			** 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();
			};
			break;

		case WM_COMMAND:
			switch (GET_WM_COMMAND_ID(wParam, lParam))
				{
				case IDC_ADD:
					{
					/*
					** Verify fields are valid
					*/
					if ( !Internal_verifyFields( hDlg, szBuf, BUF_SIZE ) )
						{ break; };

					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]) ) ) );
	
					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 );
					AD_Changed( hDlg );
					};
					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 );
					AD_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 );
					AD_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 = AD_lookupValueEx( __pConfig, "Realms",
							"Basic", iTmp );
						if ( !pTmp ) { break; };

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

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

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

					for(iTmp = 0;; iTmp++ )
						{
						const char *pTmp = AD_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 AD_cancel( 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 --- */
					AD_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 = AD_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);
}

/*____________________________________________________________________________*\
 *
 Description:
	Definitions and global values
\*____________________________________________________________________________*/
DLGPROC fnMapping = (DLGPROC)DialogProc;

⌨️ 快捷键说明

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