Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
RASBERRY.C
Package: MSDN_VC98.zip [view]
Upload User: bangxh
Upload Date: 2007-01-31
Package Size: 42235k
Code Size: 15k
Category:
Windows Develop
Development Platform:
Visual C++
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
- // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- // PARTICULAR PURPOSE.
- //
- // Copyright (C) 1993-1997 Microsoft Corporation. All Rights Reserved.
- //
- // MODULE: rasberry.c
- //
- // PURPOSE: Implement the windows procedure for the main application
- // windows.
- //
- // FUNCTIONS:
- // WndProc - Processes messages for the main window.
- // MsgCreate - Handle the WM_CREATE messages for the main window.
- // MsgSize - Handle the WM_SIZE messages for the main window.
- // MsgCommand - Handle the WM_COMMAND messages for the main window.
- // MsgDestroy - Handles the WM_DESTROY message by calling
- // PostQuitMessage().
- // CmdPhbkDlg - Displays entries in default phonebook.
- // CmdStatDlg - Displays status of the selected connection.
- // CmdRefresh - Refreshes list of connections in listbox.
- // CmdHangup - Hangs up the selected connection.
- // CmdConnNotify- Handles notification messages for connection listbox.
- // CmdExit - Handles the file exit command by calling destory
- // window on the main window.
- //
- // COMMENTS:
- //
- //
- #include <windows.h> // required for all Windows applications
- #include <windowsx.h>
- #ifdef WIN16
- #include "win16ext.h" // required only for win16 applications
- #endif
- #include "globals.h" // prototypes specific to this application
- #include <stdlib.h>
- #include <malloc.h>
- #include <ras.h>
- #include <raserror.h>
- #include "rasutil.h"
- #include "phbkdlg.h"
- #include "statdlg.h"
- // Main window message table definition.
- MSD rgmsd[] =
- {
- {WM_CREATE, MsgCreate},
- {WM_SIZE, MsgSize},
- {WM_COMMAND, MsgCommand},
- {WM_DESTROY, MsgDestroy}
- };
- MSDI msdiMain =
- {
- sizeof(rgmsd) / sizeof(MSD),
- rgmsd,
- edwpWindow
- };
- // Main window command table definition.
- CMD rgcmd[] =
- {
- {IDM_PHONEBOOK, CmdPhbkDlg},
- {IDM_STATUS, CmdStatDlg},
- {IDM_EXIT, CmdExit},
- {IDM_REFRESH, CmdRefresh},
- {IDM_HANGUP, CmdHangUp},
- {IDM_ABOUT, CmdAbout},
- {IDL_CONN, CmdConnNotify}
- };
- CMDI cmdiMain =
- {
- sizeof(rgcmd) / sizeof(CMD),
- rgcmd,
- edwpWindow
- };
- // Application "globals"
- char g_szUserName[UNLEN+1];
- char g_szPassword[PWLEN+1];
- char g_szDomain[DNLEN+1];
- LPHRASCONN g_lphRasConn = NULL;
- // Module specific "globals" Used when a variable needs to be
- // accessed in more than on handler function.
- HWND hwndConn; // handle of listbox of connections
- //
- // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
- //
- // PURPOSE: Processes messages for the main window.
- //
- // PARAMETERS:
- // hwnd - window handle
- // uMessage - message number
- // wparam - additional information (dependant on message number)
- // lparam - additional information (dependant on message number)
- //
- // RETURN VALUE:
- // The return value depends on the message number. If the message
- // is implemented in the message dispatch table, the return value is
- // the value returned by the message handling function. Otherwise,
- // the return value is the value returned by the default window procedure.
- //
- // COMMENTS:
- // Call the DispMessage() function with the main window's message dispatch
- // information (msdiMain) and the message specific information.
- //
- LRESULT CALLBACK WndProc(HWND hwnd,
- UINT uMessage,
- WPARAM wparam,
- LPARAM lparam)
- {
- return DispMessage(&msdiMain, hwnd, uMessage, wparam, lparam);
- }
- //
- // FUNCTION: MsgCreate(HWND, UINT, WPARAM, LPARAM)
- //
- // PURPOSE: Initialized main window
- //
- // PARAMETERS:
- //
- // hwnd - Window handle
- // uMessage - Message number (Unused)
- // wparam - Extra data (Unused)
- // lparam - Extra data (Unused)
- //
- // RETURN VALUE:
- //
- // Always returns 0 - Message handled
- //
- // COMMENTS:
- // Creates a listbox the size of the window and fills it
- // with a list of RAS connections.
- //
- LRESULT MsgCreate(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
- {
- RECT rc;
- GetClientRect( hwnd, &rc );
- hwndConn = CreateWindow( "LISTBOX",
- "Connections",
- WS_CHILD | WS_VISIBLE | WS_HSCROLL |
- WS_VSCROLL | LBS_USETABSTOPS | LBS_NOINTEGRALHEIGHT | LBS_SORT,
- 0,
- 0,
- rc.right,
- rc.bottom,
- hwnd,
- (HMENU) IDL_CONN,
- hInst,
- NULL );
- SendMessage( hwnd, WM_COMMAND, IDM_REFRESH, 0L );
- // initialize global variables
- g_szUserName[0] = '';
- g_szPassword[0] = '';
- g_szDomain[0] = '*';
- g_szDomain[1] = '';
- return 0;
- }
- //
- // FUNCTION: MsgSize(HWND, UINT, WPARAM, LPARAM)
- //
- // PURPOSE: Resize listbox to client area size
- //
- // PARAMETERS:
- //
- // hwnd - Window handle
- // uMessage - Message number (Unused)
- // wparam - Extra data (Unused)
- // lparam - Extra data (Unused)
- //
- // RETURN VALUE:
- //
- // Always returns 0 - Message handled
- //
- // COMMENTS:
- //
- //
- LRESULT MsgSize(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
- {
- MoveWindow(hwndConn, 0, 0, LOWORD(lparam), HIWORD(lparam), TRUE);
- return 0;
- }
- //
- // FUNCTION: MsgCommand(HWND, UINT, WPARAM, LPARAM)
- //
- // PURPOSE: Handle the WM_COMMAND messages for the main window.
- //
- // PARAMETERS:
- // hwnd - window handle
- // uMessage - WM_COMMAND (Unused)
- // GET_WM_COMMAND_ID(wparam, lparam) - Command identifier
- // GET_WM_COMMAND_HWND(wparam, lparam) - Control handle
- //
- // RETURN VALUE:
- // The return value depends on the message number. If the message
- // is implemented in the message dispatch table, the return value is
- // the value returned by the message handling function. Otherwise,
- // the return value is the value returned by the default window procedure.
- //
- // COMMENTS:
- // Call the DispCommand() function with the main window's command dispatch
- // information (cmdiMain) and the command specific information.
- //
- LRESULT MsgCommand(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
- {
- return DispCommand(&cmdiMain, hwnd, wparam, lparam);
- }
- //
- // FUNCTION: MsgDestroy(HWND, UINT, WPARAM, LPARAM)
- //
- // PURPOSE: Calls PostQuitMessage().
- //
- // PARAMETERS:
- //
- // hwnd - Window handle (Unused)
- // uMessage - Message number (Unused)
- // wparam - Extra data (Unused)
- // lparam - Extra data (Unused)
- //
- // RETURN VALUE:
- //
- // Always returns 0 - Message handled
- //
- // COMMENTS:
- //
- //
- LRESULT MsgDestroy(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
- {
- if ( g_lphRasConn != NULL )
- {
- _ffree((LPVOID) g_lphRasConn );
- g_lphRasConn = NULL;
- }
- PostQuitMessage(0);
- #ifdef WIN32
- Sleep(3000); // let RAS state machine clean up
- #endif
- return 0;
- }
- //
- // FUNCTION: CmdPhbkDlg(HWND, WORD, WORD, HWND)
- //
- // PURPOSE: Displays the "PhbkDlg" dialog box
- //
- // PARAMETERS:
- // hwnd - Window handle
- // wCommand - IDM_ENTRY (unused)
- // wNotify - Notification number (unused)
- // hwndCtrl - NULL (unused)
- //
- // RETURN VALUE:
- //
- // Always returns 0 - Message handled
- //
- // COMMENTS:
- // To process the IDM_ENTRY message, call DialogBox() to display the
- // phbkdlg dialog box.
- LRESULT CmdPhbkDlg(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
- {
- DialogBox(hInst, "PhbkDlgBox", hwnd, (DLGPROC)PhbkDlg);
- SendMessage( hwnd, WM_COMMAND, IDM_REFRESH, 0L );
- return 0;
- }
- //
- // FUNCTION: CmdStatDlg(HWND, WORD, WORD, HWND)
- //
- // PURPOSE: Displays the "StatDlg" dialog box
- //
- // PARAMETERS:
- // hwnd - Window handle
- // wCommand - IDM_STATDLG (unused)
- // wNotify - Notification number (unused)
- // hwndCtrl - NULL (unused)
- //
- // RETURN VALUE:
- //
- // Always returns 0 - Message handled
- //
- // COMMENTS:
- // To process the IDM_STATDLG message, call DialogBox() to display the
- // statdlg dialog box.
- LRESULT CmdStatDlg(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
- {
- DialogBox(hInst, "StatDlgBox", hwnd, (DLGPROC)StatDlg);
- SendMessage( hwnd, WM_COMMAND, IDM_REFRESH, 0L );
- return 0;
- }
- //
- // FUNCTION: CmdRefesh(HWND, WORD, WORD, HWND)
- //
- // PURPOSE: Refreshes the connection list
- //
- // PARAMETERS:
- // hwnd - The window.
- // wCommand - IDM_REFRESH (unused)
- // wNotify - Notification number (unused)
- // hwndCtrl - NULL (unused)
- //
- // RETURN VALUE:
- // Always returns 0 - command handled.
- //
- // COMMENTS:
- // Calls RasEnumConnections to get a list of current connections
- //
- LRESULT CmdRefresh(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
- {
- LPRASCONN lpRasConn = NULL;
- LPRASCONN lpTemp = NULL;
- LPHRASCONN lphTemp = NULL;
- DWORD cbBuf = 0;
- DWORD cConn = 0;
- DWORD dwRet = 0;
- UINT ndx;
- char szMessage[256];
- HMENU hmenu = GetMenu( hwnd );
- // remove any connections currently in listbox
- SendMessage( hwndConn, LB_RESETCONTENT, 0, 0L );
- if ( g_lphRasConn != NULL )
- {
- _ffree( (LPVOID) g_lphRasConn );
- g_lphRasConn = NULL;
- }
- // enumerate connections
- cbBuf = sizeof(RASCONN);
- if ( ((lpRasConn = ( LPRASCONN ) _fmalloc((UINT)cbBuf)) != NULL ) &&
- ((g_lphRasConn = ( LPHRASCONN ) _fmalloc(sizeof(HRASCONN))) != NULL ) )
- {
- lpRasConn->dwSize = sizeof( RASCONN );
- dwRet = RasEnumConnections( lpRasConn, &cbBuf, &cConn );
- if ( dwRet == ERROR_BUFFER_TOO_SMALL )
- {
- if ( (lpTemp = ( LPRASCONN ) _frealloc(lpRasConn, (UINT)cbBuf) ) != NULL )
- {
- lpRasConn = lpTemp;
- dwRet = RasEnumConnections( lpRasConn, &cbBuf, &cConn );
- if ( NULL != (lphTemp = ( LPHRASCONN )
- _frealloc((LPVOID)g_lphRasConn, (UINT)(sizeof(HRASCONN)*cConn))) )
- g_lphRasConn = lphTemp;
- else
- dwRet = ERROR_NOT_ENOUGH_MEMORY;
- }
- else
- {
- dwRet = ERROR_NOT_ENOUGH_MEMORY;
- }
- }
- else if ( dwRet != 0 ) // other error
- {
- if ( RasGetErrorString( (UINT)dwRet, szMessage, 256 ) != 0 )
- wsprintf( (LPSTR)szMessage, (LPSTR)"Undefined RAS Dial Error." );
- MessageBox(hwnd, szMessage, szAppName, MB_OK | MB_ICONSTOP );
- }
- if ( dwRet == 0 ) // No errors, so populate listbox
- {
- for ( ndx = 0; ndx < cConn; ndx++ )
- {
- g_lphRasConn[ndx] = lpRasConn[ndx].hrasconn;
- SendMessage( hwndConn,
- LB_ADDSTRING,
- 0,
- (LPARAM)(LPCSTR) lpRasConn[ndx].szEntryName);
- }
- // update states of menu items
- if ( ndx > 0 ) // at least one item was added
- {
- SendMessage( hwndConn, LB_SETCURSEL, 0, 1L );
- EnableMenuItem( hmenu, IDM_STATUS, MF_ENABLED );
- EnableMenuItem( hmenu, IDM_HANGUP, MF_ENABLED );
- }
- else
- {
- EnableMenuItem( hmenu, IDM_STATUS, MF_GRAYED );
- EnableMenuItem( hmenu, IDM_HANGUP, MF_GRAYED );
- }
- }
- else
- {
- EnableMenuItem( hmenu, IDM_STATUS, MF_GRAYED );
- EnableMenuItem( hmenu, IDM_HANGUP, MF_GRAYED );
- }
- _ffree( lpRasConn );
- }
- else
- {
- if ( g_lphRasConn != NULL )
- {
- _ffree((LPVOID) g_lphRasConn );
- g_lphRasConn = NULL;
- }
- if ( lpRasConn != NULL )
- {
- _ffree( lpRasConn );
- }
- }
- return 0;
- }
- //
- // FUNCTION: CmdHangUp(HWND, WORD, WORD, HWND)
- //
- // PURPOSE: Hangs up the selected connection
- //
- // PARAMETERS:
- // hwnd - The window.
- // wCommand - IDM_HANGUP (unused)
- // wNotify - Notification number (unused)
- // hwndCtrl - NULL (unused)
- //
- // RETURN VALUE:
- // Always returns 0 - command handled.
- //
- // COMMENTS:
- //
- //
- LRESULT CmdHangUp(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
- {
- CHAR szBuf[256];
- CHAR szBuf2[256];
- UINT ndx;
- // get the connection text from previous window
- ndx = (UINT) SendMessage( hwndConn, LB_GETCURSEL, 0, 0L );
- SendMessage( hwndConn, LB_GETTEXT, ndx, (LPARAM)(LPSTR)szBuf );
- wsprintf( (LPSTR) szBuf2, "HangUp %s?", (LPSTR) szBuf );
- if ( IDYES == MessageBox( hwnd, (LPSTR)szBuf2, szAppName, MB_ICONQUESTION | MB_YESNO ) )
- {
- RasHangUp( g_lphRasConn[ndx] );
- SendMessage( hwnd, WM_COMMAND, IDM_REFRESH, 0L );
- }
- return 0;
- }
- //
- // FUNCTION: CmdConnNotify(HWND, WORD, WORD, HWND)
- //
- // PURPOSE: notfication from Connection Listbox
- //
- // PARAMETERS:
- // hwnd - The window handling the command.
- // wCommand - The command to be handled (unused).
- // wNotify - The notification code to be handled (LBN_DBLCLK).
- // hwndCtrl - NULL (unused).
- //
- // RETURN VALUE:
- // 0 if message is processed.
- //
- // COMMENTS:
- // Catches DBL_CLK to cause connection status dialog to appear
- //
- LRESULT CmdConnNotify(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
- {
- if ( wNotify == LBN_DBLCLK )
- {
- SendMessage( hwnd, WM_COMMAND, IDM_STATUS, 0 );
- return 0;
- }
- return 1;
- }
- //
- // FUNCTION: CmdExit(HWND, WORD, WORD, HWND)
- //
- // PURPOSE: Exit the application.
- //
- // PARAMETERS:
- // hwnd - The window.
- // wCommand - IDM_EXIT
- // wNotify - Notification number (unused)
- // hwndCtrl - NULL (unused)
- //
- // RETURN VALUE:
- // Always returns 0 - command handled.
- //
- // COMMENTS:
- //
- //
- LRESULT CmdExit(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
- {
- DestroyWindow(hwnd);
- return 0;
- }