Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
175 lines
3.8 KiB
C++
175 lines
3.8 KiB
C++
// MSGDialog.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "MSGDialog.h"
|
|
|
|
#include "InitValue.h"
|
|
#include "../LoginRes/Resource.h"
|
|
|
|
#include "memdc.h"
|
|
#include <mmsystem.h>
|
|
#pragma comment(lib, "winmm")
|
|
|
|
// CMSGDialog 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CMSGDialog, CDialog)
|
|
CMSGDialog::CMSGDialog(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CMSGDialog::IDD, pParent)
|
|
{
|
|
}
|
|
|
|
CMSGDialog::~CMSGDialog()
|
|
{
|
|
}
|
|
|
|
void CMSGDialog::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDOK, m_Ok);
|
|
DDX_Control(pDX, IDCANCEL, m_Cancel);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CMSGDialog, CDialog)
|
|
ON_WM_PAINT()
|
|
ON_WM_LBUTTONDOWN()
|
|
ON_WM_MOUSEMOVE()
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CMSGDialog 메시지 처리기입니다.
|
|
BOOL CMSGDialog::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
InitClientFoloder();
|
|
|
|
InitWebBrowser();
|
|
|
|
SetWindowPos( NULL, 0,0, 600, 500, SWP_NOMOVE | SWP_NOZORDER );
|
|
SetWindowText( "R.O.W Online" );
|
|
|
|
m_Ok.SetWindowPos(NULL, 182, 442, m_Ok.GetSizeX(), m_Ok.GetSizeY() , SWP_NOZORDER);
|
|
m_Cancel.SetWindowPos(NULL, 319, 442, m_Cancel.GetSizeX(), m_Cancel.GetSizeY(), SWP_NOZORDER) ;
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
}
|
|
|
|
void CMSGDialog::InitClientFoloder(void)
|
|
{
|
|
HKEY hMPClientReg = 0;
|
|
|
|
char strPath[MAX_PATH]="";
|
|
|
|
if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, STR_CLIENT_REGISTRY_SUBKEY,
|
|
0, KEY_READ, &hMPClientReg) == ERROR_SUCCESS)
|
|
{
|
|
DWORD dwReadType = 0;
|
|
DWORD dwReadLens = MAX_PATH;
|
|
|
|
if (RegQueryValueEx(hMPClientReg, STR_CLIENT_REGISTRY_VALUE_NAME, 0,
|
|
&dwReadType, reinterpret_cast<unsigned char*>(strPath), &dwReadLens) == ERROR_SUCCESS)
|
|
{
|
|
strPath[MAX_PATH - 1] = 0;
|
|
m_strRYLFolder.SetString(strPath);
|
|
}
|
|
|
|
RegCloseKey(hMPClientReg);
|
|
}
|
|
else
|
|
{
|
|
MessageBox(RYLLoginGetMessage(LOGIN_MSG_CLIENT_NOT_INSTALLED));
|
|
}
|
|
}
|
|
|
|
void CMSGDialog::InitWebBrowser(void)
|
|
{
|
|
m_WebPage.Create(NULL, NULL, (WS_CHILD | WS_VISIBLE ),
|
|
CRect(32, 111, 567, 418), this, IDR_WEBVIEW, NULL);
|
|
|
|
m_WebPage.Navigate(m_strRYLFolder + "/Notice/default1.html");
|
|
}
|
|
|
|
void CMSGDialog::InitInterface(void)
|
|
{
|
|
#ifdef _NATION_GM_
|
|
m_btmBase.LoadBitmap(IDB_BITMAP_MSG);
|
|
|
|
m_Ok.SetBitmap(IDB_BITMAP_MSGOK0, IDB_BITMAP_MSGOK1, IDB_BITMAP_MSGOK2);
|
|
m_Cancel.SetBitmap(IDB_BITMAP_MSGNO0, IDB_BITMAP_MSGNO1, IDB_BITMAP_MSGNO2);
|
|
#endif
|
|
}
|
|
|
|
void CMSGDialog::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
if (IsIconic())
|
|
{
|
|
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
|
|
|
|
// Center icon in client rectangle
|
|
int cxIcon = GetSystemMetrics(SM_CXICON);
|
|
int cyIcon = GetSystemMetrics(SM_CYICON);
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int x = (rect.Width() - cxIcon + 1) / 2;
|
|
int y = (rect.Height() - cyIcon + 1) / 2;
|
|
|
|
// Draw the icon
|
|
// kidleon@kronet.net
|
|
//dc.DrawIcon(x, y, m_hIcon);
|
|
}
|
|
else
|
|
{
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
|
|
CMemDC pDC( &dc, rect);
|
|
|
|
RenderBack( pDC, m_btmBase, 0, 0 );
|
|
|
|
CDialog::OnPaint();
|
|
}
|
|
|
|
}
|
|
|
|
void CMSGDialog::RenderBack( CDC &rDC, CBitmap &rBitmap, int Px, int Py , int SizeX, int SizeY )
|
|
{
|
|
CDC memDC;
|
|
memDC.CreateCompatibleDC(&rDC);
|
|
|
|
CBitmap *pOldBitmap = memDC.SelectObject(&rBitmap);
|
|
CSize sBitmap = rBitmap.GetBitmapDimension();
|
|
|
|
BITMAP bmInfo;
|
|
rBitmap.GetBitmap(&bmInfo);
|
|
|
|
if( SizeX == -1 && SizeY == -1 )
|
|
{
|
|
rDC.BitBlt(Px,Py,bmInfo.bmWidth,bmInfo.bmHeight,&memDC,0,0,SRCCOPY);
|
|
}
|
|
else
|
|
{
|
|
rDC.BitBlt(Px,Py,SizeX,SizeY,&memDC,0,0,SRCCOPY);
|
|
}
|
|
|
|
memDC.SelectObject(pOldBitmap);
|
|
|
|
}
|
|
|
|
|
|
void CMSGDialog::OnLButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y) );
|
|
CDialog::OnLButtonDown(nFlags, point);
|
|
}
|
|
|
|
void CMSGDialog::OnMouseMove(UINT nFlags, CPoint point)
|
|
{
|
|
// TODO: Add your message handler code here and/or call default
|
|
CDialog::OnMouseMove(nFlags, point);
|
|
}
|