
// qqgame_wsclient.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "qqgame_wsclient.h"
#include "qqgame_wsclientDlg.h"

#include "common/cmdline.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// Cqqgame_wsclientApp

BEGIN_MESSAGE_MAP(Cqqgame_wsclientApp, CWinApp)
	ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()


// Cqqgame_wsclientApp construction

Cqqgame_wsclientApp::Cqqgame_wsclientApp()
{
	// support Restart Manager
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}


// The one and only Cqqgame_wsclientApp object

Cqqgame_wsclientApp theApp;


/*
程序启动时，请先判断命令行是否符合接入文档中要求的格式，对应数据是否有效，如果不是，请直接退出游戏进程
下面代码只供参考功能，请根据自己程序框架实现功能
*/

BOOL Cqqgame_wsclientApp::InitInstance()
{
	std::wstring cmd = GetCommandLine();
	cmdline_parser cmd_parser(cmd);

	//第一步：解析命令行，解析出openid，openkey，pfkey, port
	std::wstring id = cmd_parser.get_arg(L"id");
	std::wstring key = cmd_parser.get_arg(L"key");
	std::wstring pfkey = cmd_parser.get_arg(L"pfkey");
	std::wstring port = cmd_parser.get_arg(L"port");

	if (id.empty() || key.empty() || key.empty() || port.empty())
	{
		::MessageBox(NULL, L"命令行格式和数据不符合要求（参见文档说明），请将程序终止!！", L"【请开发者关注】", MB_OK);
		return FALSE;
	}

	// InitCommonControlsEx() is required on Windows XP if an application
	// manifest specifies use of ComCtl32.dll version 6 or later to enable
	// visual styles.  Otherwise, any window creation will fail.
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	// Set this to include all the common control classes you want to use
	// in your application.
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);

	CWinApp::InitInstance();


	AfxEnableControlContainer();

	// Create the shell manager, in case the dialog contains
	// any shell tree view or shell list view controls.
	CShellManager *pShellManager = new CShellManager;

	// Activate "Windows Native" visual manager for enabling themes in MFC controls
	CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

	// 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
	// Change the registry key under which our settings are stored
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));

	Cqqgame_wsclientDlg dlg(NULL, id, key, pfkey, port);
	m_pMainWnd = &dlg;
	INT_PTR 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
	}
	else if (nResponse == -1)
	{
		TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n");
		TRACE(traceAppMsg, 0, "Warning: if you are using MFC controls on the dialog, you cannot #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS.\n");
	}

	// Delete the shell manager created above.
	if (pShellManager != NULL)
	{
		delete pShellManager;
	}

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}

