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

📄 ip.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			hWndDocumentRoot= GetDlgItem( hDlg, IDC_DOCUMENTROOT );
			hWndAdd = GetDlgItem( hDlg, IDC_ADD );
			hWndReplace = GetDlgItem( hDlg, IDC_REPLACE );
			hWndDelete= GetDlgItem( hDlg, IDC_DELETE );
			hWndAdministrator= GetDlgItem( hDlg, IDC_ADMIN );

			assert( hWndList && hWndIPAddress && hWndHostname &&
                hWndDocumentRoot );
			assert( hWndAdd && hWndReplace && hWndDelete && hWndAdministrator );

			EnableWindow( hWndAdd, FALSE );
			EnableWindow( hWndReplace, FALSE );
			EnableWindow( hWndDelete, FALSE );

			/*
			** Limit edit field lengths, really just a sanity thing
			*/
			SendMessage( hWndIPAddress, EM_SETLIMITTEXT, 256, 0 );
			SendMessage( hWndHostname, EM_SETLIMITTEXT, 256, 0 );
			SendMessage( hWndDocumentRoot, EM_SETLIMITTEXT, 256, 0 );
			SendMessage( hWndAdministrator, EM_SETLIMITTEXT, 256, 0 );

			/*
			** Setup tabstops
			*/
			aTabstop[0] = 0;
			aTabstop[1] = 60;
			aTabstop[2] = 120;
			aTabstop[3] = 170;
			SendMessage( hWndList, LB_SETTABSTOPS, 4, (LPARAM)&aTabstop );

			/*
			** Load all data into the listbox
			*/
			iTmp = 0;
			for(;; iTmp++ )
				{
				pTmp = AD_lookupValueEx( __pConfig, SECTION, 
					VARIABLE, iTmp );
				if ( !pTmp )
					{ break; };

				SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)pTmp );
				};
			Internal_reloadArrays();
			}
			AD_hourglassOff();
			break;

		case WM_DESTROY:
			{
			Internal_clearArrays();
			};
			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( hWndIPAddress, WM_GETTEXT, BUF_SIZE,
                        (LPARAM)szBuf );
					for( i=0; i<BUF_SIZE && szBuf[i] && szBuf[i]!='\t'; i++ );
					if ( szBuf[i] ) { szBuf[i] = '\0'; };
					lIPs.Append( (DblList::type)PI_NEW(PIString(szBuf )));
					szBuf[i++] = '\t';

					SendMessage( hWndHostname, 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'; };
					lHostnames.Append( (DblList::type)PI_NEW(
                        PIString( &(szBuf[j]) ) ) );
					szBuf[i++] = '\t';

					SendMessage( hWndDocumentRoot, 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'; };
					lDocumentRoots.Append( (DblList::type)PI_NEW(
                        PIString( &(szBuf[j]) ) ) );
					szBuf[i++] = '\t';

					SendMessage( hWndAdministrator, 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'; };
					lAdministrators.Append( (DblList::type)PI_NEW(
                        PIString( &(szBuf[j]) ) ) );

					SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)szBuf );

					/*
					** Clear edit fields, focus to list
					*/
					SendMessage( hWndIPAddress, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndHostname, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndDocumentRoot, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndAdministrator, WM_SETTEXT, 0, (LPARAM)"" );
					Internal_reloadArrays();
					int iIndex = SendMessage( hWndList, LB_FINDSTRINGEXACT, 0, (LPARAM)szBuf );
					if ( iIndex!=LB_ERR ) SendMessage( hWndList, LB_SETTOPINDEX, iIndex, 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 );

					/*
					** Get text to add and add it to internal lists only
					*/
					int i, j;
					*szBuf = '\0';

					SendMessage( hWndIPAddress, WM_GETTEXT, BUF_SIZE,
                        (LPARAM)szBuf );
					for( i=0; i<BUF_SIZE && szBuf[i] && szBuf[i]!='\t'; i++ );
					if ( szBuf[i] ) { szBuf[i] = '\0'; };
					lIPs.Append( (DblList::type)PI_NEW(PIString(szBuf )));
					szBuf[i++] = '\t';

					SendMessage( hWndHostname, 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'; };
					lHostnames.Append( (DblList::type)PI_NEW(
                        PIString( &(szBuf[j]) ) ) );
					szBuf[i++] = '\t';

					SendMessage( hWndDocumentRoot, 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'; };
					lDocumentRoots.Append( (DblList::type)PI_NEW(
                        PIString( &(szBuf[j]) ) ) );
					szBuf[i++] = '\t';

					SendMessage( hWndAdministrator, 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'; };
					lAdministrators.Append( (DblList::type)PI_NEW(
                        PIString( &(szBuf[j]) ) ) );

					/*
					** Delete the item from the list and internal lists
					*/
					SendMessage( hWndList, LB_DELETESTRING,	iCurSel, 0 );
					PI_DELETE( (PIString *)lIPs.Detach( iCurSel) );
					PI_DELETE( (PIString *)lHostnames.Detach( iCurSel) );
					PI_DELETE( (PIString *)lDocumentRoots.Detach( iCurSel) );
					PI_DELETE( (PIString *)lAdministrators.Detach( iCurSel) );
					
					/*
					** Add new item to listbox
					*/
					SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)szBuf );

					/*
					** Clear edit fields, focus to list
					*/
					SendMessage( hWndIPAddress, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndHostname, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndDocumentRoot, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndAdministrator, WM_SETTEXT, 0, (LPARAM)"" );
					Internal_reloadArrays();
					int iIndex = SendMessage( hWndList, LB_FINDSTRINGEXACT, 0,
                        (LPARAM)szBuf );
					if ( iIndex!=LB_ERR ) SendMessage( hWndList,
                        LB_SETTOPINDEX, iIndex, 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 *)lIPs.Detach( iCurSel) );
					PI_DELETE( (PIString *)lHostnames.Detach( iCurSel) );
					PI_DELETE( (PIString *)lDocumentRoots.Detach( iCurSel) );
					PI_DELETE( (PIString *)lAdministrators.Detach( iCurSel) );
			
					/*
					** Clear edit fields, focus to list
					*/
					SendMessage( hWndIPAddress, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndHostname, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndDocumentRoot, WM_SETTEXT, 0, (LPARAM)"" );
					SendMessage( hWndAdministrator, WM_SETTEXT, 0, (LPARAM)"" );
					SetFocus( hWndList );
					AD_Changed( hDlg );
					};
					break;

				case IDC_IPADDRESS:
					*szBuf = '\0';
					SendMessage( hWndIPAddress, WM_GETTEXT, BUF_SIZE,
                        (LPARAM)szBuf ); 
					Internal_updateButtons( wParam, lParam, hWndIPAddress, 
						hWndHostname, szBuf );
					break;

				case IDC_HOSTNAME:
					*szBuf = '\0';
					SendMessage( hWndIPAddress, WM_GETTEXT, BUF_SIZE,
                        (LPARAM)szBuf ); 
					Internal_updateButtons( wParam, lParam, hWndHostname, 
						hWndIPAddress, szBuf );
					break;

				case IDC_DOCUMENTROOT:
					*szBuf = '\0';
					SendMessage( hWndIPAddress, WM_GETTEXT, BUF_SIZE,
                        (LPARAM)szBuf );
					Internal_updateButtons( wParam, lParam, hWndDocumentRoot, 
						hWndHostname, szBuf );
                    break;

				case IDC_ADMIN:
					*szBuf = '\0';
					SendMessage( hWndIPAddress, WM_GETTEXT, BUF_SIZE,
                        (LPARAM)szBuf );
					Internal_updateButtons( wParam, lParam, hWndHostname, 
						hWndDocumentRoot, 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<lHostnames.Size() );
							EnableWindow( hWndDelete, TRUE );
							SendMessage( hWndIPAddress, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lIPs[iSel]) );
							SendMessage( hWndHostname, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lHostnames[iSel]) );
							SendMessage( hWndDocumentRoot, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lDocumentRoots[iSel]) );
							SendMessage( hWndAdministrator, WM_SETTEXT, 0,
								(LPARAM)(const char *)*((PIString *)lAdministrators[iSel]) );
							};
						};
					break;

				default:;		
				}
			break;
		case WM_NOTIFY:
			switch( ((NMHDR *)lParam)->code )
				{
				case PSN_QUERYCANCEL:
					return AD_cancel( hDlg );

				case PSN_KILLACTIVE:
					{
					int i;
					int iCount = SendMessage( hWndList, LB_GETCOUNT, 0, 0 );

					/*
					** Save all date
					*/
					/* --- remove old ones first --- */
					AD_deleteValue( __pConfig, SECTION, VARIABLE );
					for( i=0; i<iCount; i++ )
						{
						*szBuf = '\0';
						szBuf[BUF_SIZE] = '\0';
						SendMessage( hWndList, LB_GETTEXT, i, (LPARAM)szBuf );
						AD_addValue( __pConfig, SECTION, VARIABLE, szBuf );
						};
					SetWindowLong( hDlg, DWL_MSGRESULT, FALSE );
					break;
					}

				default:
					return (FALSE);
				};
			break;

		default:
			return (FALSE);
		};

	return (TRUE);
}

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

⌨️ 快捷键说明

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