// newclient.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "newclient.h" #include "newclientDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CNewclientApp BEGIN_MESSAGE_MAP(CNewclientApp, CWinApp) //{{AFX_MSG_MAP(CNewclientApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CNewclientApp construction CNewclientApp::CNewclientApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CNewclientApp object CNewclientApp theApp; ///////////////////////////////////////////////////////////////////////////// // CNewclientApp initialization BOOL CNewclientApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif NET_DVR_Init(); int isupport = NET_DVR_IsSupport(); if (!(isupport & NET_DVR_SUPPORT_DDRAW)) { AfxMessageBox("显卡无法支持"); return FALSE; } if (!(isupport & NET_DVR_SUPPORT_SSE)) { AfxMessageBox("硬件无法支持,需要PIII及PIII以上CPU"); return FALSE; } if (!(isupport & NET_DVR_SUPPORT_BLT)) { AfxMessageBox("显卡无法支持"); return FALSE; } if(!F_GetSystemInfo()) { AfxMessageBox("获取系统信息错误!"); } CNewclientDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } BOOL CNewclientApp::F_GetSystemInfo() { DWORD dw=GetLogicalDriveStrings(0,NULL); LPTSTR pAllDrivers=new char[dw]; ::GetLogicalDriveStrings(dw,pAllDrivers); LPTSTR pDriver=pAllDrivers; char tempDriver[26]; DWORD DriverNum=0; while(pDriver[0]!=0) { tempDriver[DriverNum++]=*pDriver; pDriver=_tcschr(pDriver,0)+1; //定位到下一个盘符 } //volume information TCHAR lpVolumeNameBuffer[200]; DWORD dwVolumeSerialNumber,dwMaxComLength; DWORD dwFileSystemFlags; TCHAR lpFileSystemNameBuffer[50]; DWORD HardNum=0; for(DWORD num=0;numm_cHardDriver[HardNum++]=tempDriver[num]; } } } m_iDriverNum=HardNum; delete[] pAllDrivers; return TRUE; } int CNewclientApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class NET_DVR_Cleanup(); return CWinApp::ExitInstance(); }