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 + -
显示快捷键?