降低退出时崩溃的概率
This commit is contained in:
@@ -67,3 +67,7 @@
|
||||
|
||||
3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:
|
||||
并无内存泄漏,但退出时报"HEAP: Free Heap modified after it was freed"问题。
|
||||
|
||||
4、退出时睡眠一会,等待服务端清理,发现这样可以避免退出时崩溃的概率。
|
||||
|
||||
5、发布稍微稳定的版本V1.0.0.1。
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -64,6 +66,7 @@
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -56,6 +58,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -69,6 +71,7 @@
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
||||
@@ -63,6 +63,7 @@ CMy2015RemoteApp::CMy2015RemoteApp()
|
||||
|
||||
// TODO: <20>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> InitInstance <20><>
|
||||
m_Mutex = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -75,6 +76,14 @@ CMy2015RemoteApp theApp;
|
||||
|
||||
BOOL CMy2015RemoteApp::InitInstance()
|
||||
{
|
||||
m_Mutex = CreateMutex(NULL, FALSE, "YAMA.EXE");
|
||||
if (ERROR_ALREADY_EXISTS == GetLastError())
|
||||
{
|
||||
CloseHandle(m_Mutex);
|
||||
m_Mutex = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
SetUnhandledExceptionFilter(&whenbuged);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows XP <20>ϵ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>嵥ָ<E5B5A5><D6B8>Ҫ
|
||||
@@ -128,3 +137,15 @@ BOOL CMy2015RemoteApp::InitInstance()
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>á<EFBFBD>
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
int CMy2015RemoteApp::ExitInstance()
|
||||
{
|
||||
if (m_Mutex)
|
||||
{
|
||||
CloseHandle(m_Mutex);
|
||||
m_Mutex = NULL;
|
||||
}
|
||||
|
||||
return CWinApp::ExitInstance();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ class CMy2015RemoteApp : public CWinApp
|
||||
public:
|
||||
CMy2015RemoteApp();
|
||||
iniFile m_iniFile;
|
||||
HANDLE m_Mutex;
|
||||
// <20><>д
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
@@ -27,6 +28,7 @@ public:
|
||||
// ʵ<><CAB5>
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
virtual int ExitInstance();
|
||||
};
|
||||
|
||||
extern CMy2015RemoteApp theApp;
|
||||
Binary file not shown.
@@ -54,6 +54,8 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -76,10 +78,12 @@
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<StringPooling>true</StringPooling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
|
||||
@@ -129,27 +129,6 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent /*=NULL*/)
|
||||
|
||||
CMy2015RemoteDlg::~CMy2015RemoteDlg()
|
||||
{
|
||||
Sleep(200);
|
||||
EnterCriticalSection(&m_cs);
|
||||
for (std::vector<CFileManagerDlg *>::iterator iter = v_FileDlg.begin();
|
||||
iter != v_FileDlg.end(); ++iter)
|
||||
{
|
||||
CFileManagerDlg *cur = *iter;
|
||||
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||
while (false == cur->m_bIsClosed)
|
||||
Sleep(1);
|
||||
delete cur;
|
||||
}
|
||||
for (std::vector<CRegisterDlg *>::iterator iter = v_RegDlg.begin();
|
||||
iter != v_RegDlg.end(); ++iter)
|
||||
{
|
||||
CRegisterDlg *cur = *iter;
|
||||
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||
while (false == cur->m_bIsClosed)
|
||||
Sleep(1);
|
||||
delete cur;
|
||||
}
|
||||
LeaveCriticalSection(&m_cs);
|
||||
DeleteCriticalSection(&m_cs);
|
||||
}
|
||||
|
||||
@@ -262,6 +241,7 @@ VOID CMy2015RemoteDlg::CreatStatusBar()
|
||||
|
||||
VOID CMy2015RemoteDlg::CreateNotifyBar()
|
||||
{
|
||||
#if SHOW_NOTIFY
|
||||
m_Nid.cbSize = sizeof(NOTIFYICONDATA); //<2F><>С<EFBFBD><D0A1>ֵ
|
||||
m_Nid.hWnd = m_hWnd; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>CWnd<6E><64><EFBFBD><EFBFBD>
|
||||
m_Nid.uID = IDR_MAINFRAME; //icon ID
|
||||
@@ -271,6 +251,7 @@ VOID CMy2015RemoteDlg::CreateNotifyBar()
|
||||
CString strTips ="<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Զ<><D4B6>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||
lstrcpyn(m_Nid.szTip, (LPCSTR)strTips, sizeof(m_Nid.szTip) / sizeof(m_Nid.szTip[0]));
|
||||
Shell_NotifyIcon(NIM_ADD, &m_Nid); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||
#endif
|
||||
}
|
||||
|
||||
VOID CMy2015RemoteDlg::CreateToolBar()
|
||||
@@ -438,6 +419,10 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
||||
|
||||
ListenPort();
|
||||
|
||||
#if !SHOW_NOTIFY
|
||||
ShowWindow(SW_SHOW);
|
||||
#endif
|
||||
|
||||
return TRUE; // <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TRUE
|
||||
}
|
||||
|
||||
@@ -448,6 +433,12 @@ void CMy2015RemoteDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
||||
CAboutDlg dlgAbout;
|
||||
dlgAbout.DoModal();
|
||||
}
|
||||
#if !SHOW_NOTIFY
|
||||
else if(nID == SC_CLOSE || nID == SC_MINIMIZE)
|
||||
{
|
||||
ShowWindow(SW_HIDE);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
CDialogEx::OnSysCommand(nID, lParam);
|
||||
@@ -596,8 +587,34 @@ void CMy2015RemoteDlg::OnClose()
|
||||
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
||||
KillTimer(0);
|
||||
|
||||
#if SHOW_NOTIFY
|
||||
Shell_NotifyIcon(NIM_DELETE, &m_Nid);
|
||||
#endif
|
||||
|
||||
EnterCriticalSection(&m_cs);
|
||||
for (std::vector<CFileManagerDlg *>::iterator iter = v_FileDlg.begin();
|
||||
iter != v_FileDlg.end(); ++iter)
|
||||
{
|
||||
CFileManagerDlg *cur = *iter;
|
||||
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||
while (false == cur->m_bIsClosed)
|
||||
Sleep(1);
|
||||
delete cur;
|
||||
}
|
||||
for (std::vector<CRegisterDlg *>::iterator iter = v_RegDlg.begin();
|
||||
iter != v_RegDlg.end(); ++iter)
|
||||
{
|
||||
CRegisterDlg *cur = *iter;
|
||||
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||
while (false == cur->m_bIsClosed)
|
||||
Sleep(1);
|
||||
delete cur;
|
||||
}
|
||||
LeaveCriticalSection(&m_cs);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Sleep<65><70><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ⲻ<EFBFBD><E2B2BB><EFBFBD>˳<EFBFBD>ʱ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IOCP<43><50>Ҫ<EFBFBD><D2AA><EFBFBD>ظ<EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
|
||||
ShowWindow(SW_HIDE);
|
||||
Sleep(500);
|
||||
|
||||
if (m_iocpServer!=NULL)
|
||||
{
|
||||
@@ -788,13 +805,13 @@ void CMy2015RemoteDlg::OnMainExit()
|
||||
|
||||
VOID CMy2015RemoteDlg::ListenPort()
|
||||
{
|
||||
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "ListenPort");
|
||||
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "ghost");
|
||||
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "MaxConnection");
|
||||
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
|
||||
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (nPort == 0)
|
||||
nPort = 2356;
|
||||
if (nMaxConnection == 0)
|
||||
if (nPort<=0 || nPort>65535)
|
||||
nPort = 6543;
|
||||
if (nMaxConnection <= 0)
|
||||
nMaxConnection = 10000;
|
||||
Activate(nPort,nMaxConnection); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
#include "TrueColorToolBar.h"
|
||||
#include "IOCPServer.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||
#define SHOW_NOTIFY 1
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef struct _LOGIN_INFOR
|
||||
{
|
||||
BYTE bToken; // = 1 //<2F><>½<EFBFBD><C2BD>Ϣ
|
||||
@@ -63,7 +70,9 @@ public:
|
||||
|
||||
CStatusBar m_StatusBar; //״̬<D7B4><CCAC>
|
||||
CTrueColorToolBar m_ToolBar;
|
||||
#if SHOW_NOTIFY
|
||||
NOTIFYICONDATA m_Nid;
|
||||
#endif
|
||||
CRITICAL_SECTION m_cs;
|
||||
|
||||
UINT m_iCount;
|
||||
|
||||
@@ -26,11 +26,11 @@ IOCPServer::IOCPServer(void)
|
||||
m_hListenEvent = WSA_INVALID_EVENT;
|
||||
m_hListenThread = INVALID_HANDLE_VALUE;
|
||||
|
||||
m_ulMaxConnections = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "MaxConnection");
|
||||
m_ulMaxConnections = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
|
||||
|
||||
if (m_ulMaxConnections==0)
|
||||
if (m_ulMaxConnections<=0)
|
||||
{
|
||||
m_ulMaxConnections = 100;
|
||||
m_ulMaxConnections = 10000;
|
||||
}
|
||||
|
||||
InitializeCriticalSection(&m_cs);
|
||||
|
||||
@@ -44,12 +44,12 @@ BOOL CSettingDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "ListenPort");
|
||||
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "ghost");
|
||||
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "MaxConnection");
|
||||
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
|
||||
|
||||
m_nListenPort = nPort;
|
||||
m_nMax_Connect = nMaxConnection;
|
||||
m_nListenPort = (nPort<=0 || nPort>65535) ? 6543 : nPort;
|
||||
m_nMax_Connect = nMaxConnection<=0 ? 10000 : nMaxConnection;
|
||||
|
||||
UpdateData(FALSE);
|
||||
|
||||
@@ -60,9 +60,9 @@ BOOL CSettingDlg::OnInitDialog()
|
||||
void CSettingDlg::OnBnClickedButtonSettingapply()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("Settings", "ListenPort", m_nListenPort);
|
||||
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("settings", "ghost", m_nListenPort);
|
||||
//<2F><>ini<6E>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4>ֵ
|
||||
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("Settings", "MaxConnection", m_nMax_Connect);
|
||||
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("settings", "MaxConnection", m_nMax_Connect);
|
||||
|
||||
m_ApplyButton.EnableWindow(FALSE);
|
||||
m_ApplyButton.ShowWindow(SW_HIDE);
|
||||
|
||||
@@ -8,53 +8,26 @@ iniFile::iniFile(void)
|
||||
|
||||
BOOL iniFile::ContructIniFile()
|
||||
{
|
||||
char szFilePath[MAX_PATH] = {0};
|
||||
char* FindPoint = NULL;
|
||||
|
||||
char szFilePath[MAX_PATH] = {0}, *p = szFilePath;
|
||||
::GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
|
||||
while (*p) ++p;
|
||||
while ('\\' != *p) --p;
|
||||
strcpy(p+1, "settings.ini");
|
||||
|
||||
FindPoint = strrchr(szFilePath,'.');
|
||||
if (FindPoint!=NULL)
|
||||
{
|
||||
*FindPoint = '\0';
|
||||
strcat(szFilePath,".ini");
|
||||
}
|
||||
|
||||
m_IniFilePath = szFilePath; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <20>鿴 һ<><D2BB><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD> IniFileName
|
||||
|
||||
HANDLE hFile = CreateFileA(m_IniFilePath,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); //ͬ<><CDAC> <20>첽
|
||||
|
||||
if (hFile==INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ULONG ulLow = GetFileSize(hFile,NULL);
|
||||
|
||||
if (ulLow>0)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CloseHandle(hFile);
|
||||
|
||||
WritePrivateProfileString("Settings", "ListenPort","2356",m_IniFilePath);
|
||||
WritePrivateProfileString("Settings", "MaxConnection","10000",m_IniFilePath);
|
||||
m_IniFilePath = szFilePath;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int iniFile::GetInt(CString MainKey,CString SubKey) //"Setting" "ListenPort"
|
||||
int iniFile::GetInt(CString MainKey,CString SubKey)
|
||||
{
|
||||
return ::GetPrivateProfileInt(MainKey, SubKey,0,m_IniFilePath);
|
||||
}
|
||||
|
||||
BOOL iniFile::SetInt(CString MainKey,CString SubKey,int Data)//8888
|
||||
BOOL iniFile::SetInt(CString MainKey,CString SubKey,int Data)
|
||||
{
|
||||
CString strData;
|
||||
strData.Format("%d", Data); //2356
|
||||
strData.Format("%d", Data);
|
||||
return ::WritePrivateProfileString(MainKey, SubKey,strData,m_IniFilePath);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
class iniFile
|
||||
{
|
||||
public:
|
||||
BOOL iniFile::ContructIniFile();
|
||||
int iniFile::GetInt(CString MainKey,CString SubKey);
|
||||
BOOL iniFile::SetInt(CString MainKey,CString SubKey,int Data);
|
||||
BOOL ContructIniFile();
|
||||
int GetInt(CString MainKey,CString SubKey);
|
||||
BOOL SetInt(CString MainKey,CString SubKey,int Data);
|
||||
CString m_IniFilePath;
|
||||
iniFile(void);
|
||||
~iniFile(void);
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
#define VC_EXTRALEAN // <20><> Windows ͷ<><CDB7><EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
#endif
|
||||
|
||||
// <20>Ƴ<EFBFBD><C6B3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>MFC<46>ؼ<EFBFBD><D8BC><EFBFBD>֧<EFBFBD>֣<EFBFBD><D6A3><EFBFBD>С<EFBFBD><D0A1>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
|
||||
#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>й©<D0B9><C2A9><EFBFBD>谲װVLD<4C><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
|
||||
#include "vld.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user