rnaapp.c

来自「wince下的源代码集合打包」· C语言 代码 · 共 1,264 行 · 第 1/3 页

C
1,264
字号
			PositionSIP(SIP_UP);			if (!DialogBox(v_hInstance,						   MAKEINTRESOURCE((cxScreen < 480) ? IDD_USERPWD2 :										   IDD_USERPWD),						   hWnd, (DLGPROC)DlgProcCredentials)) {				// Exit.				v_RNAAppInfo.ErrorCode = ERROR_USER_DISCONNECTION;				DestroyWindow (hWnd);                PositionSIP(SIP_DOWN);				break;			}            PositionSIP(SIP_DOWN);			SendMessage( hWnd, WM_PAINT, 0, 0 );		}		SetForegroundWindow ( hWnd );        		// Begin the actual connection process		if( RetVal = RasDial( NULL, NULL, 					 &v_RasDialParams, 					 0xffffffff, 					 hWnd, 					 &v_hRasConn ) ) {			RETAILMSG (1, (TEXT("Error from RasDial %d %d\r\n"),						   RetVal, GetLastError()));						if( !v_fNoMsgBox ) {				StringID = RasErrorToStringID (RetVal, IDS_RASDIAL_ERR, TRUE);				ShowError (StringID, IDS_REM_NET);			}			if( v_hRasConn ) {				RasHangup( v_hRasConn );				v_hRasConn = 0;			}			v_RNAAppInfo.ErrorCode = RetVal;			// This makes us go away....			DestroyWindow (hWnd);		}		break;	case RNA_RASCMD :		switch (wParam) {		case RNA_ADDREF :			v_RefCount++;			DEBUGMSG (ZONE_WARN, (TEXT("AddRef %d\r\n"), v_RefCount));			break;		case RNA_DELREF :			if (v_RefCount) {				v_RefCount--;			}			DEBUGMSG (ZONE_WARN, (TEXT("DelRef %d\r\n"), v_RefCount));			if (!v_RefCount) {				SendMessage (hWnd, WM_COMMAND, IDCANCEL, 0);				DEBUGMSG (ZONE_WARN, (TEXT("Sending myself a cancel\r\n")));			}			break;		case RNA_GETINFO :			if (IsWindow((HWND)lParam)) {				DEBUGMSG (ZONE_WARN,						  (TEXT("GetInfo: Sending WM_NETCONNECT to 0x%X\r\n"),						   lParam));				SendNotifyMessage ((HWND)lParam, WM_NETCONNECT, (WPARAM)TRUE,							 (LPARAM)&v_RNAAppInfo);			} else {				DEBUGMSG (ZONE_ERROR,						  (TEXT("GetInfo: lParam 0x%X is not a window\r\n"),						   lParam));			}			break;		default :			DEBUGMSG (ZONE_WARN, (TEXT("Unknown RNA_RASCMD %d\r\n"), wParam));			break;		}		break;	case WM_TIMER :		break;		    case WM_COMMAND:        switch( LOWORD( wParam ) ) {        case IDDISMISS:			{		        if(IsAPIReady(SH_SHELL))    	   			ShowWindow(hWnd, SW_HIDE);   				else					SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);			}            break;        case IDCANCEL:        	DEBUGMSG( ZONE_MISC, (TEXT("IDCANCEL:v_hRasConn: 0x%8x\r\n"),								  v_hRasConn ));            if( v_hRasConn ) {        		DEBUGMSG( ZONE_MISC, ( TEXT( "-> rasHangup\r\n" )));                RasHangup( v_hRasConn );        		DEBUGMSG( ZONE_MISC, ( TEXT( "<- rasHangup\r\n" )));                v_hRasConn = 0;            }			v_RNAAppInfo.ErrorCode = ERROR_USER_DISCONNECTION;			sndPlaySound(TEXT("RNEnd"), SND_ALIAS|SND_ASYNC|SND_NODEFAULT);            DestroyWindow( hWnd );            break;        }        break;    case WM_RASDIALEVENT:        if( FALSE == RasDialEvent( hWnd, message, wParam, lParam ) ) {            // Fatal Error.			if (!v_RNAAppInfo.ErrorCode) {				v_RNAAppInfo.ErrorCode = ERROR_DISCONNECTION;			}            DestroyWindow( hWnd );        }        break;    case IDM_TASKBAR_NOTIFY:        if( lParam == WM_LBUTTONDBLCLK) {            DEBUGMSG( ZONE_MISC,					  (TEXT("Got IDM_TASKBAR_NOTIFY: LBUTTONDOWN\r\n")));			SetForegroundWindow(hWnd);            ShowWindow( hWnd, SW_SHOWNORMAL );        }        break;    case WM_DESTROY:        DEBUGMSG(1, (TEXT("DESTROY\n")));                tnid.cbSize = sizeof(NOTIFYICONDATA);         tnid.hWnd = hWnd;         tnid.uID = 13;                  if(IsAPIReady(SH_SHELL))        	Shell_NotifyIcon(NIM_DELETE, &tnid);         PostQuitMessage(0);        break;    default:		break;    }    return (0);}BOOLInitApplication(HINSTANCE hInstance){    return TRUE;}BOOLInitInstance(HINSTANCE hInstance, int nCmdShow){    DWORD   ScreenX = GetSystemMetrics(SM_CXSCREEN);    DWORD   ScreenY = GetSystemMetrics(SM_CYSCREEN);    v_hDirectIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_DIRECTCC));    v_hDialupIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_DIALUP));    v_hVPNIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_VPN));        v_hMainWnd = CreateDialog(hInstance,                              MAKEINTRESOURCE( GetSystemMetrics(SM_CXSCREEN) <											   480 ? IDD_DCCSTATUS2 :											   IDD_DCCSTATUS),							  NULL, WndProc);    if (v_hMainWnd) {		SetWindowLong (v_hMainWnd, DWL_USER, RNAAPP_MAGIC_NUM);		if(IsAPIReady(SH_SHELL))			ShowWindow(v_hMainWnd, SW_HIDE);		else			SetWindowPos(v_hMainWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);        UpdateWindow(v_hMainWnd);    }    return (NULL != v_hMainWnd);}BOOL FindRNAAppWindow(HWND hWnd, LPARAM lParam){    TCHAR  	szClassName[32];	GetClassName (hWnd, szClassName, sizeof(szClassName)/sizeof(TCHAR));	if (!_tcscmp (szClassName, TEXT("Dialog")) &&		(RNAAPP_MAGIC_NUM == GetWindowLong (hWnd, DWL_USER))) {		*((HWND *)lParam) = hWnd;		return FALSE;	}	return TRUE;}int WINAPI#ifdef UNDER_CEWinMain(HINSTANCE hInstance, HINSTANCE hInstPrev, LPWSTR pCmdLine,     int nCmdShow)#elseWinMain(HINSTANCE hInstance, HINSTANCE hInstPrev, LPSTR pCmdLine,     int nCmdShow)#endif{    MSG         msg;    BOOL        fParmError = FALSE;    BOOL        fHaveQuote;    DWORD       cb;    DWORD       Index;    long        lReturn;	DWORD		dwDebug;	BOOL		TapiInitialFlg = FALSE;	DEBUGREGISTER(0);    v_hInstance = hInstance;	v_hMainWnd = NULL;	memset(&v_RNAAppInfo, 0, sizeof(v_RNAAppInfo));#ifdef USE_TTCONTROLS	if (!InitCommCtrlTable()) {		DEBUGMSG (ZONE_ERROR, (TEXT("RNAAPP: No commctrl.dll\r\n")));	}	else {		INITCOMMONCONTROLSEX icce;		icce.dwSize = sizeof(INITCOMMONCONTROLSEX);		icce.dwICC  = ICC_TOOLTIP_CLASSES|ICC_CAPEDIT_CLASS;		CallCommCtrlFunc(InitCommonControlsEx)(&icce); 	}#endif	// see if the SIP is enabled	LoadSIP();    // Parse the command line.    while (*pCmdLine != TEXT('\0') && !fParmError) {        // Skip leading whitespace        while (*pCmdLine == TEXT(' ')) {            pCmdLine++;        }        if ((*pCmdLine == TEXT('-')) || (*pCmdLine == TEXT('/'))) {            pCmdLine++;            switch (*pCmdLine) {			case TEXT('n') :			case TEXT('N') :				v_fNoMsgBox = TRUE;				*pCmdLine++;				break;			case TEXT('p') :			case TEXT('P') :				v_fNoPassword = TRUE;				*pCmdLine++;				break;			case TEXT('m') :            case TEXT('M') :                v_fMinOnConnect = TRUE;                *pCmdLine++;                break;			case TEXT('c') :			case TEXT('C') :				pCmdLine++;				while ( ( (*pCmdLine >= TEXT('0') ) &&						(*pCmdLine <= TEXT('9'))) ||						((*pCmdLine >= TEXT('A')) &&						 (*pCmdLine <= TEXT('F')))) {					v_RNAAppInfo.Context <<= 4;					if ((*pCmdLine >= TEXT('0')) && (*pCmdLine <= TEXT('9'))) {						v_RNAAppInfo.Context += *pCmdLine - TEXT('0');					} else {						v_RNAAppInfo.Context += *pCmdLine - TEXT('A') + 10;					}					pCmdLine++;				}				DEBUGMSG (ZONE_WARN, (TEXT("Context=0x%X\r\n"),							  v_RNAAppInfo.Context));				break;			case TEXT('e') :            case TEXT('E') :                // Already processed?                if (EntryName[0] != TEXT('\0')) {                    DEBUGMSG (ZONE_ERROR,							  (TEXT("EntryName already specified ('%s')\r\n"),							   pCmdLine));                    fParmError = TRUE;                    break;                }                *pCmdLine++;                if (*pCmdLine == TEXT('\"')) {                    *pCmdLine++;                    fHaveQuote = TRUE;                } else {                    fHaveQuote = FALSE;                }                           // Copy until the next space.                for (Index = 0; pCmdLine[Index] != TEXT('\0'); Index++) {                    if (fHaveQuote && (pCmdLine[Index] == TEXT('\"'))) {                        pCmdLine++;                        break;                    }                    if (!fHaveQuote && (pCmdLine[Index] == TEXT(' '))) {                        break;                    }					if (Index < RAS_MaxEntryName) {						EntryName[Index] = pCmdLine[Index];					}                }                // Skip past any processed characters.                pCmdLine += (Index);                EntryName[Index] = TEXT('\0');                break;            default :                // Invalid parameter.                DEBUGMSG (ZONE_ERROR, (TEXT("Invalid option %s\r\n"),									   pCmdLine));                fParmError = TRUE;                break;            }        } else {			DEBUGMSG (ZONE_ERROR, (TEXT("Invalid parameter '%s'\r\n"),								   pCmdLine));			fParmError = TRUE;		}    }    if (fParmError || (EntryName[0] == TEXT('\0'))) {        DEBUGMSG (ZONE_ERROR, (TEXT("Parameter Error\r\n")));		v_RNAAppInfo.ErrorCode = ERROR_INVALID_PARAMETER;		ShowError (IDS_INVALID_PARAMETER, IDS_REM_NET);        goto ExitApp;    }    // This will create the default entries if the key does not exist.    RasEnumEntries (NULL, NULL, NULL, &cb, NULL);    v_RasEntry.dwSize = sizeof(RASENTRY);    cb = sizeof(RASENTRY);    if (RasGetEntryProperties (NULL, EntryName, &(v_RasEntry),                               &cb, NULL, NULL)) {        DEBUGMSG (ZONE_ERROR, (TEXT("Invalid Ras Entry '%s'\r\n"), EntryName));		v_RNAAppInfo.ErrorCode = ERROR_CANNOT_FIND_PHONEBOOK_ENTRY;		ShowError (IDS_INVALID_PARAMETER, IDS_REM_NET);        goto ExitApp;    }	// Initialize the application    DEBUGMSG( ZONE_ERROR, ( TEXT(" About to InitApplication\r\n" )));    if( InitApplication( hInstance ) == FALSE ) {		v_RNAAppInfo.ErrorCode = ERROR_EVENT_INVALID;		ShowError (IDS_INVALID_PARAMETER, IDS_REM_NET);        goto ExitApp;    }    DEBUGMSG (ZONE_ERROR, (TEXT( "About to InitInstance\r\n" )));    if( InitInstance( hInstance, nCmdShow ) == FALSE ) {		v_RNAAppInfo.ErrorCode = ERROR_INVALID_PARAMETER;        goto ExitApp;    }    PostMessage( v_hMainWnd, IDM_START_RASDIAL, 0, 0 );   //   // Initialize TAPI   //	dwDebug = 0;#ifdef DEBUG	dwDebug |= (ZONE_ERROR) ? TAPI_ZONE_ERROR : 0;	dwDebug |= (ZONE_WARN) ? TAPI_ZONE_WARN : 0;	dwDebug |= (ZONE_FUNCTION) ? TAPI_ZONE_FUNCTION : 0;	dwDebug |= (ZONE_ALLOC) ? TAPI_ZONE_ALLOC : 0;	dwDebug |= (ZONE_TAPI) ? TAPI_ZONE_INFO : 0;#endif	lReturn = TapiInitialize(hInstance, lineCallbackFunc, 							 szAppName,dwDebug);	TapiInitialFlg = TRUE;   	v_dwDeviceID = TapiFindDeviceID(v_RasEntry.szDeviceName,									RAS_MaxDeviceName);	DEBUGMSG(ZONE_TAPI, (TEXT("The device id is %d\n"), v_dwDeviceID));       DEBUGMSG( ZONE_MISC, ( TEXT( "About to enter GetMessage Loop\r\n" )));    while( GetMessage( &msg, NULL, 0, 0) != FALSE ) {        if (v_hMainWnd == 0 || !IsDialogMessage(v_hMainWnd, &msg)) {            TranslateMessage( &msg );            DispatchMessage( &msg );        }    }ExitApp:	if (v_hLineApp && TapiInitialFlg) {		lineShutdown (v_hLineApp);	}    RETAILMSG( 1, (TEXT("Posting WM_NETCONNECT(FALSE) message, ErrorCode = %d(0x%X)\r\n" ),				   v_RNAAppInfo.ErrorCode, v_RNAAppInfo.ErrorCode));	v_RNAAppInfo.dwSize = sizeof(v_RNAAppInfo);	v_RNAAppInfo.hWndRNAApp = (DWORD)NULL;	_tcscpy (v_RNAAppInfo.RasEntryName, EntryName);    SendNotifyMessage( HWND_BROADCAST, WM_NETCONNECT, (WPARAM)FALSE,				 		(LPARAM)&v_RNAAppInfo );    DEBUGMSG( ZONE_MISC, (TEXT( "Exiting WinMain\r\n" )));    return( msg.wParam );}

⌨️ 快捷键说明

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