www.pudn.com > MirGui.rar > MirGui.cpp
// MirGui.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" #include "mirgroup.h" #include#include #include "mirgame.h" #include "mirminimap.h" #include "mirgamemap.h" #define MAX_LOADSTRING 100 #define MAX_LOGLINES 100 #define MINIMAP_WIDTH 120 #define MINIMAP_HEIGHT 120 #define MINIMAP_DISPLAYX 636 #define MINIMAP_DISPLAYY 17 // Global Variables: HINSTANCE hInst; // current instance HWND g_hSysLog = NULL; HWND g_hChatLog = NULL; HWND g_hMainDlg = NULL; CMirGame mirgame; CMirMiniMap * pMiniMap; CMirGameMap * pGameMap; int minimap_x = 325; int minimap_y = 267; LRESULT CALLBACK MirGuiDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); VOID CALLBACK TimerProc2( HWND hwnd, // handle of window for timer messages UINT uMsg, // WM_TIMER message UINT idEvent, // timer identifier DWORD dwTime // current system time ) { int dirbits=0; char tmpStr[200]; int bs = 0; if( GetKeyState( VK_UP ) & 0x80 ) { minimap_y --; dirbits |= 1; //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y ); } if( GetKeyState( VK_RETURN ) & 0x80 && GetKeyState( VK_CONTROL ) & 0x80 ) { if( GetFocus() == GetDlgItem( g_hMainDlg, ED_CHAT )) { GetDlgItemText( g_hMainDlg, ED_CHAT, tmpStr, 200 ); SetDlgItemText( g_hMainDlg, ED_CHAT, "" ); bs = strlen( tmpStr ); if( bs > 0 ) { if( tmpStr[bs-2]== 0x0d && tmpStr[bs-1] == 0x0a ) tmpStr[bs-2] = '\0'; mirgame.Say( tmpStr ); } } } if( GetKeyState( VK_DOWN ) & 0x80 ) { dirbits |= 4; minimap_y ++; //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y ); } if( GetKeyState( VK_LEFT ) & 0x80 ) { dirbits |= 8; minimap_x --; //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y ); } if( GetKeyState( VK_RIGHT ) & 0x80 ) { dirbits |= 2; minimap_x ++; //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y ); } switch( dirbits ) { case 1: dirbits = 0; break; case 2: dirbits = 2; break; case 4: dirbits = 4; break; case 8: dirbits = 6; break; case 3: dirbits = 1; break; case 6: dirbits = 3; break; case 12: dirbits = 5; break; case 9: dirbits = 7; break; default: dirbits = 9; } //mirgame.Run( dirbits ); } VOID CALLBACK TimerProc( HWND hwnd, // handle of window for timer messages UINT uMsg, // WM_TIMER message UINT idEvent, // timer identifier DWORD dwTime // current system time ) { HDC hdc; hdc = GetDC( g_hMainDlg ); pMiniMap->Draw( hdc, 635, 15, 120, 120 ); pGameMap->Draw( hdc, 420, 20 ); ReleaseDC( g_hMainDlg, hdc ); return ; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // minimap.InitMiniMap( "d:/mmap.wix", "d:/mmap.wil" ); // minimap.SetMMap( 160 ); SetTimer( 0, 0, 10, TimerProc ); SetTimer( 0, 0, 10, TimerProc2 ); pGameMap = mirgame.GetGameMap(); pMiniMap = mirgame.GetMiniMap(); DialogBox(hInst, (LPCTSTR)IDD_MIRGUIDLG,GetDesktopWindow(), (DLGPROC)MirGuiDlgProc); return 0; } DWORD ThreadProc( PVOID * p ) { return mirgame.EnterGame( 1 ); } LRESULT CALLBACK MirGuiDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { DWORD idcmd; static int AreaId = 0; static int ServerId = 0; static int xofs = 0,yofs = 0; static BOOL bMouseDown = FALSE; static POINT pt; static RECT rcWindow; char tmpStr[200]; char servername[64]; char serverip[64]; char Account[64]; char Password[64]; DWORD pid; switch (message) { case WM_INITDIALOG: //SetWindowRgn( hDlg, h, FALSE ); g_hMainDlg = hDlg; g_hSysLog = GetDlgItem( hDlg, LB_SYSLOG ); g_hChatLog = GetDlgItem( hDlg, LB_CHATLOG ); mirgame.InitLogSystem( g_hSysLog, g_hChatLog, MAX_LOGLINES ); SetGroupFile( "group.dat" ); SetAreaList( GetDlgItem( hDlg, CB_AREA )); SetServerCaptionList( GetDlgItem( hDlg, CB_SERVER ), 0 ); //SetWindowLong( hDlg, GWL_ID, 0 ); GetWindowRect( hDlg, &rcWindow ); mirgame.LogChat( "%d, %d - %d, %d", rcWindow.left, rcWindow.top, rcWindow.right ,rcWindow.bottom ); return TRUE; case WM_PAINT: break; case WM_LBUTTONDOWN: break; case WM_LBUTTONUP: break; case WM_MOUSEMOVE: break; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: idcmd = LOWORD( wParam ); switch( idcmd ) { case CB_SERVER: ServerId = ComboBox_GetCurSel(GetDlgItem( hDlg, CB_SERVER)); break; case CB_AREA: AreaId = ComboBox_GetCurSel(GetDlgItem( hDlg, CB_AREA)); SetServerCaptionList( GetDlgItem( hDlg, CB_SERVER ), AreaId ); ServerId = ComboBox_GetCurSel(GetDlgItem( hDlg, CB_SERVER)); break; case BT_CONNECT: GetServerName( AreaId, ServerId, servername ); GetIpAddress( AreaId, serverip ); sprintf( tmpStr, "%s:%s", servername, serverip ); if( !mirgame.OpenGateServer( serverip ) ) break; GetDlgItemText( hDlg, ED_ACCOUNT, Account, 64 ); GetDlgItemText( hDlg, ED_PASSWORD, Password, 64 ); //if( strlen( Account ) > 0 && strlen( Password ) > 4 ) { if( mirgame.Login( Account, Password ) ) { //mirgame.LogSystem( servername ); if( mirgame.EnterServer( servername )) { if( mirgame.EnterSelCharServer() ) { CreateThread( NULL, 1024 * 1024 * 1, (LPTHREAD_START_ROUTINE)ThreadProc, 0, 0, &pid ); //mirgame.EnterGame( 0 ); } } } } //MessageBox( 0, tmpStr, 0, 0 ); //LogToList( GetDlgItem( hDlg, LB_SYSLOG ), tmpStr ); // LogSystem( tmpStr ); //ComboBox_GetCurSel( GetDlgItem(hDlg, CB_SERVER )) break; case BT_DISCONNECT: mirgame.Logout(); break; case BT_SEND: GetDlgItemText( hDlg, ED_CHAT, tmpStr, 200 ); if( strlen( tmpStr ) > 0 ) mirgame.Say( tmpStr ); break; } break; } return FALSE; } LRESULT CALLBACK MirGuiDlgProc2(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { // DWORD idcmd; switch (message) { case WM_INITDIALOG: return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: break; } return FALSE; }