📄 mhclient.cpp
字号:
else if( MAINGAME->GetCurStateNum() == eGAMESTATE_CHARSELECT ||
MAINGAME->GetCurStateNum() == eGAMESTATE_CHARMAKE ||
MAINGAME->GetCurStateNum() == eGAMESTATE_GAMEIN )
{
WINDOWMGR->MsgBox( MBI_EXIT, MBT_YESNO, CHATMGR->GetChatMsg( 280 ) );
return 0;
}
// return 0;
*/
break;
case WM_SETFOCUS:
{
CURSOR->Process();
}
return 0;
//KES 030826
case WM_SETCURSOR:
{
CURSOR->Process();
}
break; //DefWindowProc¢®¨¡¡Ë¢ç caption'¡Ë?¡Ë¢ç¡§u¢®¨ú default cursor¢®¢´I ¨ÏoU¨Ï¡ÀaA¡§¨£¡Ë¡ÍU.
//return TRUE;
//KES 030826
case WM_SYSKEYDOWN: //Alt + F4 ¨Ïo¨Ï¢®Ao
{
if( wParam == VK_F4 )
{
if( MAINGAME->GetCurStateNum() == eGAMESTATE_TITLE )
{
break; // ¢®¨¡OAO E¡ËcAI ¡§uE¢®¨¡i ~¢®¢´a
}
else if( MAINGAME->GetCurStateNum() == eGAMESTATE_CHARSELECT ||
MAINGAME->GetCurStateNum() == eGAMESTATE_CHARMAKE ||
MAINGAME->GetCurStateNum() == eGAMESTATE_GAMEIN )
{
WINDOWMGR->MsgBox( MBI_EXIT, MBT_YESNO, CHATMGR->GetChatMsg( 280 ) );
return 0;
}
}
}
return 0;
case WM_SYSCOMMAND:
{
if( wParam == SC_KEYMENU )
return 0;
}
break;
case WM_SYSKEYUP: //AltA¢®¨¡, F10A¢®¨¡ ¡Ë¡þ¡§¨£A¨Ï¡þ¡Ë¡ÍA¢®¨¡I ¨Ïo¨Ï¢®Ao
{
}
return 0;
case MCIWNDM_NOTIFYMODE:
switch(lParam)
{
case MCI_MODE_PLAY:
//MessageBox( hWnd, "Play", "MCI", MB_OK );
break;
case MCI_MODE_STOP:
//MessageBox( hWnd, "Stop", "MCI", MB_OK );
SERVERCONNECT->EndShowLogoAVI();
break;
}
return 0;
#ifdef _GMTOOL_
case WM_MOVE:
//xPos = (int)(short) LOWORD(lParam); // horizontal position
//yPos = (int)(short) HIWORD(lParam); // vertical position
GMTOOLMGR->SetPositionByMainWindow();
break;
#endif
case WM_CREATE:
{
#ifdef _GMTOOL_
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof( icex );
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx( &icex );
#endif
/*
#ifdef TAIWAN_LOCAL
HWND hWndIme = ImmGetDefaultIMEWnd( hWnd );
SendMessage( hWndIme, WM_IME_CONTROL, IMC_CLOSESTATUSWINDOW, 0 );
//HIMC hImc = ImmGetContext( hWnd );
//DWORD dwConversion, dwSentence;
//ImmGetConversionStatus( hImc, &dwConversion, &dwSentence );
//dwConversion |= IME_CMODE_NOCONVERSION;
//dwSentence |= IME_SMODE_SINGLECONVERT;
//ImmSetConversionStatus( hImc, dwConversion, dwSentence );
//ImmReleaseContext( hWnd, hImc );
#endif
*/
}
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
BOOL GetPatchVersion()
{
CMHFile file;
if(!file.Init("MHVerInfo.ver", "r"))
return FALSE;
strcpy(g_PATCHVERSION, file.GetString());
return TRUE;
}
/*
BOOL CheckParameter(LPSTR parameter)
{
char * token = strtok(parameter, " ");
if(token == NULL) return FALSE;
strcpy(g_DistributeAddr, token);
token = strtok(NULL, " ");
if(token == NULL) return FALSE;
g_DistributePort = atoi(token);
token = strtok(NULL, " ");
if(token == NULL) return TRUE;
GAMERESRCMNGR->m_GameDesc.dispInfo.bWindowed = atoi(token);
return TRUE;
}
*/
BOOL EnterClientApplication()
{
//taiyo
g_hMap = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, 1024, "MHOnline Client Application");
if(g_hMap != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(g_hMap);
g_hMap = NULL;
return FALSE;
}
/*
HANDLE hMutex = CreateMutex( NULL, FALSE, "MHOnline Client Application" ); <--- AI¢®¢´¡Ë¡þ¢®¨¡O CI¡Ë¡ÍA¢®¨¡IAI ¡Ë¡Ío ¢®¨¡¢®I¡Ë¡ÍUCIAo ¡§uE:¢®¨¡¡Ë¢ç? KES
if( GetLastError() == ERROR_ALREADY_EXISTS )
return FALSE;
*/
return TRUE;
}
void LeaveClientApplication()
{//taiyo
if(g_hMap)
{
CloseHandle(g_hMap);
g_hMap = NULL;
}
}
//pjslocal
#ifdef TAIWAN_LOCAL
int is_big5(BYTE *str)
{
if( str[0] & 0x80 )
{
if ( str[0] == 0xa2)
{
if( str[1]>= 0xaf && str[1]<= 0xb8 )
return 1;
else if( str[1] >= 0xcf && str[1] <= 0xff )
return 1;
}
if ( str[0] == 0xa3)
{
if( str[1]>=0x43 && str[1]<=0xff )
return 1;
}
if ( str[0] == 0xa4)
{
if( str[1] >= 0x40 && str[1] <= 0xff )
return 1;
}
if ( str[0] >= 0xa5 && str[0] <= 0xc5 )
return 1;
if ( str[0] == 0xc6 )
{
if( str[1] >= 0x00 && str[1] <= 0x7e )
return 1;
}
}
else
{
return 1;
}
return 0;
}
/*
#else
//////////////
int is_hangul(BYTE *str)
{
if( str[0] & 0x80)// 1000 0000 //b0 = 1011 0000//c8=1100 1000// a1=1010 0001 // fe=1111 1110 //
{
if (str[0] >= 0xb0 && str[0] <= 0xc8 && str[1] >= 0xa1 && str[1] <= 0xfe)
return 1;
}
else
return 1;
return 0;
}
*/
#endif
////////////////////////////////////////////////////////////////////////////////////////
// resource ¡§¢®u¡Ë¡Ío¡§uEAC ¡§¢®AAI ¢®¨¡E¢®ic(jsd)
///////////////////////////////////////////////////////////////////////////////////////
BOOL CheckResourceFile()
{
HANDLE hSrch;
WIN32_FIND_DATA wfd;
SYSTEMTIME time;
char Dir[MAX_PATH];
char filename[MAX_PATH];
BOOL bResult = TRUE;
CMHFile file;
char temp[256];
WORD year, month, day, hour, min;
GetWindowsDirectory( Dir, MAX_PATH );
strcat( Dir, "\\mfl.dat" );
GetCurrentDirectory( MAX_PATH, filename );
strcat( filename, "\\Resource\\*.bin" );
hSrch = FindFirstFile( filename, &wfd );
while( bResult )
{
FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
///
if( !file.Init( Dir, "rt", MHFILE_FLAG_DONOTDISPLAY_NOTFOUNDERROR ) )
{
file.Release();
goto filesave;
}
while( !file.IsEOF() )
{
file.GetString( temp );
if( strcmp( wfd.cFileName, temp ) == 0 )
{
year = file.GetWord();
month = file.GetWord();
day = file.GetWord();
hour = file.GetWord();
min = file.GetWord();
if( year != time.wYear || month != time.wMonth || day != time.wDay ||
hour != time.wHour || min != time.wMinute )
{
file.Release();
return FALSE;
}
else
break;
}
}
file.Release();
///
bResult = FindNextFile( hSrch, &wfd );
}
bResult = TRUE;
GetCurrentDirectory( MAX_PATH, filename );
strcat( filename, "\\Resource\\SkillArea\\*.bsad" );
hSrch = FindFirstFile( filename, &wfd );
while( bResult )
{
FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
///
if( !file.Init( Dir, "rt", MHFILE_FLAG_DONOTDISPLAY_NOTFOUNDERROR ) )
{
file.Release();
goto filesave;
}
while( !file.IsEOF() )
{
file.GetString( temp );
if( strcmp( wfd.cFileName, temp ) == 0 )
{
year = file.GetWord();
month = file.GetWord();
day = file.GetWord();
hour = file.GetWord();
min = file.GetWord();
if( year != time.wYear || month != time.wMonth || day != time.wDay ||
hour != time.wHour || min != time.wMinute )
{
file.Release();
return FALSE;
}
else
break;
}
}
file.Release();
///
bResult = FindNextFile( hSrch, &wfd );
}
return TRUE;
filesave:
SaveFileList();
return TRUE;
}
void ChangeVerInfo()
{
char temp[256];
FILE* fp = fopen( "MHVerInfo.ver", "r" );
if( fp == NULL )
return;
fscanf( fp, "%s", temp );
fclose( fp );
temp[10] = NULL;
fp = fopen( "MHVerInfo.ver", "w" );
if( fp == NULL )
return;
fprintf( fp, "%s%s", temp, "01" );
fclose( fp );
}
BOOL SaveFileList()
{
DWORD count = 1;
HANDLE hSrch;
WIN32_FIND_DATA wfd;
SYSTEMTIME time;
char Dir[MAX_PATH];
char filename[MAX_PATH];
BOOL bResult = TRUE;
GetWindowsDirectory( Dir, MAX_PATH );
strcat( Dir, "\\mfl.dat" );
FILE* fp = fopen( Dir, "w" );
if( fp == NULL )
{
fclose( fp );
return FALSE;
}
GetCurrentDirectory( MAX_PATH, filename );
strcat( filename, "\\Resource\\*.bin" );
hSrch = FindFirstFile( filename, &wfd );
while( bResult )
{
FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
fprintf( fp, "%d %s\t", count, wfd.cFileName );
fprintf( fp, "%4d %02d %02d %02d %02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute );
bResult = FindNextFile( hSrch, &wfd );
++count;
}
bResult = TRUE;
GetCurrentDirectory( MAX_PATH, filename );
strcat( filename, "\\Resource\\SkillArea\\*.bsad" );
hSrch = FindFirstFile( filename, &wfd );
while( bResult )
{
FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
fprintf( fp, "%d %s\t", count, wfd.cFileName );
fprintf( fp, "%4d %02d %02d %02d %02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute );
bResult = FindNextFile( hSrch, &wfd );
++count;
}
fclose( fp );
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -